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

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

Issue 1748883005: Add mobile version of v8.infinite_scroll benchmark. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add missing hash file Created 4 years, 9 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
« no previous file with comments | « tools/perf/page_sets/mobile_facebook_page.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/page_sets/mobile_infinite_scroll_cases.py
diff --git a/tools/perf/page_sets/mobile_infinite_scroll_cases.py b/tools/perf/page_sets/mobile_infinite_scroll_cases.py
new file mode 100644
index 0000000000000000000000000000000000000000..0f626fe14a132642bf3f9d160e41397cd25f106b
--- /dev/null
+++ b/tools/perf/page_sets/mobile_infinite_scroll_cases.py
@@ -0,0 +1,98 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+from page_sets import mobile_facebook_page
+from telemetry.page import page as page_module
+from telemetry.page import shared_page_state
+from telemetry import story
+
+TIME_TO_WAIT_BEFORE_STARTING_IN_SECONDS = 5
+SCROLL_TIMEOUT_IN_SECONDS = 120
+
+# TODO(ulan): Remove this once crbug.com/541508 is fixed.
+STARTUP_SCRIPT = '''
+ window.WebSocket = undefined;
+ window.Worker = undefined;
+ window.performance = undefined;'''
+
+def _ScrollAction(action_runner, scroll_amount, delay, repeat):
+ with action_runner.CreateInteraction('Begin'):
+ action_runner.tab.browser.DumpMemory()
+ with action_runner.CreateInteraction('Scrolling'):
+ action_runner.RepeatableBrowserDrivenScroll(
+ y_scroll_distance_ratio=scroll_amount,
+ repeat_delay_ms=delay,
+ repeat_count=repeat,
+ timeout=SCROLL_TIMEOUT_IN_SECONDS)
+ with action_runner.CreateInteraction('End'):
+ action_runner.tab.browser.DumpMemory()
+
+def _WaitAction(action_runner):
+ with action_runner.CreateInteraction('Load'):
+ action_runner.WaitForJavaScriptCondition(
+ 'document.body != null && '
+ 'document.body.scrollHeight > window.innerHeight && '
+ '!document.body.addEventListener("touchstart", function() {})')
+ with action_runner.CreateInteraction('Wait'):
+ action_runner.Wait(TIME_TO_WAIT_BEFORE_STARTING_IN_SECONDS)
+ with action_runner.CreateInteraction('GC'):
+ action_runner.ForceGarbageCollection()
+
+class MobileInfiniteScrollPage(page_module.Page):
+ def __init__(self, url, page_set, name, scroll_amount, delay, repeat,
+ credentials=None):
+ super(MobileInfiniteScrollPage, self).__init__(
+ url=url, page_set=page_set, name=name,
+ shared_page_state_class=shared_page_state.SharedPageState,
+ credentials_path='data/credentials.json')
+ self.credentials = credentials
+ self.script_to_evaluate_on_commit = STARTUP_SCRIPT
+ self.scroll_amount = scroll_amount
+ self.delay = delay
+ self.repeat = repeat
+
+ def RunPageInteractions(self, action_runner):
+ _WaitAction(action_runner)
+ _ScrollAction(action_runner, self.scroll_amount, self.delay,
+ self.repeat)
+
+class MobileInfiniteScrollFacebookPage(mobile_facebook_page.MobileFacebookPage):
+ def __init__(self, url, page_set, name, scroll_amount, delay, repeat):
+ super(MobileInfiniteScrollFacebookPage, self).__init__(
+ url=url, page_set=page_set,
+ shared_page_state_class=shared_page_state.SharedPageState,
+ name=name)
+ self.script_to_evaluate_on_commit = STARTUP_SCRIPT
+ self.scroll_amount = scroll_amount
+ self.delay = delay
+ self.repeat = repeat
+
+ def RunPageInteractions(self, action_runner):
+ _WaitAction(action_runner)
+ _ScrollAction(action_runner, self.scroll_amount, self.delay,
+ self.repeat)
+
+class MobileInfiniteScrollPageSet(story.StorySet):
+ """ Top mobile pages that can be scrolled for many pages. """
+ def __init__(self):
+ super(MobileInfiniteScrollPageSet, self).__init__(
+ archive_data_file='data/mobile_infinite_scroll.json',
+ cloud_storage_bucket=story.PARTNER_BUCKET)
+ # The scroll distance is chosen such that the page can be scrolled
+ # continuously through the test without hitting the end of the page.
+ SCROLL_FAR = 60
+ SCROLL_PAGE = 1
+ pages = [
+ ('https://m.facebook.com/shakira', 'facebook', SCROLL_FAR, 0, 0),
+ ('https://mobile.twitter.com/taylorswift13', 'twitter', SCROLL_PAGE, 10, 30),
+ ('http://techcrunch.tumblr.com/', 'tumblr', SCROLL_FAR, 0, 0),
+ ('https://www.flickr.com/explore', 'flickr', SCROLL_FAR, 0, 0),
+ ('https://meta.discourse.org/t/the-official-discourse-tags-plugin-discourse-tagging/26482',
+ 'discourse', SCROLL_PAGE, 10, 30)
+ ]
+ self.AddStory(
+ MobileInfiniteScrollFacebookPage(pages[0][0], self, pages[0][1],
+ pages[0][2], pages[0][3], pages[0][4]))
+ for (url, name, scroll_amount, delay, repeat) in pages[1:]:
+ self.AddStory(
+ MobileInfiniteScrollPage(url, self, name, scroll_amount, delay, repeat))
« no previous file with comments | « tools/perf/page_sets/mobile_facebook_page.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698