Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/test/pyautolib/pyauto.py

Issue 23503040: Remove all NetworkLibrary dependencies from AutomationTestingProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/pyautolib/chromeos_network.py ('k') | chrome/test/pyautolib/pyautolib.i » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """PyAuto: Python Interface to Chromium's Automation Proxy. 6 """PyAuto: Python Interface to Chromium's Automation Proxy.
7 7
8 PyAuto uses swig to expose Automation Proxy interfaces to Python. 8 PyAuto uses swig to expose Automation Proxy interfaces to Python.
9 For complete documentation on the functionality available, 9 For complete documentation on the functionality available,
10 run pydoc on this file. 10 run pydoc on this file.
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 'channel on first attempt. Something went very ' 201 'channel on first attempt. Something went very '
202 'wrong. Chrome probably did not launch.') 202 'wrong. Chrome probably did not launch.')
203 203
204 # Forcibly trigger all plugins to get registered. crbug.com/94123 204 # Forcibly trigger all plugins to get registered. crbug.com/94123
205 # Sometimes flash files loaded too quickly after firing browser 205 # Sometimes flash files loaded too quickly after firing browser
206 # ends up getting downloaded, which seems to indicate that the plugin 206 # ends up getting downloaded, which seems to indicate that the plugin
207 # hasn't been registered yet. 207 # hasn't been registered yet.
208 if not self.IsChromeOS(): 208 if not self.IsChromeOS():
209 self.GetPluginsInfo() 209 self.GetPluginsInfo()
210 210
211 # TODO(dtu): Remove this after crosbug.com/4558 is fixed.
212 if self.IsChromeOS():
213 self.WaitUntil(lambda: not self.GetNetworkInfo()['offline_mode'])
214
215 if (self.IsChromeOS() and not self.GetLoginInfo()['is_logged_in'] and 211 if (self.IsChromeOS() and not self.GetLoginInfo()['is_logged_in'] and
216 self.ShouldOOBESkipToLogin()): 212 self.ShouldOOBESkipToLogin()):
217 if self.GetOOBEScreenInfo()['screen_name'] != 'login': 213 if self.GetOOBEScreenInfo()['screen_name'] != 'login':
218 self.SkipToLogin() 214 self.SkipToLogin()
219 if self.ShouldAutoLogin(): 215 if self.ShouldAutoLogin():
220 # Login with default creds. 216 # Login with default creds.
221 sys.path.append('/usr/local') # to import autotest libs 217 sys.path.append('/usr/local') # to import autotest libs
222 from autotest.cros import constants 218 from autotest.cros import constants
223 creds = constants.CREDENTIALS['$default'] 219 creds = constants.CREDENTIALS['$default']
224 self.Login(creds[0], creds[1]) 220 self.Login(creds[0], creds[1])
(...skipping 4264 matching lines...) Expand 10 before | Expand all | Expand 10 after
4489 panel = {} 4485 panel = {}
4490 panels.append(panel) 4486 panels.append(panel)
4491 tab = browser['tabs'][0] 4487 tab = browser['tabs'][0]
4492 panel['incognito'] = browser['incognito'] 4488 panel['incognito'] = browser['incognito']
4493 panel['renderer_pid'] = tab['renderer_pid'] 4489 panel['renderer_pid'] = tab['renderer_pid']
4494 panel['title'] = self.GetActiveTabTitle(browser['index']) 4490 panel['title'] = self.GetActiveTabTitle(browser['index'])
4495 panel['url'] = tab['url'] 4491 panel['url'] = tab['url']
4496 4492
4497 return panels 4493 return panels
4498 4494
4499 def GetNetworkInfo(self):
4500 """Get details about ethernet, wifi, and cellular networks on chromeos.
4501
4502 Returns:
4503 A dictionary.
4504 Sample:
4505 { u'cellular_available': True,
4506 u'cellular_enabled': False,
4507 u'connected_ethernet': u'/service/ethernet_abcd',
4508 u'connected_wifi': u'/service/wifi_abcd_1234_managed_none',
4509 u'ethernet_available': True,
4510 u'ethernet_enabled': True,
4511 u'ethernet_networks':
4512 { u'/service/ethernet_abcd':
4513 { u'device_path': u'/device/abcdeth',
4514 u'name': u'',
4515 u'service_path':
4516 u'/profile/default/ethernet_abcd',
4517 u'status': u'Connected'}
4518 u'network_type': pyautolib.TYPE_ETHERNET },
4519 u'remembered_wifi':
4520 { u'/service/wifi_abcd_1234_managed_none':
4521 { u'device_path': u'',
4522 u'encrypted': False,
4523 u'encryption': u'',
4524 u'name': u'WifiNetworkName1',
4525 u'status': u'Unknown',
4526 u'strength': 0},
4527 u'network_type': pyautolib.TYPE_WIFI
4528 },
4529 u'wifi_available': True,
4530 u'wifi_enabled': True,
4531 u'wifi_networks':
4532 { u'/service/wifi_abcd_1234_managed_none':
4533 { u'device_path': u'/device/abcdwifi',
4534 u'encrypted': False,
4535 u'encryption': u'',
4536 u'name': u'WifiNetworkName1',
4537 u'status': u'Connected',
4538 u'strength': 76},
4539 u'/service/wifi_abcd_1234_managed_802_1x':
4540 { u'encrypted': True,
4541 u'encryption': u'8021X',
4542 u'name': u'WifiNetworkName2',
4543 u'status': u'Idle',
4544 u'strength': 79}
4545 u'network_type': pyautolib.TYPE_WIFI }}
4546
4547
4548 Raises:
4549 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4550 """
4551 cmd_dict = { 'command': 'GetNetworkInfo' }
4552 network_info = self._GetResultFromJSONRequest(cmd_dict, windex=None)
4553
4554 # Remembered networks do not have /service/ prepended to the service path
4555 # even though wifi_networks does. We want this prepended to allow for
4556 # consistency and easy string comparison with wifi_networks.
4557 remembered_wifi = {}
4558 network_info['remembered_wifi'] = dict([('/service/' + k, v) for k, v in
4559 network_info['remembered_wifi'].iteritems()])
4560
4561 return network_info
4562
4563 def NetworkScan(self):
4564 """Causes ChromeOS to scan for available wifi networks.
4565
4566 Blocks until scanning is complete.
4567
4568 Returns:
4569 The new list of networks obtained from GetNetworkInfo().
4570
4571 Raises:
4572 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4573 """
4574 cmd_dict = { 'command': 'NetworkScan' }
4575 self._GetResultFromJSONRequest(cmd_dict, windex=None)
4576 return self.GetNetworkInfo()
4577
4578 def ToggleNetworkDevice(self, device, enable):
4579 """Enable or disable a network device on ChromeOS.
4580
4581 Valid device names are ethernet, wifi, cellular.
4582
4583 Raises:
4584 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4585 """
4586 cmd_dict = {
4587 'command': 'ToggleNetworkDevice',
4588 'device': device,
4589 'enable': enable,
4590 }
4591 return self._GetResultFromJSONRequest(cmd_dict, windex=None)
4592
4593 def ForgetAllRememberedNetworks(self):
4594 """Forgets all networks that the device has marked as remembered."""
4595 for service in self.GetNetworkInfo()['remembered_wifi']:
4596 self.ForgetWifiNetwork(service)
4597
4598 def ForgetWifiNetwork(self, service_path):
4599 """Forget a remembered network by its service path.
4600
4601 This function is equivalent to clicking the 'Forget Network' button in the
4602 chrome://settings/internet page. This function does not indicate whether
4603 or not forget succeeded or failed. It is up to the caller to call
4604 GetNetworkInfo to check the updated remembered_wifi list to verify the
4605 service has been removed.
4606
4607 Args:
4608 service_path: Flimflam path that defines the remembered network.
4609
4610 Raises:
4611 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4612 """
4613 # Usually the service_path is prepended with '/service/', such as when the
4614 # service path is retrieved from GetNetworkInfo. ForgetWifiNetwork works
4615 # only for service paths where this has already been stripped.
4616 service_path = service_path.split('/service/')[-1]
4617 cmd_dict = {
4618 'command': 'ForgetWifiNetwork',
4619 'service_path': service_path,
4620 }
4621 self._GetResultFromJSONRequest(cmd_dict, windex=None, timeout=50000)
4622
4623 def ConnectToHiddenWifiNetwork(self, ssid, security, password='',
4624 shared=True, save_credentials=False):
4625 """Connect to a wifi network by its service path.
4626
4627 Blocks until connection succeeds or fails.
4628
4629 Args:
4630 ssid: The SSID of the network to connect to.
4631 security: The network's security type. One of: 'SECURITY_NONE',
4632 'SECURITY_WEP', 'SECURITY_WPA', 'SECURITY_RSN', 'SECURITY_8021X'
4633 password: Passphrase for connecting to the wifi network.
4634 shared: Boolean value specifying whether the network should be shared.
4635 save_credentials: Boolean value specifying whether 802.1x credentials are
4636 saved.
4637
4638 Returns:
4639 An error string if an error occured.
4640 None otherwise.
4641
4642 Raises:
4643 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4644 """
4645 assert security in ('SECURITY_NONE', 'SECURITY_WEP', 'SECURITY_WPA',
4646 'SECURITY_RSN', 'SECURITY_8021X')
4647 cmd_dict = {
4648 'command': 'ConnectToHiddenWifiNetwork',
4649 'ssid': ssid,
4650 'security': security,
4651 'password': password,
4652 'shared': shared,
4653 'save_credentials': save_credentials,
4654 }
4655 result = self._GetResultFromJSONRequest(
4656 cmd_dict, windex=None, timeout=50000)
4657 return result.get('error_string')
4658
4659 def EnableSpokenFeedback(self, enabled): 4495 def EnableSpokenFeedback(self, enabled):
4660 """Enables or disables spoken feedback accessibility mode. 4496 """Enables or disables spoken feedback accessibility mode.
4661 4497
4662 Args: 4498 Args:
4663 enabled: Boolean value indicating the desired state of spoken feedback. 4499 enabled: Boolean value indicating the desired state of spoken feedback.
4664 4500
4665 Raises: 4501 Raises:
4666 pyauto_errors.JSONInterfaceError if the automation call returns an error. 4502 pyauto_errors.JSONInterfaceError if the automation call returns an error.
4667 """ 4503 """
4668 cmd_dict = { 4504 cmd_dict = {
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
5581 successful = result.wasSuccessful() 5417 successful = result.wasSuccessful()
5582 if not successful: 5418 if not successful:
5583 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) 5419 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename)
5584 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ 5420 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \
5585 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) 5421 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL)
5586 sys.exit(not successful) 5422 sys.exit(not successful)
5587 5423
5588 5424
5589 if __name__ == '__main__': 5425 if __name__ == '__main__':
5590 Main() 5426 Main()
OLDNEW
« no previous file with comments | « chrome/test/pyautolib/chromeos_network.py ('k') | chrome/test/pyautolib/pyautolib.i » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698