Index: tools/telemetry/telemetry/page/__init__.py |
diff --git a/tools/telemetry/telemetry/page/__init__.py b/tools/telemetry/telemetry/page/__init__.py |
deleted file mode 100644 |
index b814086ada86b5c18321e86fb3e0f4679a777603..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/page/__init__.py |
+++ /dev/null |
@@ -1,208 +0,0 @@ |
-# Copyright 2012 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 inspect |
-import logging |
-import os |
-import urlparse |
- |
-from catapult_base import cloud_storage # pylint: disable=import-error |
- |
-from telemetry import story |
-from telemetry.page import shared_page_state |
-from telemetry.page import action_runner as action_runner_module |
- |
- |
-class Page(story.Story): |
- |
- def __init__(self, url, page_set=None, base_dir=None, name='', |
- credentials_path=None, |
- credentials_bucket=cloud_storage.PUBLIC_BUCKET, labels=None, |
- startup_url='', make_javascript_deterministic=True, |
- shared_page_state_class=shared_page_state.SharedPageState): |
- self._url = url |
- |
- super(Page, self).__init__( |
- shared_page_state_class, name=name, labels=labels, |
- is_local=self._scheme in ['file', 'chrome', 'about'], |
- make_javascript_deterministic=make_javascript_deterministic) |
- |
- self._page_set = page_set |
- # Default value of base_dir is the directory of the file that defines the |
- # class of this page instance. |
- if base_dir is None: |
- base_dir = os.path.dirname(inspect.getfile(self.__class__)) |
- self._base_dir = base_dir |
- self._name = name |
- if credentials_path: |
- credentials_path = os.path.join(self._base_dir, credentials_path) |
- cloud_storage.GetIfChanged(credentials_path, credentials_bucket) |
- if not os.path.exists(credentials_path): |
- logging.error('Invalid credentials path: %s' % credentials_path) |
- credentials_path = None |
- self._credentials_path = credentials_path |
- |
- # Whether to collect garbage on the page before navigating & performing |
- # page actions. |
- self._collect_garbage_before_run = True |
- |
- # These attributes can be set dynamically by the page. |
- self.synthetic_delays = dict() |
- self._startup_url = startup_url |
- self.credentials = None |
- self.skip_waits = False |
- self.script_to_evaluate_on_commit = None |
- self._SchemeErrorCheck() |
- |
- @property |
- def credentials_path(self): |
- return self._credentials_path |
- |
- @property |
- def startup_url(self): |
- return self._startup_url |
- |
- def _SchemeErrorCheck(self): |
- if not self._scheme: |
- raise ValueError('Must prepend the URL with scheme (e.g. file://)') |
- |
- if self.startup_url: |
- startup_url_scheme = urlparse.urlparse(self.startup_url).scheme |
- if not startup_url_scheme: |
- raise ValueError('Must prepend the URL with scheme (e.g. http://)') |
- if startup_url_scheme == 'file': |
- raise ValueError('startup_url with local file scheme is not supported') |
- |
- def Run(self, shared_state): |
- current_tab = shared_state.current_tab |
- # Collect garbage from previous run several times to make the results more |
- # stable if needed. |
- if self._collect_garbage_before_run: |
- for _ in xrange(0, 5): |
- current_tab.CollectGarbage() |
- shared_state.page_test.WillNavigateToPage(self, current_tab) |
- shared_state.page_test.RunNavigateSteps(self, current_tab) |
- shared_state.page_test.DidNavigateToPage(self, current_tab) |
- action_runner = action_runner_module.ActionRunner( |
- current_tab, skip_waits=self.skip_waits) |
- self.RunPageInteractions(action_runner) |
- |
- def RunNavigateSteps(self, action_runner): |
- url = self.file_path_url_with_scheme if self.is_file else self.url |
- action_runner.Navigate( |
- url, script_to_evaluate_on_commit=self.script_to_evaluate_on_commit) |
- |
- def RunPageInteractions(self, action_runner): |
- """Override this to define custom interactions with the page. |
- e.g: |
- def RunPageInteractions(self, action_runner): |
- action_runner.ScrollPage() |
- action_runner.TapElement(text='Next') |
- """ |
- pass |
- |
- def AsDict(self): |
- """Converts a page object to a dict suitable for JSON output.""" |
- d = { |
- 'id': self._id, |
- 'url': self._url, |
- } |
- if self._name: |
- d['name'] = self._name |
- return d |
- |
- @property |
- def story_set(self): |
- return self._page_set |
- |
- # TODO(nednguyen, aiolos): deprecate this property. |
- @property |
- def page_set(self): |
- return self._page_set |
- |
- @property |
- def url(self): |
- return self._url |
- |
- def GetSyntheticDelayCategories(self): |
- result = [] |
- for delay, options in self.synthetic_delays.items(): |
- options = '%f;%s' % (options.get('target_duration', 0), |
- options.get('mode', 'static')) |
- result.append('DELAY(%s;%s)' % (delay, options)) |
- return result |
- |
- def __lt__(self, other): |
- return self.url < other.url |
- |
- def __cmp__(self, other): |
- x = cmp(self.name, other.name) |
- if x != 0: |
- return x |
- return cmp(self.url, other.url) |
- |
- def __str__(self): |
- return self.url |
- |
- def AddCustomizeBrowserOptions(self, options): |
- """ Inherit page overrides this to add customized browser options.""" |
- pass |
- |
- @property |
- def _scheme(self): |
- return urlparse.urlparse(self.url).scheme |
- |
- @property |
- def is_file(self): |
- """Returns True iff this URL points to a file.""" |
- return self._scheme == 'file' |
- |
- @property |
- def file_path(self): |
- """Returns the path of the file, stripping the scheme and query string.""" |
- assert self.is_file |
- # Because ? is a valid character in a filename, |
- # we have to treat the URL as a non-file by removing the scheme. |
- parsed_url = urlparse.urlparse(self.url[7:]) |
- return os.path.normpath(os.path.join( |
- self._base_dir, parsed_url.netloc + parsed_url.path)) |
- |
- @property |
- def base_dir(self): |
- return self._base_dir |
- |
- @property |
- def file_path_url(self): |
- """Returns the file path, including the params, query, and fragment.""" |
- assert self.is_file |
- file_path_url = os.path.normpath( |
- os.path.join(self._base_dir, self.url[7:])) |
- # Preserve trailing slash or backslash. |
- # It doesn't matter in a file path, but it does matter in a URL. |
- if self.url.endswith('/'): |
- file_path_url += os.sep |
- return file_path_url |
- |
- @property |
- def file_path_url_with_scheme(self): |
- return 'file://' + self.file_path_url |
- |
- @property |
- def serving_dir(self): |
- if not self.is_file: |
- return None |
- file_path = os.path.realpath(self.file_path) |
- if os.path.isdir(file_path): |
- return file_path |
- else: |
- return os.path.dirname(file_path) |
- |
- @property |
- def display_name(self): |
- if self.name: |
- return self.name |
- if not self.is_file: |
- return self.url |
- all_urls = [p.url.rstrip('/') for p in self.page_set if p.is_file] |
- common_prefix = os.path.dirname(os.path.commonprefix(all_urls)) |
- return self.url[len(common_prefix):].strip('/') |