forked from mirrors/gecko-dev
		
	 fd8ee0dee1
			
		
	
	
		fd8ee0dee1
		
	
	
	
	
		
			
			Automatic update from web-platform-tests [css-overflow] Update/add padding overflow tests. As per: https://github.com/w3c/csswg-drafts/issues/129 https://crbug.com/1245722 We've sucessfully shipped the logic to include padding in the scrollable overflow of elements. This patch updates the tests, and adds some new ones. Fixed: 1245722 Change-Id: I5f0fa14429da2d8f99efd95b071c6fc2e2c59855 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3561758 Reviewed-by: David Grogan <dgrogan@chromium.org> Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org> Cr-Commit-Position: refs/heads/main@{#996995} -- wpt-commits: c207c7528927fb4c7b2644588614dbac4ecb12f2 wpt-pr: 33833
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| <link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org">
 | |
| <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/129">
 | |
| <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1003373">
 | |
| <script src="/resources/testharness.js"></script>
 | |
| <script src="/resources/testharnessreport.js"></script>
 | |
| <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 | |
| <style>
 | |
| .container {
 | |
|   --size: 100px;
 | |
|   --padding-size: 30px;
 | |
|   --too-big-size: calc(var(--size) - var(--padding-size) + 1px);
 | |
|   --just-right-size: calc(var(--size) - var(--padding-size));
 | |
|   overflow:auto;
 | |
|   width: var(--size);
 | |
|   height: var(--size);
 | |
|   padding-right: var(--padding-size);
 | |
|   padding-bottom: var(--padding-size);
 | |
|   background: #DDD;
 | |
|   box-sizing: border-box;
 | |
|   display: inline-block;
 | |
| }
 | |
| .big {
 | |
|   width: var(--too-big-size);
 | |
|   height: var(--too-big-size);
 | |
|   background: green;
 | |
| }
 | |
| .small {
 | |
|   width: var(--just-right-size);
 | |
|   height: var(--just-right-size);
 | |
|   background: yellow;
 | |
| }
 | |
| .bigfont {
 | |
|   font-size: var(--too-big-size);
 | |
|   font-family: Ahem;
 | |
|   line-height: 1;
 | |
|   color:green;
 | |
| }
 | |
| .smallfont {
 | |
|   font-size: var(--just-right-size);
 | |
|   font-family: Ahem;
 | |
|   line-height: 1;
 | |
|   color:yellow;
 | |
| }
 | |
| .red {
 | |
|   background:red;
 | |
| }
 | |
| 
 | |
| </style>
 | |
| <body onload="runTest()">
 | |
| <p><span style="background:green">green</span> blocks get scrollbars, <span style="background:yellow">yellow</span> do not.</p>
 | |
| <p>Block child gets block and inline padding.</p>
 | |
| <div class="container" data-scrollbar="hv">
 | |
|   <div class="big"></div>
 | |
| </div>
 | |
| <div class="container" data-scrollbar="">
 | |
|   <div class="small"></div>
 | |
| </div>
 | |
| 
 | |
| <p>Inline child gets block and inline padding.</p>
 | |
| <div class="container bigfont" data-scrollbar="hv">
 | |
|   <span>X</span>
 | |
| </div>
 | |
| <div class="container" style="font:36px/1 Ahem;color:green" data-scrollbar="hv">
 | |
|   <span>XX</span><br>XX
 | |
| </div>
 | |
| <div class="container smallfont" data-scrollbar="">
 | |
|   <span>X</span>
 | |
| </div>
 | |
| 
 | |
| <p>Inline block child gets block and inline padding.</p>
 | |
| <div class="container" data-scrollbar="hv">
 | |
|   <div class="big" style="display:inline-block;vertical-align:bottom;"></div>
 | |
| </div>
 | |
| <div class="container" data-scrollbar="">
 | |
|   <div class="small" style="display:inline-block;vertical-align:bottom;"></div>
 | |
| </div>
 | |
| 
 | |
| <p>Padding applies to linebox, not linebox overflow.</p>
 | |
| <div class="container" data-scrollbar="">
 | |
|   <div class="small" style="display:inline-block;vertical-align:bottom">
 | |
|     <div style="height:90px;width:80px;background: rgba(0,0,255,0.3)"></div>
 | |
|   </div>
 | |
| </div>
 | |
| <script>
 | |
|   function hasHorizontalScrollbar(el) {
 | |
|     return (el.scrollWidth - el.offsetWidth) > 0;
 | |
|   }
 | |
|   function hasVerticalScrollbar(el) {
 | |
|     return (el.scrollHeight - el.offsetHeight) > 0;
 | |
|   }
 | |
|   // Tests needs to be run after load.
 | |
|   function runTest() {
 | |
|     test(()=> {
 | |
|       let i=0;
 | |
|       for (el of Array.from(document.querySelectorAll(".container"))) {
 | |
|         i++;
 | |
|         el.classList.toggle("red");
 | |
|         let expected = el.getAttribute("data-scrollbar");
 | |
|         if (expected.match(/h/))
 | |
|           assert_true(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
 | |
|         else
 | |
|           assert_false(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
 | |
|         if (expected.match(/v/))
 | |
|           assert_true(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
 | |
|         else
 | |
|           assert_false(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
 | |
|         el.classList.toggle("red");
 | |
|       }
 | |
|     }, "Container padding is applied approriately to block/inline children.");
 | |
|   }
 | |
| </script>
 | |
| </body>
 |