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 os | 5 import os |
6 import sys | 6 import sys |
7 import shlex | 7 import shlex |
8 import logging | 8 import logging |
9 | 9 |
10 from chrome_remote_control import browser_finder | 10 from chrome_remote_control import browser_finder |
11 | 11 |
12 class BrowserOptions(optparse.Values): | 12 class BrowserOptions(optparse.Values): |
13 """Options to be used for discovering and launching a browser.""" | 13 """Options to be used for discovering and launching a browser.""" |
14 | 14 |
15 def __init__(self, browser_type=None): | 15 def __init__(self, browser_type=None): |
16 optparse.Values.__init__(self) | 16 optparse.Values.__init__(self) |
17 | 17 |
18 self.browser_type = browser_type | 18 self.browser_type = browser_type |
19 self.browser_executable = None | 19 self.browser_executable = None |
20 self.chrome_root = None | 20 self.chrome_root = None |
21 self.android_device = None | 21 self.android_device = None |
22 | 22 |
23 self.dont_override_profile = False | 23 self.dont_override_profile = False |
24 self.extra_browser_args = [] | 24 self.extra_browser_args = [] |
25 self.show_stdout = False | 25 self.show_stdout = False |
26 | 26 |
| 27 self.cros_remote = None |
| 28 |
27 self.verbosity = 0 | 29 self.verbosity = 0 |
28 | 30 |
29 def Copy(self): | 31 def Copy(self): |
30 other = BrowserOptions() | 32 other = BrowserOptions() |
31 other.__dict__.update(self.__dict__) | 33 other.__dict__.update(self.__dict__) |
32 return other | 34 return other |
33 | 35 |
34 def CreateParser(self, *args, **kwargs): | 36 def CreateParser(self, *args, **kwargs): |
35 parser = optparse.OptionParser(*args, **kwargs) | 37 parser = optparse.OptionParser(*args, **kwargs) |
36 | 38 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 group = optparse.OptionGroup(parser, 'When things go wrong') | 80 group = optparse.OptionGroup(parser, 'When things go wrong') |
79 group.add_option( | 81 group.add_option( |
80 '-v', '--verbose', action='count', dest='verbosity', | 82 '-v', '--verbose', action='count', dest='verbosity', |
81 help='Increase verbosity level (repeat as needed)') | 83 help='Increase verbosity level (repeat as needed)') |
82 parser.add_option_group(group) | 84 parser.add_option_group(group) |
83 | 85 |
84 real_parse = parser.parse_args | 86 real_parse = parser.parse_args |
85 def ParseArgs(args=None): | 87 def ParseArgs(args=None): |
86 defaults = parser.get_default_values() | 88 defaults = parser.get_default_values() |
87 for k, v in defaults.__dict__.items(): | 89 for k, v in defaults.__dict__.items(): |
88 if k in self.__dict__: | 90 if k in self.__dict__ and self.__dict__[k] != None: |
89 continue | 91 continue |
90 self.__dict__[k] = v | 92 self.__dict__[k] = v |
91 ret = real_parse(args, self) | 93 ret = real_parse(args, self) # pylint: disable=E1121 |
92 | 94 |
93 if self.verbosity >= 2: | 95 if self.verbosity >= 2: |
94 logging.basicConfig(level=logging.DEBUG) | 96 logging.basicConfig(level=logging.DEBUG) |
95 elif self.verbosity: | 97 elif self.verbosity: |
96 logging.basicConfig(level=logging.INFO) | 98 logging.basicConfig(level=logging.INFO) |
97 else: | 99 else: |
98 logging.basicConfig(level=logging.WARNING) | 100 logging.basicConfig(level=logging.WARNING) |
99 | 101 |
100 if self.browser_executable and not self.browser_type: | 102 if self.browser_executable and not self.browser_type: |
101 self.browser_type = 'exact' | 103 self.browser_type = 'exact' |
102 if not self.browser_executable and not self.browser_type: | 104 if not self.browser_executable and not self.browser_type: |
103 sys.stderr.write('Must provide --browser=<type>. ' + | 105 sys.stderr.write('Must provide --browser=<type>. ' + |
104 'Use --browser=list for valid options.\n') | 106 'Use --browser=list for valid options.\n') |
105 sys.exit(1) | 107 sys.exit(1) |
106 if self.browser_type == 'list': | 108 if self.browser_type == 'list': |
107 types = browser_finder.GetAllAvailableBrowserTypes(self) | 109 types = browser_finder.GetAllAvailableBrowserTypes(self) |
108 sys.stderr.write('Available browsers:\n') | 110 sys.stderr.write('Available browsers:\n') |
109 sys.stdout.write(' %s\n' % '\n '.join(types)) | 111 sys.stdout.write(' %s\n' % '\n '.join(types)) |
110 sys.exit(1) | 112 sys.exit(1) |
111 if self.extra_browser_args_as_string: | 113 if self.extra_browser_args_as_string: # pylint: disable=E1101 |
112 tmp = shlex.split(self.extra_browser_args_as_string) | 114 tmp = shlex.split( |
| 115 self.extra_browser_args_as_string) # pylint: disable=E1101 |
113 self.extra_browser_args.extend(tmp) | 116 self.extra_browser_args.extend(tmp) |
114 delattr(self, 'extra_browser_args_as_string') | 117 delattr(self, 'extra_browser_args_as_string') |
115 return ret | 118 return ret |
116 parser.parse_args = ParseArgs | 119 parser.parse_args = ParseArgs |
117 return parser | 120 return parser |
118 | 121 |
119 """ | 122 # This global variable can be set to a BrowserOptions object by the test harness |
120 This global variable can be set to a BrowserOptions object by the test harness | 123 # to allow multiple unit tests to use a specific browser, in face of multiple |
121 to allow multiple unit tests to use a specific browser, in face of multiple | 124 # options. |
122 options. | |
123 """ | |
124 options_for_unittests = None | 125 options_for_unittests = None |
OLD | NEW |