Index: tools/telemetry/telemetry/page/page_set.py |
diff --git a/tools/telemetry/telemetry/page/page_set.py b/tools/telemetry/telemetry/page/page_set.py |
index 337553244dbb7557c38b5e07bc2236a2d20477f5..a3b40acd5de1292fd3808398d9e23a9bccb850f6 100644 |
--- a/tools/telemetry/telemetry/page/page_set.py |
+++ b/tools/telemetry/telemetry/page/page_set.py |
@@ -8,6 +8,7 @@ import os |
from telemetry.page import page as page_module |
from telemetry.page import page_set_archive_info |
+from telemetry.user_story import user_story_set |
from telemetry.util import cloud_storage |
PUBLIC_BUCKET = cloud_storage.PUBLIC_BUCKET |
@@ -19,11 +20,12 @@ class PageSetError(Exception): |
pass |
-class PageSet(object): |
+class PageSet(user_story_set.UserStorySet): |
def __init__(self, file_path=None, archive_data_file='', |
credentials_path=None, user_agent_type=None, |
make_javascript_deterministic=True, startup_url='', |
serving_dirs=None, bucket=None): |
+ super(PageSet, self).__init__() |
# The default value of file_path is location of the file that define this |
# page set instance's class. |
if file_path is None: |
@@ -40,7 +42,7 @@ class PageSet(object): |
self.make_javascript_deterministic = make_javascript_deterministic |
self._wpr_archive_info = None |
self.startup_url = startup_url |
- self.pages = [] |
+ self.user_stories = [] |
self.serving_dirs = set() |
serving_dirs = [] if serving_dirs is None else serving_dirs |
# Makes sure that page_set's serving_dirs are absolute paths |
@@ -54,26 +56,23 @@ class PageSet(object): |
else: |
raise ValueError("Pageset privacy bucket %s is invalid" % bucket) |
- @classmethod |
- def Name(cls): |
- return cls.__module__.split('.')[-1] |
+ @property |
+ def pages(self): |
+ return self.user_stories |
- @classmethod |
- def Description(cls): |
- if cls.__doc__: |
- return cls.__doc__.splitlines()[0] |
- else: |
- return '' |
+ def AddUserStory(self, user_story): |
+ assert isinstance(user_story, page_module.Page) |
+ assert user_story.page_set is self |
+ super(PageSet, self).AddUserStory(user_story) |
def AddPage(self, page): |
- assert page.page_set is self |
- self.pages.append(page) |
+ self.AddUserStory(page) |
def AddPageWithDefaultRunNavigate(self, page_url): |
""" Add a simple page with url equals to page_url that contains only default |
RunNavigateSteps. |
""" |
- self.AddPage(page_module.Page( |
+ self.AddUserStory(page_module.Page( |
page_url, self, self.base_dir)) |
@staticmethod |
@@ -109,7 +108,7 @@ class PageSet(object): |
self._wpr_archive_info = value |
def ContainsOnlyFileURLs(self): |
- for page in self.pages: |
+ for page in self.user_stories: |
if not page.is_file: |
return False |
return True |
@@ -117,10 +116,10 @@ class PageSet(object): |
def ReorderPageSet(self, results_file): |
"""Reorders this page set based on the results of a past run.""" |
page_set_dict = {} |
- for page in self.pages: |
+ for page in self.user_stories: |
page_set_dict[page.url] = page |
- pages = [] |
+ user_stories = [] |
with open(results_file, 'rb') as csv_file: |
csv_reader = csv.reader(csv_file) |
csv_header = csv_reader.next() |
@@ -136,21 +135,9 @@ class PageSet(object): |
else: |
raise Exception('Unusable results_file.') |
- return pages |
+ return user_stories |
def WprFilePathForPage(self, page): |
if not self.wpr_archive_info: |
return None |
return self.wpr_archive_info.WprFilePathForPage(page) |
- |
- def __iter__(self): |
- return self.pages.__iter__() |
- |
- def __len__(self): |
- return len(self.pages) |
- |
- def __getitem__(self, key): |
- return self.pages[key] |
- |
- def __setitem__(self, key, value): |
- self.pages[key] = value |