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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 group = optparse.OptionGroup(parser, 'Browser options') | 80 group = optparse.OptionGroup(parser, 'Browser options') |
75 group.add_option('--dont-override-profile', action='store_true', | 81 group.add_option('--dont-override-profile', action='store_true', |
76 dest='dont_override_profile', | 82 dest='dont_override_profile', |
77 help='Uses the regular user profile instead of a clean one') | 83 help='Uses the regular user profile instead of a clean one') |
78 group.add_option('--extra-browser-args', | 84 group.add_option('--extra-browser-args', |
79 dest='extra_browser_args_as_string', | 85 dest='extra_browser_args_as_string', |
80 help='Additional arguments to pass to the browser when it starts') | 86 help='Additional arguments to pass to the browser when it starts') |
81 group.add_option('--show-stdout', | 87 group.add_option('--show-stdout', |
82 action='store_true', | 88 action='store_true', |
83 help='When possible, will display the stdout of the process') | 89 help='When possible, will display the stdout of the process') |
| 90 group.add_option('--load-component-extension', |
| 91 dest='component_extensions_to_load_as_string', |
| 92 help='Loads additional component extensions.') |
| 93 group.add_option('--load-extension', |
| 94 dest='extensions_to_load_as_string', |
| 95 help='Loads additional extension.') |
84 parser.add_option_group(group) | 96 parser.add_option_group(group) |
85 | 97 |
86 # Page set options | 98 # Page set options |
87 group = optparse.OptionGroup(parser, 'Page set options') | 99 group = optparse.OptionGroup(parser, 'Page set options') |
88 group.add_option('--page-repeat', dest='page_repeat', default=1, | 100 group.add_option('--page-repeat', dest='page_repeat', default=1, |
89 help='Number of times to repeat each individual ' + | 101 help='Number of times to repeat each individual ' + |
90 'page in the pageset before proceeding.') | 102 'page in the pageset before proceeding.') |
91 group.add_option('--pageset-repeat', dest='pageset_repeat', default=1, | 103 group.add_option('--pageset-repeat', dest='pageset_repeat', default=1, |
92 help='Number of times to repeat the entire pageset ' + | 104 help='Number of times to repeat the entire pageset ' + |
93 'before finishing.') | 105 'before finishing.') |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 if self.browser_type == 'list': | 147 if self.browser_type == 'list': |
136 types = browser_finder.GetAllAvailableBrowserTypes(self) | 148 types = browser_finder.GetAllAvailableBrowserTypes(self) |
137 sys.stderr.write('Available browsers:\n') | 149 sys.stderr.write('Available browsers:\n') |
138 sys.stdout.write(' %s\n' % '\n '.join(types)) | 150 sys.stdout.write(' %s\n' % '\n '.join(types)) |
139 sys.exit(1) | 151 sys.exit(1) |
140 if self.extra_browser_args_as_string: # pylint: disable=E1101 | 152 if self.extra_browser_args_as_string: # pylint: disable=E1101 |
141 tmp = shlex.split( | 153 tmp = shlex.split( |
142 self.extra_browser_args_as_string) # pylint: disable=E1101 | 154 self.extra_browser_args_as_string) # pylint: disable=E1101 |
143 self.extra_browser_args.extend(tmp) | 155 self.extra_browser_args.extend(tmp) |
144 delattr(self, 'extra_browser_args_as_string') | 156 delattr(self, 'extra_browser_args_as_string') |
| 157 if self.component_extensions_to_load_as_string: # pylint: disable=E1101 |
| 158 paths = self.component_extensions_to_load_as_string.split(',') |
| 159 self.extensions_to_load.extend( |
| 160 [ExtensionToLoad(ext_path, True) |
| 161 for ext_path in paths]) |
| 162 delattr(self, 'component_extensions_to_load_as_string') |
| 163 if self.extensions_to_load_as_string: # pylint: disable=E1101 |
| 164 paths = self.extensions_to_load_as_string.split(',') |
| 165 self.extensions_to_load.extend( |
| 166 [ExtensionToLoad(ext_path, False) |
| 167 for ext_path in paths]) |
| 168 delattr(self, 'component_extensions_to_load_as_string') |
145 return ret | 169 return ret |
146 parser.parse_args = ParseArgs | 170 parser.parse_args = ParseArgs |
147 return parser | 171 return parser |
148 | 172 |
149 def AppendExtraBrowserArg(self, arg): | 173 def AppendExtraBrowserArg(self, arg): |
150 if arg not in self.extra_browser_args: | 174 if arg not in self.extra_browser_args: |
151 self.extra_browser_args.append(arg) | 175 self.extra_browser_args.append(arg) |
OLD | NEW |