Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html

Issue 731413002: Adjust DOMWindow properties to emulate old style pinch semantics (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Changes from feedback Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html
diff --git a/LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html b/LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html
new file mode 100644
index 0000000000000000000000000000000000000000..c37c5ac3b3966f38b1ae82a31ed73ccd8fa7ce29
--- /dev/null
+++ b/LayoutTests/fast/dom/Window/window-scaled-viewport-properties.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<script src="../../../resources/js-test.js"></script>
+<style>
+ body {
+ padding: 0px;
+ margin: 0px;
+ }
+
+ .spacer {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ margin: 0px;
+ padding: 0px;
+ width: 2000px;
+ height: 1500px;
+ }
+</style>
+<script language="JavaScript" type="text/javascript">
+ if (window.testRunner && window.eventSender) {
+ window.eventSender.setPageScaleFactorLimits(0.5, 4.0);
bokan 2014/11/18 23:21:51 I changed the min scale factor to 0.5 so that ther
Rick Byers 2014/11/20 19:23:31 SGTM
+ window.jsTestIsAsync = true;
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ description("This test makes sure the window properties related to the\
+ viewport remain correct under pinch-to-zoom.");
+
+ debug('===Unscaled===');
+ debug('');
+ shouldBe('window.innerWidth', '800');
+ shouldBe('window.innerHeight', '600');
+
+ function testPinchedIn() {
+ debug('');
+ debug('===Pinch Zoom in to 2X===');
+ debug('');
+ window.eventSender.setPageScaleFactor(2.0, 0, 0);
+ shouldBe('window.innerWidth', '400');
+ shouldBe('window.innerHeight', '300');
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+
+ window.scrollBy(10, 20);
+ shouldBe('window.scrollX', '10');
+ shouldBe('window.scrollY', '20');
+ window.scrollBy(1590, 1180);
+ shouldBe('window.scrollX', '1600');
+ shouldBe('window.scrollY', '1200');
+ window.scrollBy(-1600, -1200);
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+ window.scrollTo(1600, 1200);
+ shouldBe('window.scrollX', '1600');
+ shouldBe('window.scrollY', '1200');
+ window.scrollTo(0, 0);
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+ }
+
+ function testMaximallyPinchedOut() {
+ debug('');
+ debug('===Pinch Out to 0.5X===');
+ debug('');
+ window.eventSender.setPageScaleFactor(0.5, 0, 0);
+ shouldBe('window.innerWidth', '1600');
+ shouldBe('window.innerHeight', '1200');
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+
+ window.scrollBy(10, 20);
+ shouldBe('window.scrollX', '10');
+ shouldBe('window.scrollY', '20');
+ window.scrollBy(390, 280);
+ shouldBe('window.scrollX', '400');
+ shouldBe('window.scrollY', '300');
+ window.scrollBy(-400, -300);
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+ window.scrollTo(400, 300);
+ shouldBe('window.scrollX', '400');
+ shouldBe('window.scrollY', '300');
+ window.scrollTo(0, 0);
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+ }
+
+ function testOnScroll() {
+ debug('');
+ debug('===Test OnScroll===');
+ debug('');
+ window.eventSender.setPageScaleFactor(1.0, 0, 0);
+ shouldBe('window.innerWidth', '800');
+ shouldBe('window.innerHeight', '600');
+ shouldBe('window.scrollX', '0');
+ shouldBe('window.scrollY', '0');
+
+ // First scroll scrolls only the outer viewport.
+ // Second scrolls the outer and the inner.
+ // Third scrolls only the inner.
+ var scrolls = [100, 400, 100];
+ var scrollsReceived = 0;
+
+ document.onscroll = function() {
+ ++scrollsReceived;
+ debug('PASS OnScroll called for scroll #' + scrollsReceived);
+ if (scrollsReceived < scrolls.length) {
+ var scrollAmount = scrolls[scrollsReceived];
+ window.scrollBy(scrollAmount, 0);
+ } else if (scrollsReceived == scrolls.length) {
+ window.scrollTo(1200, 0);
+ } else {
+ debug('');
+ finishJSTest();
+ }
+ }
+
+ window.scrollBy(scrolls[0], 0);
+
+ // Each onscroll should be dispatched in adjacent frames so 4*16ms. Wait a little longer in case
+ // we miss a frame or two but anything more and assume the scroll event wasn't fired.
+ setTimeout(function() {
+ testFailed("Failed to receive scroll event #" + (scrollsReceived+1));
+ finishJSTest();
+ }, 200);
+ }
+
+ function forceLayout() {
+ window.scrollTo(0, 0);
+ }
+
+ function runTests() {
+ if (window.testRunner && window.eventSender) {
+ forceLayout();
+ testPinchedIn();
+ testMaximallyPinchedOut();
+ testOnScroll();
+ }
+ }
+
+ onload = runTests;
+</script>
+<div class="spacer"></div>
« no previous file with comments | « LayoutTests/TestExpectations ('k') | LayoutTests/fast/dom/Window/window-scaled-viewport-properties-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698