| # Copyright 2018 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import six |
| |
| from page_sets.rendering import story_tags |
| from page_sets.system_health import platforms |
| |
| from telemetry.page import page |
| |
| |
| class _MetaRenderingStory(type): |
| """Metaclass for RenderingStory.""" |
| |
| @property |
| def ABSTRACT_STORY(cls): |
| """Class field marking whether the class is abstract. |
| |
| If true, the page will NOT be instantiated and added to a Rendering |
| page set. This field is NOT inherited by subclasses (that's why it's |
| defined on the metaclass). |
| """ |
| return cls.__dict__.get('ABSTRACT_STORY', False) |
| |
| |
| class RenderingStory(six.with_metaclass(_MetaRenderingStory, page.Page)): |
| """Abstract base class for Rendering user stories.""" |
| |
| BASE_NAME = NotImplemented |
| URL = NotImplemented |
| ABSTRACT_STORY = True |
| SUPPORTED_PLATFORMS = platforms.ALL_PLATFORMS |
| TAGS =[] |
| PLATFORM_SPECIFIC = False |
| YEAR = None |
| DISABLE_TRACING = False |
| EXTRA_BROWSER_ARGUMENTS = None |
| |
| def __init__(self, |
| page_set, |
| shared_page_state_class, |
| name_suffix='', |
| extra_browser_args=None, |
| make_javascript_deterministic=True, |
| base_dir=None, |
| perform_final_navigation=True): |
| tags = [] |
| for t in self.TAGS: |
| assert t in story_tags.ALL_TAGS |
| tags.append(t.name) |
| name = self.BASE_NAME + name_suffix |
| if self.YEAR: |
| name += ('_' + self.YEAR) |
| super(RenderingStory, self).__init__( |
| page_set=page_set, |
| name=name, |
| url=self.URL, |
| tags=tags, |
| platform_specific=self.PLATFORM_SPECIFIC, |
| shared_page_state_class=shared_page_state_class, |
| extra_browser_args=extra_browser_args, |
| make_javascript_deterministic=make_javascript_deterministic, |
| base_dir=base_dir, |
| perform_final_navigation=perform_final_navigation) |
| |
| def WillStartTracing(self, chrome_trace_config): |
| chrome_trace_config.category_filter.AddIncludedCategory('benchmark') |
| chrome_trace_config.category_filter.AddIncludedCategory('v8') |