| 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 | 
|---|