|  | # Copyright 2015 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 core import perf_benchmark | 
|  | from measurements import startup | 
|  | import page_sets | 
|  | from telemetry import benchmark | 
|  |  | 
|  |  | 
|  | class _StartWithExt(perf_benchmark.PerfBenchmark): | 
|  | """Base benchmark for testing startup with extensions.""" | 
|  | page_set = page_sets.BlankPageSetWithExtensionProfile | 
|  | tag = None | 
|  |  | 
|  | @classmethod | 
|  | def Name(cls): | 
|  | return 'start_with_ext.blank_page' | 
|  |  | 
|  | @classmethod | 
|  | def ValueCanBeAddedPredicate(cls, _, is_first_result): | 
|  | return not is_first_result | 
|  |  | 
|  | def SetExtraBrowserOptions(self, options): | 
|  | options.disable_default_apps = False | 
|  |  | 
|  | def CreatePageTest(self, _): | 
|  | is_cold = (self.tag == 'cold') | 
|  | return startup.Startup(cold=is_cold) | 
|  |  | 
|  |  | 
|  | @benchmark.Enabled('has tabs') | 
|  | @benchmark.Disabled('mac')  # crbug.com/563424 | 
|  | @benchmark.Disabled('win', 'linux', 'reference', 'android') | 
|  | class StartWithExtCold(_StartWithExt): | 
|  | """Measure time to start Chrome cold with extensions.""" | 
|  | options = {'pageset_repeat': 5} | 
|  | tag = 'cold' | 
|  |  | 
|  | @classmethod | 
|  | def Name(cls): | 
|  | return 'start_with_ext.cold.blank_page' | 
|  |  | 
|  |  | 
|  | @benchmark.Enabled('has tabs') | 
|  | @benchmark.Disabled('mac')  # crbug.com/563424 | 
|  | @benchmark.Disabled('win', 'linux', 'reference', 'android') | 
|  | class StartWithExtWarm(_StartWithExt): | 
|  | """Measure time to start Chrome warm with extensions.""" | 
|  | options = {'pageset_repeat': 20} | 
|  | tag = 'warm' | 
|  |  | 
|  | @classmethod | 
|  | def Name(cls): | 
|  | return 'start_with_ext.warm.blank_page' |