Index: tools/telemetry/telemetry/page_filter.py |
diff --git a/tools/telemetry/telemetry/page_filter.py b/tools/telemetry/telemetry/page_filter.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0aaa68e522c657900ea38407dcf37294c90fd554 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/page_filter.py |
@@ -0,0 +1,40 @@ |
+# Copyright (c) 2013 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 optparse |
+import re |
+ |
+class PageFilter(object): |
+ """Filters pages in the page set based on command line flags.""" |
+ |
+ def __init__(self, options): |
+ if options.page_filter: |
+ try: |
+ self._page_regex = re.compile(options.page_filter) |
+ except re.error: |
+ raise Exception('--page-filter: invalid regex') |
+ else: |
+ self._page_regex = None |
+ |
+ if options.page_filter_exclude: |
+ try: |
+ self._page_exclude_regex = re.compile(options.page_filter_exclude) |
+ except re.error: |
+ raise Exception('--page-filter-exclude: invalid regex') |
+ else: |
+ self._page_exclude_regex = None |
+ |
+ def IsSelected(self, page): |
+ if self._page_exclude_regex and self._page_exclude_regex.search(page.url): |
+ return False |
+ if self._page_regex: |
+ return self._page_regex.search(page.url) |
+ |
+ @staticmethod |
+ def AddCommandLineOptions(parser): |
+ group = optparse.OptionGroup(parser, 'Page filtering options') |
+ group.add_option('--page-filter', dest='page_filter', |
+ help='Use only pages whose URLs match the given filter regexp.') |
+ group.add_option('--page-filter-exclude', dest='page_filter_exclude', |
+ help='Exclude pages whose URLs match the given filter regexp.') |
+ parser.add_option_group(group) |