blob: 3e3b8c6f45c5e37cb575d4774298355bd160a427 [file] [log] [blame]
# Copyright 2016 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 page_sets.system_health import platforms
from page_sets.system_health import story_tags
from page_sets.system_health import system_health_story
from devil.android.sdk import keyevent # pylint: disable=import-error
class BlankAboutBlankStory(system_health_story.SystemHealthStory):
"""Story that loads the about:blank page."""
NAME = 'load:chrome:blank'
URL = 'about:blank'
TAGS = [story_tags.HEALTH_CHECK, story_tags.YEAR_2016]
def _DidLoadDocument(self, action_runner):
# Request a RAF and wait for it to be processed to ensure that the metric
# Startup.FirstWebContents.NonEmptyPaint2 is recorded.
action_runner.ExecuteJavaScript(
"""
window.__hasRunRAF = false;
requestAnimationFrame(function() {
window.__hasRunRAF = true;
});
"""
)
action_runner.WaitForJavaScriptCondition("window.__hasRunRAF")
class SearchOmniboxStory(system_health_story.SystemHealthStory):
"""Story that peforms search by using omnibox search provider
Loads a website and enters a search query on omnibox and navigates to default
search provider (google).
"""
NAME = 'browse:chrome:omnibox'
URL = 'https://www.google.co.in'
SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY
TAGS = [story_tags.EMERGING_MARKET, story_tags.YEAR_2016]
# WebView has no omnibox, so not supported.
WEBVIEW_NOT_SUPPORTED = True
def _DidLoadDocument(self, action_runner):
app_ui = action_runner.tab.browser.GetAppUi()
platform = action_runner.tab.browser.platform
app_ui.WaitForUiNode(resource_id='url_bar')
url_bar = app_ui.GetUiNode(resource_id='url_bar')
url_bar.Tap()
action_runner.Wait(1) # user wait before typing
platform.android_action_runner.InputText('drake')
action_runner.Wait(0.5) # user wait after typing
platform.android_action_runner.InputKeyEvent(keyevent.KEYCODE_ENTER)
action_runner.WaitForNavigate()
action_runner.ScrollPage(use_touch=True, distance=500)
class MobileNewTabPageStory(system_health_story.SystemHealthStory):
"""Story that loads new tab page and performs searches.
Given a list of typical search queries, this story does for each of them:
- enter the search query on the new tab page search box
- read results
- navigates back to new tab page
"""
NAME = 'browse:chrome:newtab'
URL = 'chrome://newtab'
_SEARCH_TEXTS = ['does google know everything',
'most famous paintings',
'current weather',
'best movies 2016',
'how to tie a tie']
SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY
TAGS = [story_tags.EMERGING_MARKET, story_tags.YEAR_2016]
# WebView has no tabs, so this story is not supported there.
WEBVIEW_NOT_SUPPORTED = True
def _DidLoadDocument(self, action_runner):
app_ui = action_runner.tab.browser.GetAppUi()
platform = action_runner.tab.browser.platform
for keyword in self._SEARCH_TEXTS:
app_ui.WaitForUiNode(resource_id='search_box').Tap()
platform.android_action_runner.InputText(keyword)
platform.android_action_runner.InputKeyEvent(keyevent.KEYCODE_ENTER)
action_runner.WaitForNavigate()
action_runner.Wait(1.5) # Read results
action_runner.ScrollPage(use_touch=True)
action_runner.NavigateBack()
action_runner.WaitForNavigate()
app_ui.WaitForUiNode(resource_id='menu_button').Tap()
app_ui.WaitForUiNode(content_desc='New tab')