• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2012 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 glob
5import os
6
7from telemetry.page import page_test
8from telemetry.value import scalar
9
10
11_JS = 'chrome.gpuBenchmarking.printToSkPicture("{0}");'
12
13
14class SkpicturePrinter(page_test.PageTest):
15  @classmethod
16  def AddCommandLineArgs(cls, parser):
17    parser.add_option('-s', '--skp-outdir',
18                      help='Output directory for the SKP files')
19
20  @classmethod
21  def ProcessCommandLineArgs(cls, parser, args):
22    if not args.skp_outdir:
23      parser.error('Please specify --skp-outdir')
24    cls._skp_outdir = args.skp_outdir
25
26  def CustomizeBrowserOptions(self, options):
27    options.AppendExtraBrowserArgs(['--enable-gpu-benchmarking',
28                                    '--no-sandbox',
29                                    '--enable-deferred-image-decoding'])
30
31  def ValidateAndMeasurePage(self, page, tab, results):
32    if tab.browser.platform.GetOSName() in ['android', 'chromeos']:
33      raise page_test.MeasurementFailure(
34          'SkPicture printing not supported on this platform')
35
36    # Replace win32 path separator char '\' with '\\'.
37    outpath = os.path.abspath(
38        os.path.join(self._skp_outdir, page.file_safe_name))
39    js = _JS.format(outpath.replace('\\', '\\\\'))
40    tab.EvaluateJavaScript(js)
41    pictures = glob.glob(os.path.join(outpath, '*.skp'))
42    results.AddValue(scalar.ScalarValue(
43        results.current_page, 'saved_picture_count', 'count', len(pictures)))
44