| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>cssom-view - scrolling quirks VS nonquirks mode</title> |
| <script src="../../../../../resources/testharness.js"></script> |
| <script src="../../../../../resources/testharnessreport.js"></script> |
| <style> |
| iframe { |
| width: 300px; |
| height: 500px; |
| } |
| </style> |
| <iframe id="quirksframe"></iframe> |
| <iframe id="nonquirksframe"></iframe> |
| <div id="log"></div> |
| <script> |
| function setBodyContent(body) { |
| // Hide scrollbars and remove body margin to make measures more reliable. |
| body.style.overflow = "hidden"; |
| body.style.margin = 0; |
| |
| // Add an orange border to the body. |
| body.style.borderWidth = "10px 0px 0px 20px"; |
| body.style.borderColor = "orange"; |
| body.style.borderStyle = "solid"; |
| |
| // Create a 700x900 box with a green border. |
| body.innerHTML = "<div id='content' style='border-width: 30px 0px 0px 40px; border-style: solid; border-color: green; width: 660px; height: 870px; background: linear-gradient(135deg, red, blue);'></div>"; |
| } |
| |
| var quirksModeTest = async_test("Execution of tests in quirks mode"); |
| var quirksFrame = document.getElementById("quirksframe"); |
| quirksFrame.onload = function() { |
| var doc = quirksFrame.contentDocument; |
| setBodyContent(doc.body); |
| var content = doc.getElementById("content"); |
| |
| quirksModeTest.step(function () { |
| assert_equals(doc.compatMode, "BackCompat", "Should be in quirks mode."); |
| }); |
| |
| test(function () { |
| assert_equals(doc.scrollingElement, doc.body, "scrollingElement should be HTML body"); |
| }, "scrollingElement in quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scroll(50, 60); |
| assert_equals(doc.documentElement.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.documentElement.scrollTop, 0, "scrollTop should be 0"); |
| }, "scroll() on the root element in quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scrollBy(10, 20); |
| assert_equals(doc.documentElement.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.documentElement.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollBy() on the root element in quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scrollLeft = 70; |
| doc.documentElement.scrollTop = 80; |
| assert_equals(doc.documentElement.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.documentElement.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollLeft/scrollTop on the root element in quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.documentElement.scrollWidth, 720, "scrollWidth should be 720"); |
| assert_equals(doc.documentElement.scrollHeight, 910, "scrollHeight should be 910"); |
| }, "scrollWidth/scrollHeight on the root element in quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.documentElement.clientWidth, 300, "clientWidth should be 300"); |
| assert_equals(doc.documentElement.clientHeight, 910, "clientHeight should be 910"); |
| }, "clientWidth/clientHeight on the root element in quirks mode"); |
| |
| test(function () { |
| doc.body.scroll(90, 100); |
| assert_equals(doc.body.scrollLeft, 90, "scrollLeft should be 90"); |
| assert_equals(doc.body.scrollTop, 100, "scrollTop should be 100"); |
| }, "scroll() on the HTML body element in quirks mode"); |
| |
| test(function () { |
| doc.body.scrollBy(10, 20); |
| assert_equals(doc.body.scrollLeft, 100, "scrollLeft should be 100"); |
| assert_equals(doc.body.scrollTop, 120, "scrollTop should be 120"); |
| }, "scrollBy() on the HTML body element in quirks mode"); |
| |
| test(function () { |
| doc.body.scrollLeft = 120; |
| doc.body.scrollTop = 110; |
| assert_equals(doc.body.scrollLeft, 120, "scrollLeft should be 120"); |
| assert_equals(doc.body.scrollTop, 110, "scrollTop should be 110"); |
| }, "scrollLeft/scrollTop on the HTML body element in quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.body.scrollWidth, 720, "scrollWidth should be 720"); |
| assert_equals(doc.body.scrollHeight, 910, "scrollHeight should be 910"); |
| }, "scrollWidth/scrollHeight on the HTML body element in quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.body.clientWidth, 300, "clientWidth should be 300"); |
| assert_equals(doc.body.clientHeight, 500, "clientHeight should be 500"); |
| }, "clientWidth/clientHeight on the HTML body element in quirks mode"); |
| |
| test(function () { |
| doc.scrollingElement.scroll(0, 0); |
| content.scrollLeft = 130; |
| content.scrollTop = 140; |
| assert_equals(content.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(content.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollLeft/scrollRight of the content in quirks mode"); |
| |
| test(function () { |
| assert_equals(content.scrollWidth, 660, "scrollWidth should be 660"); |
| assert_equals(content.scrollHeight, 870, "scrollHeight should be 870"); |
| }, "scrollWidth/scrollHeight of the content in quirks mode"); |
| |
| test(function () { |
| assert_equals(content.clientWidth, 660, "clientWidth should be 660"); |
| assert_equals(content.clientHeight, 870, "clientHeight should be 870"); |
| }, "clientWidth/clientHeight of the content in quirks mode"); |
| |
| quirksModeTest.done(); |
| } |
| quirksFrame.src = URL.createObjectURL(new Blob([""], { type: "text/html" })); |
| |
| var nonQuirksModeTest = async_test("Execution of tests in non-quirks mode"); |
| var nonQuirksFrame = document.getElementById("nonquirksframe"); |
| nonQuirksFrame.onload = function() { |
| var doc = nonQuirksFrame.contentDocument; |
| setBodyContent(doc.body); |
| var content = doc.getElementById("content"); |
| |
| nonQuirksModeTest.step(function() { |
| assert_equals(doc.compatMode, "CSS1Compat", "Should be in standards mode."); |
| }); |
| |
| test(function () { |
| assert_equals(doc.scrollingElement, doc.documentElement, "scrollingElement should be documentElement"); |
| }, "scrollingElement in non-quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scroll(50, 60); |
| assert_equals(doc.documentElement.scrollLeft, 50, "scrollLeft should be 50"); |
| assert_equals(doc.documentElement.scrollTop, 60, "scrollTop should be 60"); |
| }, "scroll() on the root element in non-quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scrollBy(10, 20); |
| assert_equals(doc.documentElement.scrollLeft, 60, "scrollLeft should be 60"); |
| assert_equals(doc.documentElement.scrollTop, 80, "scrollTop should be 80"); |
| }, "scrollBy() on the root element in non-quirks mode"); |
| |
| test(function () { |
| doc.documentElement.scrollLeft = 70; |
| doc.documentElement.scrollTop = 80; |
| assert_equals(doc.documentElement.scrollLeft, 70, "scrollLeft should be 70"); |
| assert_equals(doc.documentElement.scrollTop, 80, "scrollTop should be 80"); |
| }, "scrollLeft/scrollTop on the root element in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.documentElement.scrollWidth, 720, "scrollWidth should be 720"); |
| assert_equals(doc.documentElement.scrollHeight, 910, "scrollHeight should be 910"); |
| }, "scrollWidth/scrollHeight on the root element in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.documentElement.clientWidth, 300, "clientWidth should be 300"); |
| assert_equals(doc.documentElement.clientHeight, 500, "clientHeight should be 500"); |
| }, "clientWidth/clientHeight on the root element in non-quirks mode"); |
| |
| test(function () { |
| doc.body.scroll(90, 100); |
| assert_equals(doc.body.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.body.scrollTop, 0, "scrollTop should be 0"); |
| }, "scroll() on the HTML body element in non-quirks mode"); |
| |
| test(function () { |
| doc.body.scrollBy(10, 20); |
| assert_equals(doc.body.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.body.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollBy() on the HTML body element in non-quirks mode"); |
| |
| test(function () { |
| doc.body.scrollLeft = 120; |
| doc.body.scrollTop = 110; |
| assert_equals(doc.body.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(doc.body.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollLeft/scrollTop on the HTML body element in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.body.scrollWidth, 700, "scrollWidth should be 700"); |
| assert_equals(doc.body.scrollHeight, 900, "scrollHeight should be 900"); |
| }, "scrollWidth/scrollHeight on the HTML body element in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(doc.body.clientWidth, 280, "clientWidth should be 280"); |
| assert_equals(doc.body.clientHeight, 900, "clientHeight should be 900"); |
| }, "clientWidth/clientHeight on the HTML body element in non-quirks mode"); |
| |
| test(function () { |
| doc.scrollingElement.scroll(0, 0); |
| content.scrollLeft = 130; |
| content.scrollTop = 140; |
| assert_equals(content.scrollLeft, 0, "scrollLeft should be 0"); |
| assert_equals(content.scrollTop, 0, "scrollTop should be 0"); |
| }, "scrollLeft/scrollRight of the content in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(content.scrollWidth, 660, "scrollWidth should be 660"); |
| assert_equals(content.scrollHeight, 870, "scrollHeight should be 870"); |
| }, "scrollWidth/scrollHeight of the content in non-quirks mode"); |
| |
| test(function () { |
| assert_equals(content.clientWidth, 660, "clientWidth should be "); |
| assert_equals(content.clientHeight, 870, "clientHeight should be 870"); |
| }, "clientWidth/clientHeight of the content in non-quirks mode"); |
| |
| nonQuirksModeTest.done(); |
| } |
| nonQuirksFrame.src = URL.createObjectURL(new Blob(["<!doctype html>"], { type: "text/html" })); |
| |
| </script> |