Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 """PyAuto: Python Interface to Chromium's Automation Proxy. | 7 """PyAuto: Python Interface to Chromium's Automation Proxy. |
| 8 | 8 |
| 9 PyAuto uses swig to expose Automation Proxy interfaces to Python. | 9 PyAuto uses swig to expose Automation Proxy interfaces to Python. |
| 10 For complete documentation on the functionality available, | 10 For complete documentation on the functionality available, |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 464 windex: 0-based window index on which to work. Default: 0 (first window) | 464 windex: 0-based window index on which to work. Default: 0 (first window) |
| 465 Use -ve windex if the automation command does not apply to a | 465 Use -ve windex if the automation command does not apply to a |
| 466 browser window. example: chromeos login | 466 browser window. example: chromeos login |
| 467 | 467 |
| 468 Returns: | 468 Returns: |
| 469 a dictionary for the output returned by the automation channel. | 469 a dictionary for the output returned by the automation channel. |
| 470 | 470 |
| 471 Raises: | 471 Raises: |
| 472 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 472 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
| 473 """ | 473 """ |
| 474 ret_dict = json.loads(self._SendJSONRequest(windex, json.dumps(cmd_dict))) | 474 result = self._SendJSONRequest(windex, json.dumps(cmd_dict)) |
| 475 if len(result) == 0: | |
| 476 raise JSONInterfaceError('Automation call received no response.') | |
| 477 ret_dict = json.loads(result) | |
| 475 if ret_dict.has_key('error'): | 478 if ret_dict.has_key('error'): |
| 476 raise JSONInterfaceError(ret_dict['error']) | 479 raise JSONInterfaceError(ret_dict['error']) |
| 477 return ret_dict | 480 return ret_dict |
| 478 | 481 |
| 479 def GetBookmarkModel(self): | 482 def GetBookmarkModel(self): |
| 480 """Return the bookmark model as a BookmarkModel object. | 483 """Return the bookmark model as a BookmarkModel object. |
| 481 | 484 |
| 482 This is a snapshot of the bookmark model; it is not a proxy and | 485 This is a snapshot of the bookmark model; it is not a proxy and |
| 483 does not get updated as the bookmark model changes. | 486 does not get updated as the bookmark model changes. |
| 484 """ | 487 """ |
| (...skipping 1796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2281 Sample: | 2284 Sample: |
| 2282 | 2285 |
| 2283 { u'is_logged_in': True, | 2286 { u'is_logged_in': True, |
| 2284 u'is_guest': False, | 2287 u'is_guest': False, |
| 2285 u'is_screen_locked': False} | 2288 u'is_screen_locked': False} |
| 2286 | 2289 |
| 2287 Raises: | 2290 Raises: |
| 2288 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 2291 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
| 2289 """ | 2292 """ |
| 2290 cmd_dict = { 'command': 'GetLoginInfo' } | 2293 cmd_dict = { 'command': 'GetLoginInfo' } |
| 2291 return self._GetResultFromJSONRequest(cmd_dict) | 2294 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
| 2292 | 2295 |
| 2293 def LoginAsGuest(self): | 2296 def LoginAsGuest(self): |
| 2294 """Login to chromeos as a guest user. | 2297 """Login to chromeos as a guest user. |
| 2295 | 2298 |
| 2296 Waits until logged in. | 2299 Waits until logged in. |
| 2297 Should be displaying the login screen to work. | 2300 Should be displaying the login screen to work. |
| 2298 | 2301 |
| 2299 Raises: | 2302 Raises: |
| 2300 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 2303 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
| 2301 """ | 2304 """ |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2370 | 2373 |
| 2371 def GetNetworkInfo(self): | 2374 def GetNetworkInfo(self): |
| 2372 """Get details about ethernet, wifi, and cellular networks on chromeos. | 2375 """Get details about ethernet, wifi, and cellular networks on chromeos. |
| 2373 | 2376 |
| 2374 Raises: | 2377 Raises: |
| 2375 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 2378 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
| 2376 """ | 2379 """ |
| 2377 cmd_dict = { 'command': 'GetNetworkInfo' } | 2380 cmd_dict = { 'command': 'GetNetworkInfo' } |
| 2378 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) | 2381 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
| 2379 | 2382 |
| 2383 def NetworkScan(self): | |
| 2384 """Causes ChromeOS to scan for available wifi networks. | |
| 2385 | |
| 2386 Blocks until scanning is complete. | |
| 2387 | |
| 2388 Raises: | |
| 2389 pyauto_errors.JSONInterfaceError if the automation call returns an error. | |
| 2390 """ | |
| 2391 cmd_dict = { 'command': 'NetworkScan' } | |
| 2392 self._GetResultFromJSONRequest(cmd_dict, windex=-1) | |
| 2393 | |
| 2394 CONNECTION_ERROR_UNKNOWN = 0 | |
| 2395 CONNECTION_ERROR_OUT_OF_RANGE = 1 | |
| 2396 CONNECTION_ERROR_PIN_MISSING = 2 | |
| 2397 CONNECTION_ERROR_DHCP_FAILED = 3 | |
| 2398 CONNECTION_ERROR_CONNECT_FAILED = 4 | |
| 2399 CONNECTION_ERROR_BAD_PASSPHRASE = 5 | |
| 2400 CONNECTION_ERROR_BAD_WEPKEY = 6 | |
| 2401 CONNECTION_ERROR_ACTIVATION_FAILED = 7 | |
| 2402 CONNECTION_ERROR_NEED_EVDO = 8 | |
| 2403 CONNECTION_ERROR_NEED_HOME_NETWORK = 9 | |
| 2404 CONNECTION_ERROR_OTASP_FAILED = 10 | |
| 2405 CONNECTION_ERROR_AAA_FAILED = 11 | |
| 2406 | |
| 2380 def ConnectToWifiNetwork(self, service_path, | 2407 def ConnectToWifiNetwork(self, service_path, |
| 2381 password='', identity='', certpath=''): | 2408 password='', identity='', certpath=''): |
| 2382 """Connect to a wifi network by its service path. | 2409 """Connect to a wifi network by its service path. |
| 2383 | 2410 |
| 2411 Blocks until connection suceeds or fails. | |
|
dennis_jeffrey
2011/03/24 23:48:54
"suceeds" --> "succeeds"
dtu
2011/03/25 22:22:11
Done.
| |
| 2412 | |
| 2413 Returns: | |
| 2414 A tuple. The first element is True on success and False on failure. | |
| 2415 The second element contains an integer error code in case of failure. | |
|
stanleyw
2011/03/24 23:16:03
Rewrite as integer is too cumbersome to decode
dtu
2011/03/25 22:22:11
Done. Using string error messages instead and comm
stanleyw
2011/03/25 22:40:03
What are the possible values of error strings? Or
| |
| 2416 | |
| 2384 Raises: | 2417 Raises: |
| 2385 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 2418 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
| 2386 """ | 2419 """ |
| 2387 cmd_dict = { | 2420 cmd_dict = { |
| 2388 'command': 'ConnectToWifiNetwork', | 2421 'command': 'ConnectToWifiNetwork', |
| 2389 'service_path': service_path, | 2422 'service_path': service_path, |
| 2390 'password': password, | 2423 'password': password, |
| 2391 'identity': identity, | 2424 'identity': identity, |
| 2392 'certpath': certpath, | 2425 'certpath': certpath, |
| 2393 } | 2426 } |
| 2394 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) | 2427 result = self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
| 2428 if result.has_key('error_code'): | |
| 2429 return (False, result['error_code']) | |
|
stanleyw
2011/03/24 23:16:03
result['error_code'] is too cumbersome to decode
dtu
2011/03/25 22:22:11
It's decoded for you, a caller of this function wi
| |
| 2430 else: | |
| 2431 return (True, None) | |
| 2432 | |
| 2433 def DisconnectFromWifiNetwork(self, service_path, | |
| 2434 password='', identity='', certpath=''): | |
|
dennis_jeffrey
2011/03/24 23:48:54
Indent underneath first parameter in the previous
dtu
2011/03/25 22:22:11
Done.
| |
| 2435 """Disconnect from a wifi network by its service path. | |
| 2436 | |
| 2437 Blocks until disconnect is complete. | |
| 2438 | |
| 2439 Raises: | |
| 2440 pyauto_errors.JSONInterfaceError if the automation call returns an error. | |
| 2441 """ | |
| 2442 cmd_dict = { | |
| 2443 'command': 'DisconnectFromWifiNetwork', | |
| 2444 'service_path': service_path, | |
| 2445 } | |
| 2446 self._GetResultFromJSONRequest(cmd_dict, windex=-1) | |
| 2395 | 2447 |
| 2396 ## ChromeOS section -- end | 2448 ## ChromeOS section -- end |
| 2397 | 2449 |
| 2398 | 2450 |
| 2399 class PyUITestSuite(pyautolib.PyUITestSuiteBase, unittest.TestSuite): | 2451 class PyUITestSuite(pyautolib.PyUITestSuiteBase, unittest.TestSuite): |
| 2400 """Base TestSuite for PyAuto UI tests.""" | 2452 """Base TestSuite for PyAuto UI tests.""" |
| 2401 | 2453 |
| 2402 def __init__(self, args): | 2454 def __init__(self, args): |
| 2403 pyautolib.PyUITestSuiteBase.__init__(self, args) | 2455 pyautolib.PyUITestSuiteBase.__init__(self, args) |
| 2404 | 2456 |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2784 if self._options.verbose: | 2836 if self._options.verbose: |
| 2785 verbosity = 2 | 2837 verbosity = 2 |
| 2786 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite) | 2838 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite) |
| 2787 del loaded_tests # Need to destroy test cases before the suite | 2839 del loaded_tests # Need to destroy test cases before the suite |
| 2788 del pyauto_suite | 2840 del pyauto_suite |
| 2789 sys.exit(not result.wasSuccessful()) | 2841 sys.exit(not result.wasSuccessful()) |
| 2790 | 2842 |
| 2791 | 2843 |
| 2792 if __name__ == '__main__': | 2844 if __name__ == '__main__': |
| 2793 Main() | 2845 Main() |
| OLD | NEW |