Diff
Modified: trunk/LayoutTests/ChangeLog (227053 => 227054)
--- trunk/LayoutTests/ChangeLog 2018-01-17 09:24:26 UTC (rev 227053)
+++ trunk/LayoutTests/ChangeLog 2018-01-17 09:34:46 UTC (rev 227054)
@@ -1,3 +1,23 @@
+2018-01-17 Ali Juma <aj...@chromium.org>
+
+ Update web platform tests for Visual Viewport API
+ https://bugs.webkit.org/show_bug.cgi?id=181689
+
+ Reviewed by Alex Christensen.
+
+ Rename the test directory from 'viewport' to 'visual-viewport', and update
+ viewport-resize-event-on-load-overflowing-page.html.
+
+ This corresponds to the following upstream commits:
+ 1) https://github.com/w3c/web-platform-tests/commit/f878fee4df619e55c7fbfce1a2ff5e5d4d83a03b
+ 2) https://github.com/w3c/web-platform-tests/commit/03a684d63e62d85cffed38bc942f468692d7d54f
+
+ * TestExpectations: Updated test path.
+ * platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe-expected.txt.
+ * platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-expected.txt.
+ Updated expectation since tests in a directory named 'viewport' but not 'visual-viewport' get a flexible viewport on iOS.
+ * platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe-expected.txt.
+
2018-01-17 Zan Dobersek <zdober...@igalia.com>
CanvasImageData: createImageData() parameter should not be nullable
Modified: trunk/LayoutTests/TestExpectations (227053 => 227054)
--- trunk/LayoutTests/TestExpectations 2018-01-17 09:24:26 UTC (rev 227053)
+++ trunk/LayoutTests/TestExpectations 2018-01-17 09:34:46 UTC (rev 227054)
@@ -276,7 +276,7 @@
imported/w3c/web-platform-tests/html/dom/interfaces.worker.html [ Pass Failure ]
imported/w3c/web-platform-tests/mediacapture-fromelement/creation.html [ Pass Failure ]
webkit.org/b/180240 imported/w3c/web-platform-tests/resource-timing/single-entry-per-resource.html [ Pass Failure ]
-webkit.org/b/181435 imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html [ Pass Failure ]
+webkit.org/b/181435 imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html [ Pass Failure ]
# The follow two tests change their output each run
imported/w3c/web-platform-tests/fetch/api/abort/general.any.html [ Skip ]
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (227053 => 227054)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2018-01-17 09:24:26 UTC (rev 227053)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2018-01-17 09:34:46 UTC (rev 227054)
@@ -1,3 +1,46 @@
+2018-01-17 Ali Juma <aj...@chromium.org>
+
+ Update web platform tests for Visual Viewport API
+ https://bugs.webkit.org/show_bug.cgi?id=181689
+
+ Reviewed by Alex Christensen.
+
+ Rename the test directory from 'viewport' to 'visual-viewport', and update
+ viewport-resize-event-on-load-overflowing-page.html.
+
+ This corresponds to the following upstream commits:
+ 1) https://github.com/w3c/web-platform-tests/commit/f878fee4df619e55c7fbfce1a2ff5e5d4d83a03b
+ 2) https://github.com/w3c/web-platform-tests/commit/03a684d63e62d85cffed38bc942f468692d7d54f
+
+ * resources/import-expectations.json:
+ * web-platform-tests/viewport/w3c-import.log: Removed.
+ * web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc.html.
+ * web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-causes-layout-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-causes-layout.html.
+ * web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout.html.
+ * web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html.
+ * web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-scrollbars-cause-resize-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-scrollbars-cause-resize.html.
+ * web-platform-tests/visual-viewport/viewport-type-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-type-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-type.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-type.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scale-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-iframe-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-iframe.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scale.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scroll-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-scroll.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe-expected.txt.
+ * web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe.html.
+ * web-platform-tests/visual-viewport/viewport-unscaled-size.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size.html.
+ * web-platform-tests/visual-viewport/viewport_support.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/viewport/viewport_support.js.
+ * web-platform-tests/visual-viewport/w3c-import.log: Added.
+
2018-01-12 Jiewen Tan <jiewen_...@apple.com>
[WebAuthN] Implement dummy WebAuthN IDLs
Modified: trunk/LayoutTests/imported/w3c/resources/import-expectations.json (227053 => 227054)
--- trunk/LayoutTests/imported/w3c/resources/import-expectations.json 2018-01-17 09:24:26 UTC (rev 227053)
+++ trunk/LayoutTests/imported/w3c/resources/import-expectations.json 2018-01-17 09:34:46 UTC (rev 227054)
@@ -316,6 +316,7 @@
"web-platform-tests/url": "import",
"web-platform-tests/user-timing": "import",
"web-platform-tests/vibration": "skip",
+ "web-platform-tests/visual-viewport": "import",
"web-platform-tests/wai-aria": "skip",
"web-platform-tests/wasm": "skip",
"web-platform-tests/web-animations": "skip",
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,7 @@
+No Resize Event Fired on Overflow Recalc
+
+Test Description: This test ensures we don't fire spurrious resize events when overflow is recalculated.
+
+
+PASS Resize event not fired at window.visualViewport when content is added
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,49 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: No Resize Event Fired on Overflow Recalc</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1">
+ <script src=""
+ <script src=""
+ <script src=""
+ <style>
+ html {
+ height: 100%;
+ }
+ body {
+ /* Ensure overflow to start */
+ height: 200%;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>No Resize Event Fired on Overflow Recalc</h1>
+ <h4>
+ Test Description: This test ensures we don't fire spurrious resize
+ events when overflow is recalculated.
+ </h4>
+ <script>
+ function runTest() {
+ var t = async_test(
+ "Resize event not fired at window.visualViewport when content is added");
+ var viewResized = false;
+ window.visualViewport.addEventListener('resize', function() {
+ viewResized = true;
+ });
+
+ requestAnimationFrame(t.step_func_done(function() {
+ assert_equals(viewResized, false);
+ }));
+
+ document.body.style.height = "400%";
+ }
+
+ // Run the test after load to make sure any resize from load doesn't
+ // interfere.
+ window._onload_ = requestAnimationFrame(runTest);
+ </script>
+ <div id="log"></div>
+ </body>
+</html>
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-causes-layout-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,5 @@
+This test checks that requesting the viewport size causes any pending layout to occur.
+
+
+PASS Untitled
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-causes-layout.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<meta name="viewport" content="width=device-width, minimum-scale=1">
+<script src=""
+<script src=""
+
+<style>
+ html {
+ height: 100%;
+ }
+</style>
+
+<h4>This test checks that requesting the viewport size causes any pending layout to occur.</h4>
+<script>
+ async_test(function(t) {
+ window._onload_ = t.step_func(function() {
+ assert_equals(window.visualViewport.width, document.documentElement.clientWidth,
+ "window.visualViewport.width should match the window width.");
+ assert_equals(visualViewport.height, document.documentElement.clientHeight,
+ "window.visualViewport.height should match the window height.");
+
+ // Add overflow so scrollbars appear.
+ document.body.style.width = "2000px";
+ document.body.style.height = "2000px";
+
+ var viewportWidth = window.visualViewport.width;
+ var viewportHeight = window.visualViewport.height;
+
+ assert_equals(viewportWidth, document.documentElement.clientWidth,
+ "Reading viewport width should cause a layout and exclude the new scrollbar.");
+ assert_equals(viewportHeight, document.documentElement.clientHeight,
+ "Reading viewport height should cause a layout and exclude the new scrollbar.");
+ t.done();
+ });
+ });
+</script>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,6 @@
+This test checks that requesting the viewport size in an iframe causes any pending layout to occur.
+
+
+
+PASS Untitled
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta name="viewport" content="width=device-width, minimum-scale=1">
+<script src=""
+<script src=""
+<style>
+ iframe {
+ width: 200px;
+ height: 300px;
+ }
+</style>
+
+<h4>This test checks that requesting the viewport size in an iframe causes any pending layout to occur.</h4>
+<iframe srcdoc="<!DOCTYPE html><style>html{height:100%}</style>"></iframe>
+<script>
+ async_test(function(t) {
+ window._onload_ = t.step_func(function() {
+ assert_equals(frames[0].window.visualViewport.width, 200,
+ "Reading width of iframe viewport should match iframe width.");
+ assert_equals(frames[0].window.visualViewport.height, 300,
+ "Reading height of iframe viewport should match iframe height.");
+
+ // Add overflow so scrollbars appear.
+ window.frames[0].window.document.body.style.width = "2000px";
+ window.frames[0].window.document.body.style.height = "2000px";
+
+ var viewportWidth = frames[0].window.visualViewport.width;
+ var viewportHeight = frames[0].window.visualViewport.height;
+
+ assert_equals(viewportWidth, frames[0].window.document.documentElement.clientWidth,
+ "Reading width of iframe viewport should cause a layout and exclude the new scrollbar.");
+ assert_equals(viewportHeight, frames[0].window.document.documentElement.clientHeight,
+ "Reading height of iframe viewport should cause a layout and exclude the new scrollbar.");
+ t.done();
+ });
+ });
+</script>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,7 @@
+Viewport: Resize Event On Load Overflowing Page
+
+Test Description: This test ensures that we fire a resize event against window.visualViewport if the page has overflow (since this creates a scrollbar and thus changes the viewport size).
+
+
+PASS Resize event fired exactly once against window.visualViewport if scrollbars affect layout.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,62 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Resize Event On Load Overflowing Page</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1">
+ <script src=""
+ <script src=""
+ <script src=""
+ <script>
+ // This first case ensures that we load into the same kind of
+ // viewport. If the previous test had a page-scale factor set or a
+ // different viewport <meta> we might get a resize because of that.
+ if (location.search === "") {
+ window.addEventListener('load', function() {
+ var url = "" + "?reloaded";
+ window.location.href = ""
+ });
+ } else {
+ var t = async_test(
+ "Resize event fired exactly once against window.visualViewport if " +
+ "scrollbars affect layout.");
+ var numViewResizes = 0;
+ window.visualViewport.addEventListener('resize', function() {
+ numViewResizes++;
+ });
+
+ window.addEventListener('load', function() {
+ requestAnimationFrame(function() {
+ requestAnimationFrame(
+ t.step_func_done(function() {
+ var isOverlay = calculateScrollbarThickness() == 0;
+ assert_equals(numViewResizes, isOverlay ? 0 : 1);
+ }));
+ });
+ });
+ }
+ </script>
+ <style>
+ html {
+ height: 100%;
+ }
+ body {
+ /* Ensure overflow */
+ height: 200%;
+ }
+ #log {
+ overflow: auto;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Viewport: Resize Event On Load Overflowing Page</h1>
+ <h4>
+ Test Description: This test ensures that we fire a resize event against
+ window.visualViewport if the page has overflow (since this creates a scrollbar
+ and thus changes the viewport size).
+ </h4>
+ <div id="log"></div>
+ </body>
+</html>
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-scrollbars-cause-resize-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,7 @@
+Viewport: Scrollbars Cause Resize
+
+Test Description: This test checks that the appearance of classic scrollbars will cause a resize event to be fired at window.visualViewport.
+
+
+PASS view size initially matches window size
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-scrollbars-cause-resize.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,66 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Scrollbars Cause Resize</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1">
+ <script src=""
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <h1>Viewport: Scrollbars Cause Resize</h1>
+ <h4>
+ Test Description: This test checks that the appearance of classic
+ scrollbars will cause a resize event to be fired at window.visualViewport.
+ </h4>
+ <script>
+ function runTest() {
+ var scrollbarThickness = calculateScrollbarThickness();
+
+ document.documentElement.style.overflow = "hidden";
+ var initialWidth = visualViewport.width;
+ var initialHeight = visualViewport.height;
+
+ test(function() {
+ assert_equals(window.visualViewport.width, window.innerWidth);
+ assert_equals(window.visualViewport.height, window.innerHeight);
+ }, "view size initially matches window size");
+
+
+ var t = async_test(
+ "Resize event was fired at window.visualViewport if, and only if, " +
+ "scrollbars are classic (i.e. affect flow)");
+ var viewResized = false;
+ window.visualViewport.addEventListener('resize', function() {
+ viewResized = true;
+ });
+
+ requestAnimationFrame(t.step_func_done(function() {
+ assert_equals(viewResized, scrollbarThickness > 0);
+ }));
+
+ document.documentElement.style.overflow = "";
+ document.body.style.width = "10000px";
+ document.body.style.height = "10000px";
+
+ var expectedWidth = initialWidth - scrollbarThickness;
+ var expectedHeight = initialHeight - scrollbarThickness;
+
+ test(function() {
+ assert_equals(window.visualViewport.width, expectedWidth);
+ assert_equals(window.visualViewport.height, expectedHeight);
+ }, "view size reflects appearance of classic scrollbars");
+
+
+ document.body.style.width = "";
+ document.body.style.height = "";
+ }
+
+ // Run the test after load to make sure any resize from a previous test
+ // doesn't interfere.
+ window._onload_ = runTest;
+ </script>
+ <div id="log"></div>
+ </body>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-type-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,10 @@
+Viewport: window.visualViewport type
+
+Test Description: This test checks that window.visualViewport is an object of type VisualViewport.
+
+window.visualViewport is of type: object.
+
+
+PASS window.visualViewport is an object
+PASS window.visualViewport has type `VisualViewport`
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-type.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,31 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: window.visualViewport type</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width">
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <h1>Viewport: window.visualViewport type</h1>
+ <h4>Test Description: This test checks that window.visualViewport is an object of type VisualViewport.</h4>
+ <script>
+ test(function() {
+ assert_equals(typeof(window.visualViewport), "object");
+ }, "window.visualViewport is an object");
+
+ test(function() {
+ assert_equals(window.visualViewport.toString(), "[object VisualViewport]");
+ }, "window.visualViewport has type `VisualViewport`");
+
+ addEventListener("load", function() {
+ document.getElementById("viewtype-log").innerText = typeof(window.visualViewport);
+ });
+ </script>
+ <div id="complete-notice">
+ <p>window.visualViewport is of type: <span id="viewtype-log"></span>.</p>
+ </div>
+ <div id="log"></div>
+ </body>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,9 @@
+Viewport: Unscaled scale
+
+Test Description: This test checks that the default value for scale is 1.
+
+window.visualViewport.scale is 1.
+
+
+PASS visualViewport.scale default value.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-iframe-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,10 @@
+Viewport: Unscaled scale iframe
+
+Test Description: This test checks that the default value for scale inside an iframe is 1.
+
+
+iframe's window.visualViewport.scale is 1.
+
+
+PASS iframe's visualViewport.scale default value.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale-iframe.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,33 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Unscaled scale iframe</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width">
+ <script src=""
+ <script src=""
+ <script src=""
+ <style>
+ iframe {
+ width: 200px;
+ height: 300px;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Viewport: Unscaled scale iframe</h1>
+ <h4>Test Description: This test checks that the default value for scale inside an iframe is 1.</h4>
+ <iframe></iframe>
+ <div id="complete-notice">
+ <p>iframe's window.visualViewport.scale is <span id="view-scale-log"></span>.</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ test(function() {
+ assert_equals(frames[0].window.visualViewport.scale, 1);
+ }, "iframe's visualViewport.scale default value.");
+
+ document.getElementById("view-scale-log").innerText = frames[0].window.visualViewport.scale;
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scale.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Unscaled scale</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width">
+ <script src=""
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <h1>Viewport: Unscaled scale</h1>
+ <h4>Test Description: This test checks that the default value for scale is 1.</h4>
+ <div id="complete-notice">
+ <p>window.visualViewport.scale is <span id="view-scale-log"></span>.</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ test(function() {
+ assert_equals(window.visualViewport.scale, 1);
+ }, "visualViewport.scale default value.");
+
+ document.getElementById("view-scale-log").innerText = window.visualViewport.scale;
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,14 @@
+Viewport: Scroll - no page scale
+
+Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.
+
+window.visualViewport's offsetLeft and offsetTop is (0, 0).
+
+window.visualViewport's pageLeft and pageTop is (1000, 1200).
+
+
+PASS offsetLeft must be 0.
+PASS offsetTop must be 0.
+PASS pageLeft must reflect location of viewport in document.
+PASS pageTop must reflect location of viewport in document.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,15 @@
+Viewport: Scroll in iframe - no page scale
+
+Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.
+
+
+frames[0].window.visualViewport's offsetLeft and offsetTop is (0, 0).
+
+frames[0].window.visualViewport's pageLeft and pageTop is (1000, 1200).
+
+
+PASS offsetLeft must be 0.
+PASS offsetTop must be 0.
+PASS pageLeft must reflect location of viewport in document.
+PASS pageTop must reflect location of viewport in document.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,54 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Scroll in iframe - no page scale</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width">
+ <script src=""
+ <script src=""
+ <script src=""
+ <style>
+ iframe {
+ width: 200px;
+ height: 300px;
+ border: 0;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Viewport: Scroll in iframe - no page scale</h1>
+ <h4>Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.</h4>
+ <iframe></iframe>
+ <div id="complete-notice">
+ <p>frames[0].window.visualViewport's offsetLeft and offsetTop is (<span id="scroll-offset-log"></span>).</p>
+ <p>frames[0].window.visualViewport's pageLeft and pageTop is (<span id="scroll-page-log"></span>).</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ var iframe = frames[0].window;
+
+ // Add overflow we can scroll.
+ iframe.document.body.style.width = "2000px";
+ iframe.document.body.style.height = "2000px";
+
+ iframe.scrollTo(1000, 1200);
+
+
+ test(function() {
+ assert_equals(iframe.visualViewport.offsetLeft, 0);
+ }, "offsetLeft must be 0.");
+ test(function() {
+ assert_equals(iframe.visualViewport.offsetTop, 0);
+ }, "offsetTop must be 0.");
+ test(function() {
+ assert_equals(iframe.visualViewport.pageLeft, 1000);
+ }, "pageLeft must reflect location of viewport in document.");
+ test(function() {
+ assert_equals(iframe.visualViewport.pageTop, 1200);
+ }, "pageTop must reflect location of viewport in document.");
+
+ document.getElementById("scroll-offset-log").innerText = iframe.visualViewport.offsetLeft+ ", " + iframe.visualViewport.offsetTop;
+ document.getElementById("scroll-page-log").innerText = iframe.visualViewport.pageLeft + ", " + iframe.visualViewport.pageTop;
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,45 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Scroll - no page scale</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1">
+ <script src=""
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <h1>Viewport: Scroll - no page scale</h1>
+ <h4>Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.</h4>
+ <div id="complete-notice">
+ <p>window.visualViewport's offsetLeft and offsetTop is (<span id="scroll-offset-log"></span>).</p>
+ <p>window.visualViewport's pageLeft and pageTop is (<span id="scroll-page-log"></span>).</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ // Add overflow we can scroll.
+ document.body.style.width = "5000px";
+ document.body.style.height = "5000px";
+
+ scrollTo(1000, 1200);
+
+ test(function() {
+ assert_equals(window.visualViewport.offsetLeft, 0);
+ }, "offsetLeft must be 0.");
+ test(function() {
+ assert_equals(window.visualViewport.offsetTop, 0);
+ }, "offsetTop must be 0.");
+ test(function() {
+ assert_equals(window.visualViewport.pageLeft, 1000);
+ }, "pageLeft must reflect location of viewport in document.");
+ test(function() {
+ assert_equals(window.visualViewport.pageTop, 1200);
+ }, "pageTop must reflect location of viewport in document.");
+
+ document.getElementById("scroll-offset-log").innerText = window.visualViewport.offsetLeft+ ", " + window.visualViewport.offsetTop;
+ document.getElementById("scroll-page-log").innerText = window.visualViewport.pageLeft + ", " + window.visualViewport.pageTop;
+
+ scrollTo(0, 0);
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,14 @@
+Viewport: Size unscaled
+
+Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied.
+
+window.visualViewport width and height is (800, 600).
+
+window.visualViewport width and height when scrollbars are present is (785, 585).
+
+
+PASS visualViewport.width should match documentElement.clientWidth when unzoomed.
+PASS visualViewport.height should match documentElement.clientHeight when unzoomed.
+PASS visualViewport.width should exclude scrollbar.
+PASS visualViewport.height should exclude scrollbar.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe-expected.txt) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,15 @@
+Viewport: Size in iframe - no page scale
+
+Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied but with scrollbars.
+
+
+frames[0].window.visualViewport width and height is (200, 300).
+
+frames[0].window.visualViewport width and height when scrollbars are present is (185, 285).
+
+
+PASS window.visualViewport.width of iframe viewport should match iframe width.
+PASS window.visualViewport.height of iframe viewport should match iframe height.
+PASS window.visualViewport.width of iframe viewport should not include scrollbar.
+PASS window.visualViewport.height of iframe viewport should not include scrollbar.
+
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,53 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Size in iframe - no page scale</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width">
+ <script src=""
+ <script src=""
+ <script src=""
+ <style>
+ iframe {
+ width: 200px;
+ height: 300px;
+ border: 0;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Viewport: Size in iframe - no page scale</h1>
+ <h4>Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied but with scrollbars.</h4>
+ <iframe></iframe>
+ <div id="complete-notice">
+ <p>frames[0].window.visualViewport width and height is (<span id="size-log"></span>).</p>
+ <p>frames[0].window.visualViewport width and height when scrollbars are present is (<span id="size-scrollbars-log"></span>).</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ var scrollbarThickness = calculateScrollbarThickness();
+
+ test(function() {
+ assert_equals(frames[0].window.visualViewport.width, 200);
+ }, "window.visualViewport.width of iframe viewport should match iframe width.");
+ test(function() {
+ assert_equals(frames[0].window.visualViewport.height, 300);
+ }, "window.visualViewport.height of iframe viewport should match iframe height.");
+
+ document.getElementById("size-log").innerText = frames[0].window.visualViewport.width + ", " + frames[0].window.visualViewport.height;
+
+ // Add overflow so scrollbars appear.
+ window.frames[0].window.document.body.style.width = "2000px";
+ window.frames[0].window.document.body.style.height = "2000px";
+
+ test(function() {
+ assert_equals(frames[0].window.visualViewport.width, 200 - scrollbarThickness);
+ }, "window.visualViewport.width of iframe viewport should not include scrollbar.");
+ test(function() {
+ assert_equals(frames[0].window.visualViewport.height, 300 - scrollbarThickness);
+ }, "window.visualViewport.height of iframe viewport should not include scrollbar.");
+
+ document.getElementById("size-scrollbars-log").innerText = frames[0].window.visualViewport.width + ", " + frames[0].window.visualViewport.height;
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size.html (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size.html) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size.html 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,51 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Viewport: Size unscaled</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1">
+ <script src=""
+ <script src=""
+ <script src=""
+ <style>
+ html {
+ width: 100%;
+ height: 100%;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Viewport: Size unscaled</h1>
+ <h4>Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied.</h4>
+ <div id="complete-notice">
+ <p>window.visualViewport width and height is (<span id="view-size-log"></span>).</p>
+ <p>window.visualViewport width and height when scrollbars are present is (<span id="view-size-scrollbar-log"></span>).</p>
+ </div>
+ <div id="log"></div>
+ </body>
+ <script>
+ var scrollbarThickness = calculateScrollbarThickness();
+
+ test(function() {
+ assert_equals(window.visualViewport.width, document.documentElement.clientWidth);
+ }, "visualViewport.width should match documentElement.clientWidth when unzoomed.");
+ test(function() {
+ assert_equals(window.visualViewport.height, document.documentElement.clientHeight);
+ }, "visualViewport.height should match documentElement.clientHeight when unzoomed.");
+
+ document.getElementById("view-size-log").innerText = window.visualViewport.width + ", " + window.visualViewport.height;
+
+ // Add overflow so scrollbars appear.
+ document.body.style.width = "2000px";
+ document.body.style.height = "2000px";
+
+ test(function() {
+ assert_equals(window.visualViewport.width, document.documentElement.clientWidth);
+ }, "visualViewport.width should exclude scrollbar.");
+ test(function() {
+ assert_equals(window.visualViewport.height, document.documentElement.clientHeight);
+ }, "visualViewport.height should exclude scrollbar.");
+
+ document.getElementById("view-size-scrollbar-log").innerText = window.visualViewport.width + ", " + window.visualViewport.height;
+ </script>
+</html>
Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport_support.js (from rev 227053, trunk/LayoutTests/imported/w3c/web-platform-tests/viewport/viewport_support.js) (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport_support.js (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport_support.js 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,153 @@
+// If scrollbars affect layout (i.e. what the CSS Overflow spec calls "classic
+// scrollbars", as opposed to overlay scrollbars), return the scrollbar
+// thickness in CSS pixels. Returns 0 otherwise.
+function calculateScrollbarThickness() {
+ var container = document.createElement("div");
+ container.style.width = "100px";
+ container.style.height = "100px";
+ container.style.position = "absolute";
+ container.style.visibility = "hidden";
+ container.style.overflow = "auto";
+
+ document.body.appendChild(container);
+
+ var widthBefore = container.clientWidth;
+ var longContent = document.createElement("div");
+ longContent.style.height = "1000px";
+ container.appendChild(longContent);
+
+ var widthAfter = container.clientWidth;
+
+ container.remove();
+
+ return widthBefore - widthAfter;
+}
+
+// Puts up a widget on screen instructing the user to pinch-zoom in to the
+// given scale. The widget is sized such that the given scale is achieved. The
+// widget is placed at (x, y) on the page. A button on the widget is used by
+// the user to let the widget know that the user has finished. If a callback is
+// provided, it will be called when the user dismisses the widget.
+function showPinchWidget(scale, x, y, callback) {
+ var border = 10;
+ var width = window.innerWidth / scale - border;
+ var height = window.innerHeight / scale - border;
+
+ var box = document.createElement("div");
+ box.style.width = width + "px";
+ box.style.height = height + "px";
+
+ // Adjust the x/y coordinates by the border width. We want the box to
+ // appear in a place such that if the user gets the window edges exactly on
+ // the half-point of the border they end up at x/y
+ box.style.left = x - border/2 + "px";
+ box.style.top = y - border/2 + "px";
+
+ box.style.position = "absolute";
+ box.style.backgroundColor = "coral";
+ box.style.border = border + "px solid blue";
+ box.style.borderBottom = "0";
+ box.style.overflow = "auto";
+
+ var oldDocumentOverflow = document.documentElement.style.overflow;
+
+ var instructions = document.createElement("p");
+ instructions.innerText =
+ "Pinch-zoom and align this box so that the left, right, and top " +
+ "window edges are over the border on each side. When done, click the " +
+ "'DONE' button above";
+ instructions.style.textAlign = "center";
+ instructions.style.fontSize = "medium";
+
+ var button = document.createElement("button");
+ button.innerText = "DONE";
+ button.style.width = "50%";
+ button.style.height = "20%";
+ button.style.fontSize = "medium";
+ button.style.marginLeft = "25%";
+ button.addEventListener("click", function() {
+ box.remove();
+ document.documentElement.style.overflow = oldDocumentOverflow;
+ if (callback)
+ callback();
+ });
+
+ box.appendChild(button);
+ box.appendChild(instructions);
+
+ document.documentElement.style.overflow = "hidden";
+
+ document.body.appendChild(box);
+}
+
+// Ends a manual test. Must be called before any async tests are started.
+function skipManualTest() {
+ test(function() { assert_true(false); }, "Manual Test Skipped");
+ done();
+}
+
+var stepInstructions = [];
+var testNames = [];
+var stepFunctions = [];
+var steps;
+var curStep = 0;
+
+// Adds a manual test step to the test. A test will add a series of steps,
+// along with instructions. Once all the tests steps are added, the test can
+// be run by continually running the nextStep() function. All manual test steps
+// must be added before calling nextStep.
+//
+// |func| A function to be executed at the given step. This function can include
+// testharness assertions if |testName| is provided. If this is the last
+// step, the |done()| function (used for manual testharness.js tests)
+// will be called after |func| is executed.
+// |testName| If provided, the |func| will be wrapped in a testharness.js
+// async_test with this name. If null, |func| will be executed as a
+// free function.
+// |instructions| The text to display to the user. Note, these are shown after
+// step is executed so these should be instructions to setup the
+// checks in the next step.
+function addManualTestStep(func, testName, instructions) {
+ stepFunctions.push(func);
+ testNames.push(testName);
+ stepInstructions.push(instructions);
+}
+
+// Runs the next step of the test. This must be called only after all test steps
+// have been added using |addManualTestStep|.
+//
+// |callbackFunc| If provided, will be called with a single argument being the
+// instruction string for the current step. Use this to update
+// any necessary UI.
+function nextStep(callbackFunc) {
+ if (curStep == 0)
+ _startManualTest();
+
+ if (typeof(callbackFunc) === 'function')
+ callbackFunc(stepInstructions[curStep]);
+
+ steps[curStep]();
+ curStep++;
+}
+
+function _startManualTest() {
+ steps = [];
+ for (let i = 0; i < stepFunctions.length; ++i) {
+ var stepFunc = stepFunctions[i];
+ var testName = testNames[i];
+ if (testName) {
+ steps.push(async_test(testName).step_func(function() {
+ stepFunctions[i]();
+ this.done();
+ if (i == stepFunctions.length - 1)
+ done();
+ }));
+ } else {
+ steps.push(function() {
+ stepFunctions[i]();
+ if (i == stepFunctions.length - 1)
+ done();
+ });
+ }
+ }
+}
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/w3c-import.log (0 => 227054)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/w3c-import.log (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/w3c-import.log 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,30 @@
+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the WPT github:
+ https://github.com/w3c/web-platform-tests
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/OWNERS
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-type.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scale.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size.html
+/LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport_support.js
Copied: trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt (from rev 227053, trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-scroll-iframe-expected.txt) (0 => 227054)
--- trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,15 @@
+Viewport: Scroll in iframe - no page scale
+
+Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.
+
+
+frames[0].window.visualViewport's offsetLeft and offsetTop is (0, 0).
+
+frames[0].window.visualViewport's pageLeft and pageTop is (0, 0).
+
+
+PASS offsetLeft must be 0.
+PASS offsetTop must be 0.
+FAIL pageLeft must reflect location of viewport in document. assert_equals: expected 1000 but got 0
+FAIL pageTop must reflect location of viewport in document. assert_equals: expected 1200 but got 0
+
Copied: trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt (from rev 227053, trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-expected.txt) (0 => 227054)
--- trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,14 @@
+Viewport: Size unscaled
+
+Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied.
+
+window.visualViewport width and height is (800, 600).
+
+window.visualViewport width and height when scrollbars are present is (800, 600).
+
+
+PASS visualViewport.width should match documentElement.clientWidth when unzoomed.
+PASS visualViewport.height should match documentElement.clientHeight when unzoomed.
+PASS visualViewport.width should exclude scrollbar.
+PASS visualViewport.height should exclude scrollbar.
+
Copied: trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt (from rev 227053, trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/viewport/viewport-unscaled-size-iframe-expected.txt) (0 => 227054)
--- trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe-expected.txt 2018-01-17 09:34:46 UTC (rev 227054)
@@ -0,0 +1,15 @@
+Viewport: Size in iframe - no page scale
+
+Test Description: This test checks that window.visualViewport returns correct sizes without any pinch-zoom page scale applied but with scrollbars.
+
+
+frames[0].window.visualViewport width and height is (200, 300).
+
+frames[0].window.visualViewport width and height when scrollbars are present is (200, 300).
+
+
+PASS window.visualViewport.width of iframe viewport should match iframe width.
+PASS window.visualViewport.height of iframe viewport should match iframe height.
+FAIL window.visualViewport.width of iframe viewport should not include scrollbar. assert_equals: expected 185 but got 200
+FAIL window.visualViewport.height of iframe viewport should not include scrollbar. assert_equals: expected 285 but got 300
+