OLD | NEW |
1 # Copyright 2017 The Chromium Authors. All rights reserved. | 1 # Copyright 2017 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import py_utils | 5 import py_utils |
6 import logging | 6 import logging |
7 | 7 |
8 from page_sets.system_health import system_health_story | 8 from page_sets.system_health import system_health_story |
9 from page_sets.system_health import story_tags | 9 from page_sets.system_health import story_tags |
10 from page_sets.system_health import platforms | 10 from page_sets.system_health import platforms |
11 | 11 |
12 from telemetry import benchmark | 12 from telemetry import benchmark |
13 | 13 |
14 | 14 |
15 class MultiTabStory(system_health_story.SystemHealthStory): | 15 class MultiTabStory(system_health_story.SystemHealthStory): |
16 ABSTRACT_STORY = True | 16 ABSTRACT_STORY = True |
17 | 17 |
| 18 def __init__(self, story_set, take_memory_measurement, tabset_repeat=1): |
| 19 super(MultiTabStory, self).__init__(story_set, take_memory_measurement) |
| 20 self._tabset_repeat = tabset_repeat |
| 21 |
18 def RunNavigateSteps(self, action_runner): | 22 def RunNavigateSteps(self, action_runner): |
19 tabs = action_runner.tab.browser.tabs | 23 tabs = action_runner.tab.browser.tabs |
20 | 24 |
21 # No need to create the first tab as there is already one | 25 # No need to create the first tab as there is already one |
22 # when the browser is ready, | 26 # when the browser is ready, |
23 if self.URL_LIST: | 27 url_list = self.URL_LIST * self._tabset_repeat |
24 action_runner.Navigate(self.URL_LIST[0]) | 28 if url_list: |
25 for url in self.URL_LIST[1:]: | 29 action_runner.Navigate(url_list[0]) |
| 30 for url in url_list[1:]: |
26 new_tab = tabs.New() | 31 new_tab = tabs.New() |
27 new_tab.action_runner.Navigate(url) | 32 new_tab.action_runner.Navigate(url) |
28 | 33 |
29 for i, url in enumerate(self.URL_LIST): | 34 for i, url in enumerate(url_list): |
30 try: | 35 try: |
31 tabs[i].action_runner.WaitForNetworkQuiescence() | 36 tabs[i].action_runner.WaitForNetworkQuiescence() |
32 except py_utils.TimeoutException: | 37 except py_utils.TimeoutException: |
33 logging.warning('WaitForNetworkQuiescence() timeout, url[%d]: %s' | 38 logging.warning('WaitForNetworkQuiescence() timeout, url[%d]: %s' |
34 % (i, url)) | 39 % (i, url)) |
35 | 40 |
36 def RunPageInteractions(self, action_runner): | 41 def RunPageInteractions(self, action_runner): |
37 for tab in action_runner.tab.browser.tabs: | 42 for tab in action_runner.tab.browser.tabs: |
38 tab.Activate() | 43 tab.Activate() |
39 tab.WaitForFrameToBeDisplayed() | 44 tab.WaitForFrameToBeDisplayed() |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 '1837448?brand=none&tm_link=tm_homeA_rc_name2'), | 80 '1837448?brand=none&tm_link=tm_homeA_rc_name2'), |
76 # pylint: disable=line-too-long | 81 # pylint: disable=line-too-long |
77 'http://www.theverge.com/2013/3/5/4061684/inside-ted-the-smartest-bubble-in-
the-world', | 82 'http://www.theverge.com/2013/3/5/4061684/inside-ted-the-smartest-bubble-in-
the-world', |
78 'http://www.airbnb.com/', | 83 'http://www.airbnb.com/', |
79 'http://www.ign.com/', | 84 'http://www.ign.com/', |
80 # Why: Alexa health #25 | 85 # Why: Alexa health #25 |
81 'http://www.fda.gov', | 86 'http://www.fda.gov', |
82 ] | 87 ] |
83 URL = URL_LIST[0] | 88 URL = URL_LIST[0] |
84 SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY | 89 SUPPORTED_PLATFORMS = platforms.DESKTOP_ONLY |
OLD | NEW |