| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| |
| description("Test computed style on the overflow property.") |
| |
| var testContainer = document.createElement("div"); |
| testContainer.contentEditable = true; |
| document.body.appendChild(testContainer); |
| |
| testContainer.innerHTML = '<div id="test">hello</div>'; |
| |
| e = document.getElementById('test'); |
| computedStyle = window.getComputedStyle(e, null); |
| |
| debug('Shorthand tests'); |
| |
| const tests = [ |
| // value, expected |
| [ 'scroll', 'scroll'], |
| [ 'auto', 'auto' ], |
| [ 'visible', 'visible' ], |
| [ 'hidden', 'hidden' ], |
| [ 'overlay', 'auto' ], |
| |
| [ 'hidden visible', 'auto' ], // WebKit doesn't support different values of overflow on different axes. |
| [ 'hidden hidden', 'auto' ], // WebKit doesn't support different values of overflow on different axes, and thus only accepts a single value for overflow. |
| ]; |
| |
| for (let test of tests) { |
| e.style.overflow = 'auto'; |
| e.style.overflow = test[0]; |
| debug(''); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-x')", test[1]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-y')", test[1]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow')", test[1]); |
| } |
| |
| debug(''); |
| debug('Paged tests'); |
| |
| const pagedTests = [ |
| // shorthand, expected-x, expected-y, expected-shorthand |
| [ '-webkit-paged-x', 'auto', '-webkit-paged-x', '-webkit-paged-x' ], |
| [ '-webkit-paged-y', 'auto', '-webkit-paged-y', '-webkit-paged-y' ], |
| ]; |
| |
| for (let test of pagedTests) { |
| e.style.overflow = 'auto'; |
| e.style.overflow = test[0]; |
| debug(''); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-x')", test[1]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-y')", test[2]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow')", test[3]); |
| } |
| |
| debug(''); |
| debug('Longhand tests'); |
| |
| const longhandTests = [ |
| // x-value, y-value, computed-x-expected, computed-y-expected, computed-shorthand-expected, inline-x-expected, inline-y-expected, inline-shorthand-expected |
| [ 'scroll', 'scroll', |
| 'scroll', 'scroll', 'scroll', |
| 'scroll', 'scroll', 'scroll'], |
| |
| [ 'scroll', 'auto', |
| 'scroll', 'auto', 'auto', |
| 'scroll', 'auto', ''], |
| |
| [ 'auto', 'scroll', |
| 'auto', 'scroll', 'auto', |
| 'auto', 'scroll', ''], |
| |
| [ 'visible', 'hidden', |
| 'auto', 'hidden', 'auto', |
| 'visible', 'hidden', ''], |
| |
| [ 'overlay', 'hidden', |
| 'auto','hidden', 'auto', |
| 'overlay', 'hidden', ''], |
| |
| [ 'visible', '-webkit-paged-y', |
| 'auto', '-webkit-paged-y', '-webkit-paged-y', |
| 'visible', '-webkit-paged-y', ''], |
| |
| [ 'auto', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', ''], |
| |
| [ '-webkit-paged-x', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', ''], |
| |
| [ '-webkit-paged-y', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', '-webkit-paged-x', |
| 'auto', '-webkit-paged-x', ''], |
| ]; |
| |
| for (let test of longhandTests) { |
| e.style.overflow = 'auto'; |
| e.style.overflowX = test[0]; |
| e.style.overflowY = test[1]; |
| debug(''); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-x')", test[2]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow-y')", test[3]); |
| shouldBeEqualToString("computedStyle.getPropertyValue('overflow')", test[4]); |
| |
| shouldBeEqualToString("e.style.overflowX", test[5]); |
| shouldBeEqualToString("e.style.overflowY", test[6]); |
| shouldBeEqualToString("e.style.overflow", test[7]); |
| } |
| |
| document.body.removeChild(testContainer); |
| |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |