Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 import logging | |
| 6 | |
| 7 from telemetry.page import page as page_module | |
| 8 from telemetry.page import shared_page_state | |
| 9 from telemetry import story | |
| 10 | |
| 11 from page_sets.login_helpers import google_login | |
| 12 | |
| 13 | |
| 14 class BlinkMemoryMobilePage(page_module.Page): | |
| 15 def __init__(self, url, page_set, name): | |
| 16 super(BlinkMemoryMobilePage, self).__init__( | |
| 17 url=url, page_set=page_set, name=name, | |
| 18 shared_page_state_class=shared_page_state.SharedMobilePageState, | |
| 19 credentials_path='data/credentials.json') | |
| 20 self.archive_data_file = 'data/blink_memory_mobile.json' | |
| 21 | |
| 22 def _DumpMemory(self, action_runner, phase): | |
| 23 with action_runner.CreateInteraction(phase): | |
| 24 if not action_runner.tab.browser.DumpMemory(): | |
| 25 logging.error('Unable to get a memory dump for %s.', self.name) | |
| 26 | |
| 27 def RunPageInteractions(self, action_runner): | |
| 28 action_runner.ScrollPage() | |
|
perezju
2015/08/28 12:54:32
Not for this CL, but after running this benchmark
bashi
2015/08/31 23:47:28
Thanks for the suggestion. Added gc and delays (li
| |
| 29 self._DumpMemory(action_runner, 'scrolled') | |
| 30 | |
| 31 | |
| 32 class TheVergePage(BlinkMemoryMobilePage): | |
| 33 COMMENT_LINK_SELECTOR = '.show_comments_link' | |
| 34 | |
| 35 def __init__(self, page_set): | |
| 36 super(TheVergePage, self).__init__( | |
| 37 # pylint: disable=line-too-long | |
|
Sami
2015/08/28 11:32:22
Looks like the linter rule update landed already s
bashi
2015/08/31 23:47:28
Done.
| |
| 38 url='http://www.theverge.com/2015/8/11/9133883/taylor-swift-spotify-disc over-weekly-what-is-going-on', | |
| 39 page_set=page_set, | |
| 40 name='TheVerge') | |
| 41 | |
| 42 def RunPageInteractions(self, action_runner): | |
| 43 action_runner.WaitForElement(selector=TheVergePage.COMMENT_LINK_SELECTOR) | |
| 44 action_runner.ExecuteJavaScript( | |
| 45 'window.location.hash = "comments"') | |
| 46 action_runner.TapElement( | |
| 47 selector=TheVergePage.COMMENT_LINK_SELECTOR) | |
| 48 action_runner.WaitForJavaScriptCondition( | |
| 49 'window.Chorus.Comments.collection.length > 0') | |
| 50 super(TheVergePage, self).RunPageInteractions(action_runner) | |
| 51 | |
| 52 | |
| 53 class FacebookPage(BlinkMemoryMobilePage): | |
| 54 def __init__(self, page_set): | |
| 55 super(FacebookPage, self).__init__( | |
| 56 url='https://facebook.com/barackobama', | |
| 57 page_set=page_set, | |
| 58 name='Facebook') | |
| 59 | |
| 60 def RunNavigateSteps(self, action_runner): | |
| 61 super(FacebookPage, self).RunNavigateSteps(action_runner) | |
| 62 action_runner.WaitForJavaScriptCondition( | |
| 63 'document.getElementById("u_0_c") !== null &&' | |
| 64 'document.body.scrollHeight > window.innerHeight') | |
| 65 | |
| 66 | |
| 67 class GmailPage(BlinkMemoryMobilePage): | |
| 68 def __init__(self, page_set): | |
| 69 super(GmailPage, self).__init__( | |
| 70 url='https://mail.google.com/mail/', | |
| 71 page_set=page_set, | |
| 72 name='Gmail') | |
| 73 | |
| 74 def RunNavigateSteps(self, action_runner): | |
| 75 google_login.LoginGoogleAccount(action_runner, 'google', | |
| 76 self.credentials_path) | |
| 77 super(GmailPage, self).RunNavigateSteps(action_runner) | |
| 78 action_runner.WaitForNavigate() | |
|
Sami
2015/08/28 11:32:22
Could you add a comment here about the multiple re
bashi
2015/08/31 23:47:28
Done.
| |
| 79 action_runner.WaitForElement(selector='#apploadingdiv') | |
| 80 action_runner.WaitForJavaScriptCondition( | |
| 81 'document.querySelector("#apploadingdiv").style.opacity == "0"') | |
| 82 | |
| 83 | |
| 84 class BlinkMemoryMobilePageSet(story.StorySet): | |
| 85 """Key mobile sites for Blink memory reduction.""" | |
| 86 | |
| 87 def __init__(self): | |
| 88 super(BlinkMemoryMobilePageSet, self).__init__( | |
| 89 archive_data_file='data/blink_memory_mobile.json', | |
| 90 cloud_storage_bucket=story.PARTNER_BUCKET) | |
| 91 | |
| 92 # Why: High rate of Blink's memory consumption rate. | |
| 93 self.AddStory(BlinkMemoryMobilePage( | |
| 94 url='https://www.pinterest.com', | |
| 95 page_set=self, | |
| 96 name='Pinterest')) | |
| 97 self.AddStory(FacebookPage(self)) | |
| 98 # TODO(bashi): Enable TheVergePage. http://crbug.com/522381 | |
| 99 # self.AddStory(TheVergePage(self)) | |
| 100 | |
| 101 # Why: High rate of Blink's memory comsumption rate on low-RAM devices. | |
| 102 self.AddStory(BlinkMemoryMobilePage( | |
| 103 url='http://en.m.wikipedia.org/wiki/Wikipedia', | |
| 104 page_set=self, | |
| 105 name='Wikipedia (1 tab) - delayed scroll start',)) | |
| 106 self.AddStory(BlinkMemoryMobilePage( | |
| 107 url='http://www.reddit.com/r/programming/comments/1g96ve', | |
| 108 page_set=self, | |
| 109 name='Reddit')) | |
| 110 self.AddStory(BlinkMemoryMobilePage( | |
| 111 # pylint: disable=line-too-long | |
| 112 url='https://en.blog.wordpress.com/2012/09/04/freshly-pressed-editors-pi cks-for-august-2012/', | |
| 113 page_set=self, | |
| 114 name='Wordpress')) | |
| 115 | |
| 116 # Why: Renderer memory usage is high. | |
| 117 self.AddStory(BlinkMemoryMobilePage( | |
| 118 url='http://worldjournal.com/', | |
| 119 page_set=self, | |
| 120 name='Worldjournal')) | |
| 121 | |
| 122 # Why: Key products. | |
| 123 self.AddStory(GmailPage(page_set=self)) | |
| 124 self.AddStory(BlinkMemoryMobilePage( | |
| 125 # pylint: disable=line-too-long | |
| 126 url='http://googlewebmastercentral.blogspot.com/2015/04/rolling-out-mobi le-friendly-update.html?m=1', | |
| 127 page_set=self, | |
| 128 name='Blogger')) | |
| 129 self.AddStory(BlinkMemoryMobilePage( | |
| 130 # pylint: disable=line-too-long | |
| 131 url='https://plus.google.com/app/basic/110031535020051778989/posts?sourc e=apppromo', | |
| 132 page_set=self, | |
| 133 name='GooglePlus')) | |
| OLD | NEW |