blob: d780a37f50c426efcd3645b37a2870585d233b31 [file] [log] [blame]
# Copyright 2015 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 telemetry.page import traffic_setting as traffic_setting_module
from telemetry.page import page as page_module
from telemetry.page import shared_page_state
from telemetry import story
class CTPage(page_module.Page):
def __init__(self, url, page_set, shared_page_state_class, archive_data_file,
traffic_setting, run_page_interaction_callback):
super(CTPage, self).__init__(
url=url,
page_set=page_set,
shared_page_state_class=shared_page_state_class,
traffic_setting=traffic_setting)
self.archive_data_file = archive_data_file
self._run_page_interaction_callback = run_page_interaction_callback
def RunNavigateSteps(self, action_runner):
action_runner.Navigate(self.url)
def RunPageInteractions(self, action_runner):
if self._run_page_interaction_callback:
self._run_page_interaction_callback(action_runner)
class CTPageSet(story.StorySet):
"""Page set used by CT Benchmarks."""
def __init__(self, urls_list, user_agent, archive_data_file,
traffic_setting=traffic_setting_module.NONE,
run_page_interaction_callback=None):
if user_agent == 'mobile':
shared_page_state_class = shared_page_state.SharedMobilePageState
elif user_agent == 'desktop':
shared_page_state_class = shared_page_state.SharedDesktopPageState
else:
raise ValueError('user_agent %s is unrecognized' % user_agent)
super(CTPageSet, self).__init__(archive_data_file=archive_data_file)
for url in urls_list.split(','):
self.AddStory(
CTPage(url, self, shared_page_state_class=shared_page_state_class,
archive_data_file=archive_data_file,
traffic_setting=traffic_setting,
run_page_interaction_callback=run_page_interaction_callback))