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

Side by Side Diff: telemetry/telemetry/internal/actions/scroll_unittest.py

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 months 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 unified diff | Download patch
OLDNEW
1 # Copyright 2012 The Chromium Authors. All rights reserved. 1 # Copyright 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os
6
7 from telemetry.internal.actions import scroll 5 from telemetry.internal.actions import scroll
6 from telemetry.internal.actions import utils
8 from telemetry.testing import tab_test_case 7 from telemetry.testing import tab_test_case
9 8
10 class ScrollActionTest(tab_test_case.TabTestCase): 9 class ScrollActionTest(tab_test_case.TabTestCase):
10 def _MakePageVerticallyScrollable(self):
11 # Make page taller than window so it's scrollable vertically.
12 self._tab.ExecuteJavaScript('document.body.style.height ='
13 '(3 * __GestureCommon_GetWindowHeight() + 1) + "px";')
14
15 def _MakePageHorizontallyScrollable(self):
16 # Make page wider than window so it's scrollable horizontally.
17 self._tab.ExecuteJavaScript('document.body.style.width ='
18 '(3 * __GestureCommon_GetWindowWidth() + 1) + "px";')
19
20 def setUp(self):
21 tab_test_case.TabTestCase.setUp(self)
22 self.Navigate('blank.html')
23 utils.InjectJavaScript(self._tab, 'gesture_common.js')
24
11 def testScrollAction(self): 25 def testScrollAction(self):
12 self.Navigate('blank.html')
13 26
14 # Make page bigger than window so it's scrollable. 27 self._MakePageVerticallyScrollable()
15 self._tab.ExecuteJavaScript("""document.body.style.height =
16 (2 * window.innerHeight + 1) + 'px';""")
17
18 self.assertEquals( 28 self.assertEquals(
19 self._tab.EvaluateJavaScript("""document.documentElement.scrollTop 29 self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0)
20 || document.body.scrollTop"""), 0)
21 30
22 i = scroll.ScrollAction() 31 i = scroll.ScrollAction()
23 i.WillRunAction(self._tab) 32 i.WillRunAction(self._tab)
24 33
25 self._tab.ExecuteJavaScript(""" 34 self._tab.ExecuteJavaScript("""
26 window.__scrollAction.beginMeasuringHook = function() { 35 window.__scrollAction.beginMeasuringHook = function() {
27 window.__didBeginMeasuring = true; 36 window.__didBeginMeasuring = true;
28 }; 37 };
29 window.__scrollAction.endMeasuringHook = function() { 38 window.__scrollAction.endMeasuringHook = function() {
30 window.__didEndMeasuring = true; 39 window.__didEndMeasuring = true;
31 };""") 40 };""")
32 i.RunAction(self._tab) 41 i.RunAction(self._tab)
33 42
34 self.assertTrue(self._tab.EvaluateJavaScript('window.__didBeginMeasuring')) 43 self.assertTrue(self._tab.EvaluateJavaScript('window.__didBeginMeasuring'))
35 self.assertTrue(self._tab.EvaluateJavaScript('window.__didEndMeasuring')) 44 self.assertTrue(self._tab.EvaluateJavaScript('window.__didEndMeasuring'))
36 45
37 scroll_position = self._tab.EvaluateJavaScript( 46 scroll_position = self._tab.EvaluateJavaScript(
38 '(document.documentElement.scrollTop || document.body.scrollTop)') 47 'document.scrollingElement.scrollTop')
39 self.assertTrue(scroll_position != 0, 48 self.assertTrue(scroll_position != 0,
40 msg='scroll_position=%d;' % (scroll_position)) 49 msg='scroll_position=%d;' % (scroll_position))
41 50
42 def testDiagonalScrollAction(self): 51 def testDiagonalScrollAction(self):
43 # Diagonal scrolling was not supported in the ScrollAction until Chrome 52 # Diagonal scrolling was not supported in the ScrollAction until Chrome
44 # branch number 2332 53 # branch number 2332
45 branch_num = self._tab.browser._browser_backend.devtools_client \ 54 branch_num = self._tab.browser._browser_backend.devtools_client \
46 .GetChromeBranchNumber() 55 .GetChromeBranchNumber()
47 if branch_num < 2332: 56 if branch_num < 2332:
48 return 57 return
49 58
50 self.Navigate('blank.html') 59 self._MakePageVerticallyScrollable()
60 self.assertEquals(
61 self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0)
51 62
52 # Make page bigger than window so it's scrollable. 63 self._MakePageHorizontallyScrollable()
53 self._tab.ExecuteJavaScript("""document.body.style.height =
54 (2 * window.innerHeight + 1) + 'px';""")
55 self._tab.ExecuteJavaScript("""document.body.style.width =
56 (2 * window.innerWidth + 1) + 'px';""")
57
58 self.assertEquals( 64 self.assertEquals(
59 self._tab.EvaluateJavaScript("""document.documentElement.scrollTop 65 self._tab.EvaluateJavaScript('document.scrollingElement.scrollLeft'), 0)
60 || document.body.scrollTop"""), 0)
61 self.assertEquals(
62 self._tab.EvaluateJavaScript("""document.documentElement.scrollLeft
63 || document.body.scrollLeft"""), 0)
64 66
65 i = scroll.ScrollAction(direction='downright') 67 i = scroll.ScrollAction(direction='downright')
66 i.WillRunAction(self._tab) 68 i.WillRunAction(self._tab)
67 69
68 i.RunAction(self._tab) 70 i.RunAction(self._tab)
69 71
70 viewport_top = self._tab.EvaluateJavaScript( 72 viewport_top = self._tab.EvaluateJavaScript(
71 '(document.documentElement.scrollTop || document.body.scrollTop)') 73 'document.scrollingElement.scrollTop')
72 self.assertTrue(viewport_top != 0, msg='viewport_top=%d;' % viewport_top) 74 self.assertTrue(viewport_top != 0, msg='viewport_top=%d;' % viewport_top)
73 75
74 viewport_left = self._tab.EvaluateJavaScript( 76 viewport_left = self._tab.EvaluateJavaScript(
75 '(document.documentElement.scrollLeft || document.body.scrollLeft)') 77 'document.scrollingElement.scrollLeft')
76 self.assertTrue(viewport_left != 0, msg='viewport_left=%d;' % viewport_left) 78 self.assertTrue(viewport_left != 0, msg='viewport_left=%d;' % viewport_left)
77 79
78 def testBoundingClientRect(self): 80 def testBoundingClientRect(self):
79 self.Navigate('blank.html')
80
81 with open(os.path.join(os.path.dirname(__file__),
82 'gesture_common.js')) as f:
83 js = f.read()
84 self._tab.ExecuteJavaScript(js)
85
86 # Verify that the rect returned by getBoundingVisibleRect() in scroll.js is 81 # Verify that the rect returned by getBoundingVisibleRect() in scroll.js is
87 # completely contained within the viewport. Scroll events dispatched by the 82 # completely contained within the viewport. Scroll events dispatched by the
88 # scrolling API use the center of this rect as their location, and this 83 # scrolling API use the center of this rect as their location, and this
89 # location needs to be within the viewport bounds to correctly decide 84 # location needs to be within the viewport bounds to correctly decide
90 # between main-thread and impl-thread scroll. If the scrollable area were 85 # between main-thread and impl-thread scroll. If the scrollable area were
91 # not clipped to the viewport bounds, then the instance used here (the 86 # not clipped to the viewport bounds, then the instance used here (the
92 # scrollable area being more than twice as tall as the viewport) would 87 # scrollable area being more than twice as tall as the viewport) would
93 # result in a scroll location outside of the viewport bounds. 88 # result in a scroll location outside of the viewport bounds.
94 self._tab.ExecuteJavaScript("""document.body.style.height = 89 self._MakePageVerticallyScrollable()
95 (3 * window.innerHeight + 1) + 'px';""") 90 self.assertEquals(
96 self._tab.ExecuteJavaScript("""document.body.style.width = 91 self._tab.EvaluateJavaScript('document.scrollingElement.scrollTop'), 0)
97 (3 * window.innerWidth + 1) + 'px';""") 92
98 self._tab.ExecuteJavaScript( 93 self._MakePageHorizontallyScrollable()
99 "window.scrollTo(window.innerWidth, window.innerHeight);") 94 self.assertEquals(
95 self._tab.EvaluateJavaScript('document.scrollingElement.scrollLeft'), 0)
96
97 self._tab.ExecuteJavaScript("""
98 window.scrollTo(__GestureCommon_GetWindowWidth(),
99 __GestureCommon_GetWindowHeight());""")
100 100
101 rect_top = int(self._tab.EvaluateJavaScript( 101 rect_top = int(self._tab.EvaluateJavaScript(
102 '__GestureCommon_GetBoundingVisibleRect(document.body).top')) 102 '__GestureCommon_GetBoundingVisibleRect(document.body).top'))
103 rect_height = int(self._tab.EvaluateJavaScript( 103 rect_height = int(self._tab.EvaluateJavaScript(
104 '__GestureCommon_GetBoundingVisibleRect(document.body).height')) 104 '__GestureCommon_GetBoundingVisibleRect(document.body).height'))
105 rect_bottom = rect_top + rect_height 105 rect_bottom = rect_top + rect_height
106 106
107 rect_left = int(self._tab.EvaluateJavaScript( 107 rect_left = int(self._tab.EvaluateJavaScript(
108 '__GestureCommon_GetBoundingVisibleRect(document.body).left')) 108 '__GestureCommon_GetBoundingVisibleRect(document.body).left'))
109 rect_width = int(self._tab.EvaluateJavaScript( 109 rect_width = int(self._tab.EvaluateJavaScript(
110 '__GestureCommon_GetBoundingVisibleRect(document.body).width')) 110 '__GestureCommon_GetBoundingVisibleRect(document.body).width'))
111 rect_right = rect_left + rect_width 111 rect_right = rect_left + rect_width
112 112
113 viewport_height = int(self._tab.EvaluateJavaScript('window.innerHeight')) 113 viewport_height = int(self._tab.EvaluateJavaScript(
114 viewport_width = int(self._tab.EvaluateJavaScript('window.innerWidth')) 114 '__GestureCommon_GetWindowHeight()'))
115 viewport_width = int(self._tab.EvaluateJavaScript(
116 '__GestureCommon_GetWindowWidth()'))
115 117
116 self.assertTrue(rect_top >= 0, 118 self.assertTrue(rect_top >= 0,
117 msg='%s >= %s' % (rect_top, 0)) 119 msg='%s >= %s' % (rect_top, 0))
118 self.assertTrue(rect_left >= 0, 120 self.assertTrue(rect_left >= 0,
119 msg='%s >= %s' % (rect_left, 0)) 121 msg='%s >= %s' % (rect_left, 0))
120 self.assertTrue(rect_bottom <= viewport_height, 122 self.assertTrue(rect_bottom <= viewport_height,
121 msg='%s + %s <= %s' % (rect_top, rect_height, viewport_height)) 123 msg='%s + %s <= %s' % (rect_top, rect_height, viewport_height))
122 self.assertTrue(rect_right <= viewport_width, 124 self.assertTrue(rect_right <= viewport_width,
123 msg='%s + %s <= %s' % (rect_left, rect_width, viewport_width)) 125 msg='%s + %s <= %s' % (rect_left, rect_width, viewport_width))
OLDNEW
« no previous file with comments | « telemetry/telemetry/internal/actions/scroll_bounce.py ('k') | telemetry/telemetry/internal/actions/seek.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698