OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import optparse | 4 import optparse |
5 import sys | 5 import sys |
6 import shlex | 6 import shlex |
7 import logging | 7 import logging |
8 import copy | 8 import copy |
9 | 9 |
10 from telemetry import browser_finder | 10 from telemetry import browser_finder |
11 from telemetry import wpr_modes | 11 from telemetry import wpr_modes |
12 | 12 |
| 13 class ExtensionToLoad(object): |
| 14 def __init__(self, path, is_component): |
| 15 self.path = path |
| 16 self.is_component = is_component |
| 17 |
13 class BrowserOptions(optparse.Values): | 18 class BrowserOptions(optparse.Values): |
14 """Options to be used for discovering and launching a browser.""" | 19 """Options to be used for discovering and launching a browser.""" |
15 | 20 |
16 def __init__(self, browser_type=None): | 21 def __init__(self, browser_type=None): |
17 optparse.Values.__init__(self) | 22 optparse.Values.__init__(self) |
18 | 23 |
19 self.browser_type = browser_type | 24 self.browser_type = browser_type |
20 self.browser_executable = None | 25 self.browser_executable = None |
21 self.chrome_root = None | 26 self.chrome_root = None |
22 self.android_device = None | 27 self.android_device = None |
23 self.cros_ssh_identity = None | 28 self.cros_ssh_identity = None |
24 | 29 |
25 self.dont_override_profile = False | 30 self.dont_override_profile = False |
26 self.extra_browser_args = [] | 31 self.extra_browser_args = [] |
27 self.show_stdout = False | 32 self.show_stdout = False |
| 33 self.extensions_to_load = [] |
28 | 34 |
29 self.cros_remote = None | 35 self.cros_remote = None |
30 self.wpr_mode = wpr_modes.WPR_OFF | 36 self.wpr_mode = wpr_modes.WPR_OFF |
31 self.wpr_make_javascript_deterministic = True | 37 self.wpr_make_javascript_deterministic = True |
32 | 38 |
33 self.browser_user_agent_type = None | 39 self.browser_user_agent_type = None |
34 | 40 |
35 self.trace_dir = None | 41 self.trace_dir = None |
36 self.verbosity = 0 | 42 self.verbosity = 0 |
37 | 43 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 group = optparse.OptionGroup(parser, 'Browser options') | 85 group = optparse.OptionGroup(parser, 'Browser options') |
80 group.add_option('--dont-override-profile', action='store_true', | 86 group.add_option('--dont-override-profile', action='store_true', |
81 dest='dont_override_profile', | 87 dest='dont_override_profile', |
82 help='Uses the regular user profile instead of a clean one') | 88 help='Uses the regular user profile instead of a clean one') |
83 group.add_option('--extra-browser-args', | 89 group.add_option('--extra-browser-args', |
84 dest='extra_browser_args_as_string', | 90 dest='extra_browser_args_as_string', |
85 help='Additional arguments to pass to the browser when it starts') | 91 help='Additional arguments to pass to the browser when it starts') |
86 group.add_option('--show-stdout', | 92 group.add_option('--show-stdout', |
87 action='store_true', | 93 action='store_true', |
88 help='When possible, will display the stdout of the process') | 94 help='When possible, will display the stdout of the process') |
| 95 group.add_option('--load-component-extension', |
| 96 dest='component_extensions_to_load_as_string', |
| 97 help='Loads additional component extensions.') |
| 98 group.add_option('--load-extension', |
| 99 dest='extensions_to_load_as_string', |
| 100 help='Loads additional extension.') |
89 parser.add_option_group(group) | 101 parser.add_option_group(group) |
90 | 102 |
91 # Page set options | 103 # Page set options |
92 group = optparse.OptionGroup(parser, 'Page set options') | 104 group = optparse.OptionGroup(parser, 'Page set options') |
93 group.add_option('--page-repeat', dest='page_repeat', default=1, | 105 group.add_option('--page-repeat', dest='page_repeat', default=1, |
94 help='Number of times to repeat each individual ' + | 106 help='Number of times to repeat each individual ' + |
95 'page in the pageset before proceeding.') | 107 'page in the pageset before proceeding.') |
96 group.add_option('--pageset-repeat', dest='pageset_repeat', default=1, | 108 group.add_option('--pageset-repeat', dest='pageset_repeat', default=1, |
97 help='Number of times to repeat the entire pageset ' + | 109 help='Number of times to repeat the entire pageset ' + |
98 'before finishing.') | 110 'before finishing.') |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 if self.browser_type == 'list': | 154 if self.browser_type == 'list': |
143 types = browser_finder.GetAllAvailableBrowserTypes(self) | 155 types = browser_finder.GetAllAvailableBrowserTypes(self) |
144 sys.stderr.write('Available browsers:\n') | 156 sys.stderr.write('Available browsers:\n') |
145 sys.stdout.write(' %s\n' % '\n '.join(types)) | 157 sys.stdout.write(' %s\n' % '\n '.join(types)) |
146 sys.exit(1) | 158 sys.exit(1) |
147 if self.extra_browser_args_as_string: # pylint: disable=E1101 | 159 if self.extra_browser_args_as_string: # pylint: disable=E1101 |
148 tmp = shlex.split( | 160 tmp = shlex.split( |
149 self.extra_browser_args_as_string) # pylint: disable=E1101 | 161 self.extra_browser_args_as_string) # pylint: disable=E1101 |
150 self.extra_browser_args.extend(tmp) | 162 self.extra_browser_args.extend(tmp) |
151 delattr(self, 'extra_browser_args_as_string') | 163 delattr(self, 'extra_browser_args_as_string') |
| 164 if self.component_extensions_to_load_as_string: # pylint: disable=E1101 |
| 165 paths = self.component_extensions_to_load_as_string.split(',') |
| 166 self.extensions_to_load.extend( |
| 167 [ExtensionToLoad(ext_path, True) |
| 168 for ext_path in paths]) |
| 169 delattr(self, 'component_extensions_to_load_as_string') |
| 170 if self.extensions_to_load_as_string: # pylint: disable=E1101 |
| 171 paths = self.extensions_to_load_as_string.split(',') |
| 172 self.extensions_to_load.extend( |
| 173 [ExtensionToLoad(ext_path, False) |
| 174 for ext_path in paths]) |
| 175 delattr(self, 'component_extensions_to_load_as_string') |
152 return ret | 176 return ret |
153 parser.parse_args = ParseArgs | 177 parser.parse_args = ParseArgs |
154 return parser | 178 return parser |
155 | 179 |
156 def AppendExtraBrowserArg(self, arg): | 180 def AppendExtraBrowserArg(self, arg): |
157 if arg not in self.extra_browser_args: | 181 if arg not in self.extra_browser_args: |
158 self.extra_browser_args.append(arg) | 182 self.extra_browser_args.append(arg) |
OLD | NEW |