blob: a2fc9487a06b175bd13ac5a5eb29ccebe4b03152 [file] [log] [blame]
# Copyright 2018 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 page as page_module
from telemetry.page import shared_page_state
from telemetry import story
class _SharedPageState(shared_page_state.SharedDesktopPageState):
def CanRunOnBrowser(self, browser_info, page):
if not hasattr(page, 'CanRunOnBrowser'):
return True
return page.CanRunOnBrowser(browser_info.browser)
class DesktopUIPage(page_module.Page):
def __init__(self, url, page_set, name):
super(DesktopUIPage, self).__init__(
url=url,
page_set=page_set,
name=name,
shared_page_state_class=_SharedPageState,
extra_browser_args=['--always-request-presentation-time'])
class OverviewMode(DesktopUIPage):
def CanRunOnBrowser(self, browser):
return browser.supports_overview_mode
def RunPageInteractions(self, action_runner):
action_runner.Wait(1)
# TODO(chiniforooshan): CreateInteraction creates an async event in the
# renderer, which works fine; it is nicer if we create UI interaction
# records in the browser process.
with action_runner.CreateInteraction('ui_EnterOverviewAction'):
action_runner.EnterOverviewMode()
# TODO(chiniforooshan): The follwoing wait, and the one after
# ExitOverviewMode(), is a workaround for crbug.com/788454. Remove when
# the bug is fixed.
action_runner.Wait(1)
action_runner.Wait(0.5)
with action_runner.CreateInteraction('ui_ExitOverviewAction'):
action_runner.ExitOverviewMode()
action_runner.Wait(1)
class CrosUiCasesPageSet(story.StorySet):
"""Pages that test desktop UI performance."""
def __init__(self):
super(CrosUiCasesPageSet, self).__init__(
archive_data_file='data/cros_ui_cases.json',
cloud_storage_bucket=story.PARTNER_BUCKET)
self.AddStory(OverviewMode(
'http://news.yahoo.com', self, 'overview:yahoo_news'))
self.AddStory(OverviewMode(
'http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE', self,
'overview:js_poster_circle'))