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

Unified Diff: tools/perf/page_sets/tough_ad_cases.py

Issue 1291513004: smoothness.scrolling_tough_ad_cases to use browser driven scrolls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final nits Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: tools/perf/page_sets/tough_ad_cases.py
diff --git a/tools/perf/page_sets/tough_ad_cases.py b/tools/perf/page_sets/tough_ad_cases.py
index 969296cdbccd2c5e3775914595fb1a274c544128..a944397d25fc9da099ba5f2ad84acfaf0588a7cb 100644
--- a/tools/perf/page_sets/tough_ad_cases.py
+++ b/tools/perf/page_sets/tough_ad_cases.py
@@ -2,7 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-from telemetry.core import exceptions
+from page_sets import repeatable_synthesize_scroll_gesture_shared_state
+
from telemetry.page import page as page_module
from telemetry import story
@@ -34,11 +35,16 @@ class SwiffyPage(page_module.Page):
class ScrollingPage(page_module.Page):
- def __init__(self, url, page_set, top_start_ratio=.5,
- make_javascript_deterministic=True):
- super(ScrollingPage, self).__init__(url=url, page_set=page_set,
- make_javascript_deterministic=make_javascript_deterministic)
- self._top_start_ratio = top_start_ratio
+ def __init__(self, url, page_set, make_javascript_deterministic=True,
+ y_scroll_distance_multiplier=0.5):
+ super(ScrollingPage, self).__init__(
+ url=url,
+ page_set=page_set,
+ make_javascript_deterministic=make_javascript_deterministic,
+ shared_page_state_class=(
+ repeatable_synthesize_scroll_gesture_shared_state.\
+ RepeatableSynthesizeScrollGestureSharedState))
+ self._y_scroll_distance_multiplier = y_scroll_distance_multiplier
def RunNavigateSteps(self, action_runner):
# Rewrite file urls to point to the replay server instead.
@@ -49,27 +55,19 @@ class ScrollingPage(page_module.Page):
url = self._url
action_runner.tab.Navigate(url)
- # Give the page one second to become interactive and start scrolling after
- # the timeout regardless of the document's ready state.
- try:
- action_runner.tab.WaitForDocumentReadyStateToBeInteractiveOrBetter(1)
- except exceptions.TimeoutException:
- pass
- # Wait for the document to have a body so that we can scroll.
- # Simultaneously (to reduce latency), insert a no-op touch handler on the
- # body. Most ads have touch handlers and we want to simulate the worst case
- # of the user trying to scroll the page by grabbing an ad.
+ # Wait for the page to be scrollable. Simultaneously (to reduce latency due
+ # to main thread round trips), insert a no-op touch handler on the body.
+ # Most ads have touch handlers and we want to simulate the worst case of the
+ # user trying to scroll the page by grabbing an ad.
action_runner.WaitForJavaScriptCondition(
- '!(document.body == null || '
- ' document.body.addEventListener("touchstart", function() {}))')
+ 'document.body != null && '
+ 'document.body.scrollHeight > window.innerHeight && '
+ '!document.body.addEventListener("touchstart", function() {})')
def RunPageInteractions(self, action_runner):
- for _ in range(10):
- with action_runner.CreateGestureInteraction('ScrollAction',
- repeatable=True):
- action_runner.ScrollPage(distance=500,
- top_start_ratio=self._top_start_ratio)
- action_runner.Wait(.25)
+ action_runner.RepeatableBrowserDrivenScroll(
+ y_scroll_distance_ratio=self._y_scroll_distance_multiplier,
+ repeat_count=9)
class ScrollingForbesPage(ScrollingPage):
@@ -79,8 +77,7 @@ class ScrollingForbesPage(ScrollingPage):
# which occasionally causes us to try scrolling from outside the
# screen. Start at the very top of the viewport to avoid this.
super(ScrollingForbesPage, self).__init__(
- url=url, page_set=page_set, top_start_ratio=0,
- make_javascript_deterministic=False)
+ url=url, page_set=page_set, make_javascript_deterministic=False)
def RunNavigateSteps(self, action_runner):
super(ScrollingForbesPage, self).RunNavigateSteps(action_runner)
@@ -158,7 +155,8 @@ class ScrollingToughAdCasesPageSet(story.StorySet):
cloud_storage_bucket=story.INTERNAL_BUCKET)
self.AddStory(ScrollingPage('file://tough_ad_cases/'
- 'swiffy_collection.html', self, make_javascript_deterministic=False))
+ 'swiffy_collection.html', self, make_javascript_deterministic=False,
+ y_scroll_distance_multiplier=0.25))
self.AddStory(ScrollingPage('file://tough_ad_cases/'
'swiffy_webgl_collection.html',
self, make_javascript_deterministic=False))
@@ -166,15 +164,16 @@ class ScrollingToughAdCasesPageSet(story.StorySet):
self.AddStory(ScrollingForbesPage('http://www.forbes.com/sites/parmyolson/'
'2015/07/29/jana-mobile-data-facebook-internet-org/', self))
self.AddStory(ScrollingPage('http://androidcentral.com', self))
- self.AddStory(ScrollingPage('http://mashable.com', self, top_start_ratio=0))
+ self.AddStory(ScrollingPage('http://mashable.com', self,
+ y_scroll_distance_multiplier=0.25))
self.AddStory(ScrollingPage('http://www.androidauthority.com/'
'reduce-data-use-turn-on-data-compression-in-chrome-630064/', self))
self.AddStory(ScrollingPage('http://www.cnn.com/2015/01/09/politics/'
- 'nebraska-keystone-pipeline/index.html', self, top_start_ratio=0))
+ 'nebraska-keystone-pipeline/index.html', self))
# Disabled: crbug.com/520509
#self.AddStory(ScrollingPage('http://time.com/3977891/'
# 'donald-trump-debate-republican/', self))
self.AddStory(ScrollingPage('http://www.theguardian.com/uk', self))
- self.AddStory(ScrollingPage('http://m.tmz.com', self))
- self.AddStory(ScrollingPage('http://androidpolice.com', self,
- top_start_ratio=0))
+ self.AddStory(ScrollingPage('http://m.tmz.com', self,
+ y_scroll_distance_multiplier=0.25))
+ self.AddStory(ScrollingPage('http://androidpolice.com', self))

Powered by Google App Engine
This is Rietveld 408576698