• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2014 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.
4import os
5
6import screenshot_sync_expectations as expectations
7
8from telemetry import test
9from telemetry.core import util
10from telemetry.page import page
11from telemetry.page import page_set
12from telemetry.page import page_test
13# pylint: disable=W0401,W0614
14from telemetry.page.actions.all_page_actions import *
15
16data_path = os.path.join(
17    util.GetChromiumSrcDir(), 'content', 'test', 'data', 'gpu')
18
19class _ScreenshotSyncValidator(page_test.PageTest):
20  def CustomizeBrowserOptions(self, options):
21    options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
22
23  def ValidatePage(self, page, tab, results):
24    test_success = tab.EvaluateJavaScript('window.__testSuccess')
25    if not test_success:
26      message = tab.EvaluateJavaScript('window.__testMessage')
27      raise page_test.Failure(message)
28
29
30class ScreenshotSyncPage(page.Page):
31  def __init__(self, page_set, base_dir):
32    super(ScreenshotSyncPage, self).__init__(
33      url='file://screenshot_sync.html',
34      page_set=page_set,
35      base_dir=base_dir,
36      name='ScreenshotSync')
37    self.user_agent_type = 'desktop'
38
39  def RunNavigateSteps(self, action_runner):
40    action_runner.NavigateToPage(self)
41    action_runner.WaitForJavaScriptCondition(
42        'window.__testComplete', timeout=120)
43
44
45class ScreenshotSyncProcess(test.Test):
46  """Tests that screenhots are properly synchronized with the frame one which
47  they were requested"""
48  test = _ScreenshotSyncValidator
49
50  def CreateExpectations(self, page_set):
51    return expectations.ScreenshotSyncExpectations()
52
53  def CreatePageSet(self, options):
54    ps = page_set.PageSet(file_path=data_path, serving_dirs=[''])
55    ps.AddPage(ScreenshotSyncPage(ps, ps.base_dir))
56    return ps
57