blob: ab824491632f1ee0e1c4be66171915f8ed4cc197 [file] [log] [blame]
# Copyright 2014 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.
import cloud_storage_test_base
import optparse
import page_sets
test_harness_script = r"""
var domAutomationController = {};
domAutomationController._succeeded = false;
domAutomationController._finished = false;
domAutomationController.setAutomationId = function(id) {}
domAutomationController.send = function(msg) {
domAutomationController._finished = true;
if (msg.toLowerCase() == "success")
domAutomationController._succeeded = true;
else
domAutomationController._succeeded = false;
}
window.domAutomationController = domAutomationController;
"""
def _DidTestSucceed(tab):
return tab.EvaluateJavaScript('domAutomationController._succeeded')
class _GpuRasterizationValidator(cloud_storage_test_base.ValidatorBase):
def CustomizeBrowserOptions(self, options):
options.AppendExtraBrowserArgs(['--enable-threaded-compositing',
'--enable-impl-side-painting',
'--force-gpu-rasterization',
'--enable-gpu-benchmarking'])
def ValidatePage(self, page, tab, results):
if not _DidTestSucceed(tab):
raise page_test.Failure('Page indicated a failure')
if not hasattr(page, 'expectations') or not page.expectations:
raise page_test.Failure('Expectations not specified')
if not tab.screenshot_supported:
raise page_test.Failure('Browser does not support screenshot capture')
screenshot = tab.Screenshot()
if not screenshot:
raise page_test.Failure('Could not capture screenshot')
device_pixel_ratio = tab.EvaluateJavaScript('window.devicePixelRatio')
if hasattr(page, 'test_rect'):
test_rect = [int(x * device_pixel_ratio) for x in page.test_rect]
screenshot = screenshot.Crop(
test_rect[0], test_rect[1],
test_rect[2], test_rect[3])
self._ValidateScreenshotSamples(
page.display_name,
screenshot,
page.expectations,
device_pixel_ratio)
class GpuRasterization(cloud_storage_test_base.TestBase):
"""Tests that GPU rasterization produces valid content"""
test = _GpuRasterizationValidator
page_set = page_sets.GpuRasterizationTestsPageSet
def CreatePageSet(self, options):
page_set = super(GpuRasterization, self).CreatePageSet(options)
for page in page_set.pages:
page.script_to_evaluate_on_commit = test_harness_script
return page_set