| 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 DUMP_WAIT_TIME = 3 | |
| 15 | |
| 16 | |
| 17 class BlinkMemoryMobilePage(page_module.Page): | |
| 18 def __init__(self, url, page_set, name): | |
| 19 super(BlinkMemoryMobilePage, self).__init__( | |
| 20 url=url, page_set=page_set, name=name, | |
| 21 shared_page_state_class=shared_page_state.SharedMobilePageState, | |
| 22 credentials_path='data/credentials.json') | |
| 23 self.archive_data_file = 'data/blink_memory_mobile.json' | |
| 24 | |
| 25 def _DumpMemory(self, action_runner, phase): | |
| 26 with action_runner.CreateInteraction(phase): | |
| 27 action_runner.Wait(DUMP_WAIT_TIME) | |
| 28 action_runner.ForceGarbageCollection() | |
| 29 action_runner.Wait(DUMP_WAIT_TIME) | |
| 30 if not action_runner.tab.browser.DumpMemory(): | |
| 31 logging.error('Unable to get a memory dump for %s.', self.name) | |
| 32 | |
| 33 def RunPageInteractions(self, action_runner): | |
| 34 action_runner.ScrollPage() | |
| 35 self._DumpMemory(action_runner, 'scrolled') | |
| 36 | |
| 37 | |
| 38 class TheVergePage(BlinkMemoryMobilePage): | |
| 39 COMMENT_LINK_SELECTOR = '.show_comments_link' | |
| 40 | |
| 41 def __init__(self, page_set): | |
| 42 super(TheVergePage, self).__init__( | |
| 43 'http://www.theverge.com/2015/8/11/9133883/taylor-swift-spotify-discover
-weekly-what-is-going-on', | |
| 44 page_set=page_set, | |
| 45 name='TheVerge') | |
| 46 | |
| 47 def RunPageInteractions(self, action_runner): | |
| 48 action_runner.WaitForElement(selector=TheVergePage.COMMENT_LINK_SELECTOR) | |
| 49 action_runner.ExecuteJavaScript( | |
| 50 'window.location.hash = "comments"') | |
| 51 action_runner.TapElement( | |
| 52 selector=TheVergePage.COMMENT_LINK_SELECTOR) | |
| 53 action_runner.WaitForJavaScriptCondition( | |
| 54 'window.Chorus.Comments.collection.length > 0') | |
| 55 super(TheVergePage, self).RunPageInteractions(action_runner) | |
| 56 | |
| 57 | |
| 58 class FacebookPage(BlinkMemoryMobilePage): | |
| 59 def __init__(self, page_set): | |
| 60 super(FacebookPage, self).__init__( | |
| 61 'https://facebook.com/barackobama', | |
| 62 page_set=page_set, | |
| 63 name='Facebook') | |
| 64 | |
| 65 def RunNavigateSteps(self, action_runner): | |
| 66 super(FacebookPage, self).RunNavigateSteps(action_runner) | |
| 67 action_runner.WaitForJavaScriptCondition( | |
| 68 'document.getElementById("u_0_c") !== null &&' | |
| 69 'document.body.scrollHeight > window.innerHeight') | |
| 70 | |
| 71 | |
| 72 class GmailPage(BlinkMemoryMobilePage): | |
| 73 def __init__(self, page_set): | |
| 74 super(GmailPage, self).__init__( | |
| 75 'https://mail.google.com/mail/', | |
| 76 page_set=page_set, | |
| 77 name='Gmail') | |
| 78 | |
| 79 def RunNavigateSteps(self, action_runner): | |
| 80 google_login.LoginGoogleAccount(action_runner, 'google', | |
| 81 self.credentials_path) | |
| 82 super(GmailPage, self).RunNavigateSteps(action_runner) | |
| 83 # Needs to wait for navigation to handle redirects. | |
| 84 action_runner.WaitForNavigate() | |
| 85 action_runner.WaitForElement(selector='#apploadingdiv') | |
| 86 action_runner.WaitForJavaScriptCondition( | |
| 87 'document.querySelector("#apploadingdiv").style.opacity == "0"') | |
| 88 | |
| 89 | |
| 90 class BlinkMemoryMobilePageSet(story.StorySet): | |
| 91 """Key mobile sites for Blink memory reduction.""" | |
| 92 | |
| 93 def __init__(self): | |
| 94 super(BlinkMemoryMobilePageSet, self).__init__( | |
| 95 archive_data_file='data/blink_memory_mobile.json', | |
| 96 cloud_storage_bucket=story.PARTNER_BUCKET) | |
| 97 | |
| 98 # Why: High rate of Blink's memory consumption rate. | |
| 99 self.AddStory(BlinkMemoryMobilePage( | |
| 100 'https://www.pinterest.com', | |
| 101 page_set=self, | |
| 102 name='Pinterest')) | |
| 103 self.AddStory(FacebookPage(self)) | |
| 104 # TODO(bashi): Enable TheVergePage. http://crbug.com/522381 | |
| 105 # self.AddStory(TheVergePage(self)) | |
| 106 | |
| 107 # Why: High rate of Blink's memory comsumption rate on low-RAM devices. | |
| 108 self.AddStory(BlinkMemoryMobilePage( | |
| 109 'http://en.m.wikipedia.org/wiki/Wikipedia', | |
| 110 page_set=self, | |
| 111 name='Wikipedia (1 tab) - delayed scroll start',)) | |
| 112 self.AddStory(BlinkMemoryMobilePage( | |
| 113 url='http://www.reddit.com/r/programming/comments/1g96ve', | |
| 114 page_set=self, | |
| 115 name='Reddit')) | |
| 116 self.AddStory(BlinkMemoryMobilePage( | |
| 117 'https://en.blog.wordpress.com/2012/09/04/freshly-pressed-editors-picks-
for-august-2012/', | |
| 118 page_set=self, | |
| 119 name='Wordpress')) | |
| 120 | |
| 121 # Why: Renderer memory usage is high. | |
| 122 self.AddStory(BlinkMemoryMobilePage( | |
| 123 'http://worldjournal.com/', | |
| 124 page_set=self, | |
| 125 name='Worldjournal')) | |
| 126 | |
| 127 # Why: Key products. | |
| 128 self.AddStory(GmailPage(page_set=self)) | |
| 129 self.AddStory(BlinkMemoryMobilePage( | |
| 130 'http://googlewebmastercentral.blogspot.com/2015/04/rolling-out-mobile-f
riendly-update.html?m=1', | |
| 131 page_set=self, | |
| 132 name='Blogger')) | |
| 133 self.AddStory(BlinkMemoryMobilePage( | |
| 134 'https://plus.google.com/app/basic/110031535020051778989/posts?source=ap
ppromo', | |
| 135 page_set=self, | |
| 136 name='GooglePlus')) | |
| OLD | NEW |