Index: telemetry/telemetry/internal/actions/scroll_unittest.py |
diff --git a/telemetry/telemetry/internal/actions/scroll_unittest.py b/telemetry/telemetry/internal/actions/scroll_unittest.py |
index b708dab8abcee96762cb41188e7afa57216206e3..0c6ad7d0178f6d6fe5a1657fdc4d2f027288c493 100644 |
--- a/telemetry/telemetry/internal/actions/scroll_unittest.py |
+++ b/telemetry/telemetry/internal/actions/scroll_unittest.py |
@@ -2,22 +2,31 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-import os |
- |
from telemetry.internal.actions import scroll |
+from telemetry.internal.actions import utils |
from telemetry.testing import tab_test_case |
class ScrollActionTest(tab_test_case.TabTestCase): |
- def testScrollAction(self): |
+ def _MakePageVerticallyScrollable(self): |
+ # Make page taller than window so it's scrollable vertically. |
+ self._tab.ExecuteJavaScript('document.body.style.height =' |
+ '(3 * __GestureCommon_GetWindowHeight() + 1) + "px";') |
+ |
+ def _MakePageHorizontallyScrollable(self): |
+ # Make page wider than window so it's scrollable horizontally. |
+ self._tab.ExecuteJavaScript('document.body.style.width =' |
+ '(3 * __GestureCommon_GetWindowWidth() + 1) + "px";') |
+ |
+ def setUp(self): |
+ tab_test_case.TabTestCase.setUp(self) |
self.Navigate('blank.html') |
+ utils.InjectJavaScript(self._tab, 'gesture_common.js') |
- # Make page bigger than window so it's scrollable. |
- self._tab.ExecuteJavaScript("""document.body.style.height = |
- (2 * window.innerHeight + 1) + 'px';""") |
+ def testScrollAction(self): |
+ self._MakePageVerticallyScrollable() |
self.assertEquals( |
- self._tab.EvaluateJavaScript("""document.documentElement.scrollTop |
- || document.body.scrollTop"""), 0) |
+ self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0) |
i = scroll.ScrollAction() |
i.WillRunAction(self._tab) |
@@ -35,7 +44,7 @@ class ScrollActionTest(tab_test_case.TabTestCase): |
self.assertTrue(self._tab.EvaluateJavaScript('window.__didEndMeasuring')) |
scroll_position = self._tab.EvaluateJavaScript( |
- '(document.documentElement.scrollTop || document.body.scrollTop)') |
+ 'document.scrollingElement.scrollTop') |
self.assertTrue(scroll_position != 0, |
msg='scroll_position=%d;' % (scroll_position)) |
@@ -47,20 +56,13 @@ class ScrollActionTest(tab_test_case.TabTestCase): |
if branch_num < 2332: |
return |
- self.Navigate('blank.html') |
- |
- # Make page bigger than window so it's scrollable. |
- self._tab.ExecuteJavaScript("""document.body.style.height = |
- (2 * window.innerHeight + 1) + 'px';""") |
- self._tab.ExecuteJavaScript("""document.body.style.width = |
- (2 * window.innerWidth + 1) + 'px';""") |
- |
+ self._MakePageVerticallyScrollable() |
self.assertEquals( |
- self._tab.EvaluateJavaScript("""document.documentElement.scrollTop |
- || document.body.scrollTop"""), 0) |
+ self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0) |
+ |
+ self._MakePageHorizontallyScrollable() |
self.assertEquals( |
- self._tab.EvaluateJavaScript("""document.documentElement.scrollLeft |
- || document.body.scrollLeft"""), 0) |
+ self._tab.EvaluateJavaScript('document.scrollingElement.scrollLeft'), 0) |
i = scroll.ScrollAction(direction='downright') |
i.WillRunAction(self._tab) |
@@ -68,21 +70,14 @@ class ScrollActionTest(tab_test_case.TabTestCase): |
i.RunAction(self._tab) |
viewport_top = self._tab.EvaluateJavaScript( |
- '(document.documentElement.scrollTop || document.body.scrollTop)') |
+ 'document.scrollingElement.scrollTop') |
self.assertTrue(viewport_top != 0, msg='viewport_top=%d;' % viewport_top) |
viewport_left = self._tab.EvaluateJavaScript( |
- '(document.documentElement.scrollLeft || document.body.scrollLeft)') |
+ 'document.scrollingElement.scrollLeft') |
self.assertTrue(viewport_left != 0, msg='viewport_left=%d;' % viewport_left) |
def testBoundingClientRect(self): |
- self.Navigate('blank.html') |
- |
- with open(os.path.join(os.path.dirname(__file__), |
- 'gesture_common.js')) as f: |
- js = f.read() |
- self._tab.ExecuteJavaScript(js) |
- |
# Verify that the rect returned by getBoundingVisibleRect() in scroll.js is |
# completely contained within the viewport. Scroll events dispatched by the |
# scrolling API use the center of this rect as their location, and this |
@@ -91,12 +86,17 @@ class ScrollActionTest(tab_test_case.TabTestCase): |
# not clipped to the viewport bounds, then the instance used here (the |
# scrollable area being more than twice as tall as the viewport) would |
# result in a scroll location outside of the viewport bounds. |
- self._tab.ExecuteJavaScript("""document.body.style.height = |
- (3 * window.innerHeight + 1) + 'px';""") |
- self._tab.ExecuteJavaScript("""document.body.style.width = |
- (3 * window.innerWidth + 1) + 'px';""") |
- self._tab.ExecuteJavaScript( |
- "window.scrollTo(window.innerWidth, window.innerHeight);") |
+ self._MakePageVerticallyScrollable() |
+ self.assertEquals( |
+ self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0) |
+ |
+ self._MakePageHorizontallyScrollable() |
+ self.assertEquals( |
+ self._tab.EvaluateJavaScript('document.scrollingElement.scrollLeft'), 0) |
+ |
+ self._tab.ExecuteJavaScript(""" |
+ window.scrollTo(__GestureCommon_GetWindowWidth(), |
+ __GestureCommon_GetWindowHeight());""") |
rect_top = int(self._tab.EvaluateJavaScript( |
'__GestureCommon_GetBoundingVisibleRect(document.body).top')) |
@@ -110,8 +110,10 @@ class ScrollActionTest(tab_test_case.TabTestCase): |
'__GestureCommon_GetBoundingVisibleRect(document.body).width')) |
rect_right = rect_left + rect_width |
- viewport_height = int(self._tab.EvaluateJavaScript('window.innerHeight')) |
- viewport_width = int(self._tab.EvaluateJavaScript('window.innerWidth')) |
+ viewport_height = int(self._tab.EvaluateJavaScript( |
+ '__GestureCommon_GetWindowHeight()')) |
+ viewport_width = int(self._tab.EvaluateJavaScript( |
+ '__GestureCommon_GetWindowWidth()')) |
self.assertTrue(rect_top >= 0, |
msg='%s >= %s' % (rect_top, 0)) |