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

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

Issue 8649004: Allow chromedriver to install an extension and get all installed extension IDs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years, 1 month 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
OLDNEW
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 1698 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 """ 1709 """
1710 cmd_dict = { # Prepare command for the json interface 1710 cmd_dict = { # Prepare command for the json interface
1711 'command': 'SelectTranslateOption', 1711 'command': 'SelectTranslateOption',
1712 'tab_index': tab_index, 1712 'tab_index': tab_index,
1713 'option': 'set_target_language', 1713 'option': 'set_target_language',
1714 'target_language': new_language 1714 'target_language': new_language
1715 } 1715 }
1716 return self._GetResultFromJSONRequest( 1716 return self._GetResultFromJSONRequest(
1717 cmd_dict, windex=window_index)['translation_success'] 1717 cmd_dict, windex=window_index)['translation_success']
1718 1718
1719 def InstallExtension(self, extension_path):
1720 """Installs an extension from the given path.
1721
1722 The path must be absolute and may be a crx file or an unpacked extension
1723 directory. Returns the extension ID if successfully installed and loaded.
1724 Otherwise, throws an exception. The extension must not already be installed.
dennis_jeffrey 2011/11/22 23:32:16 Mention the possibility of an exception in the "Ra
kkania 2011/11/23 17:31:23 Done.
1725
1726 Args:
1727 extension_path: The absolute path to the extension to install. If the
1728 extension is packed, it must have a .crx extension.
1729
1730 Returns:
1731 The ID of the extension.
dennis_jeffrey 2011/11/22 23:32:16 'of the installed extension'
kkania 2011/11/23 17:31:23 Done.
1732 """
1733 cmd_dict = {
1734 'command': 'InstallExtension',
1735 'path': extension_path
1736 }
1737 return self._GetResultFromJSONRequest(cmd_dict, windex=-1)['id']
1738
1719 def GetExtensionsInfo(self): 1739 def GetExtensionsInfo(self):
1720 """Returns information about all installed extensions. 1740 """Returns information about all installed extensions.
1721 1741
1722 Returns: 1742 Returns:
1723 A list of dictionaries representing each of the installed extensions. 1743 A list of dictionaries representing each of the installed extensions.
1724 Example: 1744 Example:
dennis_jeffrey 2011/11/22 23:32:16 Maybe we could modify this example now that there
kkania 2011/11/23 17:31:23 Done.
1725 [ { u'api_permissions': [u'bookmarks', u'experimental', u'tabs'], 1745 [ { u'api_permissions': [u'bookmarks', u'experimental', u'tabs'],
1726 u'background_url': u'', 1746 u'background_url': u'',
1727 u'description': u'Bookmark Manager', 1747 u'description': u'Bookmark Manager',
1728 u'effective_host_permissions': [u'chrome://favicon/*', 1748 u'effective_host_permissions': [u'chrome://favicon/*',
1729 u'chrome://resources/*'], 1749 u'chrome://resources/*'],
1730 u'host_permissions': [u'chrome://favicon/*', u'chrome://resources/*'], 1750 u'host_permissions': [u'chrome://favicon/*', u'chrome://resources/*'],
1731 u'id': u'eemcgdkfndhakfknompkggombfjjjeno', 1751 u'id': u'eemcgdkfndhakfknompkggombfjjjeno',
1732 u'name': u'Bookmark Manager', 1752 u'name': u'Bookmark Manager',
1733 u'options_url': u'', 1753 u'options_url': u'',
1734 u'public_key': u'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQcByy+eN9jza\ 1754 u'public_key': u'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQcByy+eN9jza\
(...skipping 14 matching lines...) Expand all
1749 u'name': u'Facebook for Google Chrome', 1769 u'name': u'Facebook for Google Chrome',
1750 u'options_url': u'', 1770 u'options_url': u'',
1751 u'public_key': u'...', 1771 u'public_key': u'...',
1752 u'version': u'2.0.9' 1772 u'version': u'2.0.9'
1753 u'is_enabled': True, 1773 u'is_enabled': True,
1754 u'allowed_in_incognito': True} ] 1774 u'allowed_in_incognito': True} ]
1755 """ 1775 """
1756 cmd_dict = { # Prepare command for the json interface 1776 cmd_dict = { # Prepare command for the json interface
1757 'command': 'GetExtensionsInfo' 1777 'command': 'GetExtensionsInfo'
1758 } 1778 }
1759 return self._GetResultFromJSONRequest(cmd_dict)['extensions'] 1779 return self._GetResultFromJSONRequest(cmd_dict, windex=-1)['extensions']
1760 1780
1761 def UninstallExtensionById(self, id): 1781 def UninstallExtensionById(self, id):
1762 """Uninstall the extension with the given id. 1782 """Uninstall the extension with the given id.
1763 1783
1764 Args: 1784 Args:
1765 id: The string id of the extension. 1785 id: The string id of the extension.
1766 1786
1767 Returns: 1787 Returns:
1768 True, if the extension was successfully uninstalled, or 1788 True, if the extension was successfully uninstalled, or
1769 False, otherwise. 1789 False, otherwise.
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
2403 'tab_index': tab_index, 2423 'tab_index': tab_index,
2404 } 2424 }
2405 self._GetResultFromJSONRequest(cmd_dict, windex=windex) 2425 self._GetResultFromJSONRequest(cmd_dict, windex=windex)
2406 2426
2407 def SetTheme(self, crx_file_path): 2427 def SetTheme(self, crx_file_path):
2408 """Installs the given theme synchronously. 2428 """Installs the given theme synchronously.
2409 2429
2410 A theme file is a file with a .crx suffix, like an extension. The theme 2430 A theme file is a file with a .crx suffix, like an extension. The theme
2411 file must be specified with an absolute path. This method call waits until 2431 file must be specified with an absolute path. This method call waits until
2412 the theme is installed and will trigger the "theme installed" infobar. 2432 the theme is installed and will trigger the "theme installed" infobar.
2433 If the install is unsuccessful, will throw an exception.
dennis_jeffrey 2011/11/22 23:32:16 Mention this in the "Raises:" section of this docs
kkania 2011/11/23 17:31:23 Done.
2413 2434
2414 Uses InstallExtension(). 2435 Uses InstallExtension().
2415 2436
2416 Returns: 2437 Returns:
2417 The ID of the installed theme, on success. The empty string, otherwise. 2438 The ID of the installed theme.
2418 """ 2439 """
2419 return self.InstallExtension(crx_file_path, True) 2440 return self.InstallExtension(crx_file_path)
2420 2441
2421 def WaitUntilDownloadedThemeSet(self, theme_name): 2442 def WaitUntilDownloadedThemeSet(self, theme_name):
2422 """Waits until the theme has been set. 2443 """Waits until the theme has been set.
2423 2444
2424 This should not be called after SetTheme(). It only needs to be called after 2445 This should not be called after SetTheme(). It only needs to be called after
2425 downloading a theme file (which will automatically set the theme). 2446 downloading a theme file (which will automatically set the theme).
2426 2447
2427 Uses WaitUntil so timeout is capped by automation timeout. 2448 Uses WaitUntil so timeout is capped by automation timeout.
2428 2449
2429 Args: 2450 Args:
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
3096 """ 3117 """
3097 cmd_dict = { 3118 cmd_dict = {
3098 'command': 'GetNTPInfo', 3119 'command': 'GetNTPInfo',
3099 } 3120 }
3100 return self._GetResultFromJSONRequest(cmd_dict) 3121 return self._GetResultFromJSONRequest(cmd_dict)
3101 3122
3102 def _CheckNTPThumbnailShown(self, thumbnail): 3123 def _CheckNTPThumbnailShown(self, thumbnail):
3103 if self.GetNTPThumbnailIndex(thumbnail) == -1: 3124 if self.GetNTPThumbnailIndex(thumbnail) == -1:
3104 raise NTPThumbnailNotShownError() 3125 raise NTPThumbnailNotShownError()
3105 3126
3106 def InstallApp(self, app_crx_file_path): 3127 def InstallApp(self, app_crx_file_path):
dennis_jeffrey 2011/11/22 23:32:16 I think we should get rid of this function now (an
kkania 2011/11/23 17:31:23 Done.
3107 """Installs the specified app synchronously. 3128 """Installs the specified app synchronously.
3108 3129
3109 An app file is a file with a .crx suffix, like an extension or theme. The 3130 An app file is a file with a .crx suffix, like an extension or theme. The
3110 app file must be specified with an absolute path. This method will not 3131 app file must be specified with an absolute path. This method will not
3111 return until the app is installed. 3132 return until the app is installed.
3112 3133
3113 Returns: 3134 Returns:
3114 The ID of the installed app, on success. The empty string, otherwise. 3135 The ID of the installed app, on success. The empty string, otherwise.
3115 """ 3136 """
3116 return self.InstallExtension(app_crx_file_path, False) 3137 return self.InstallExtension(app_crx_file_path, False)
(...skipping 1665 matching lines...) Expand 10 before | Expand all | Expand 10 after
4782 successful = result.wasSuccessful() 4803 successful = result.wasSuccessful()
4783 if not successful: 4804 if not successful:
4784 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) 4805 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename)
4785 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ 4806 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \
4786 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) 4807 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL)
4787 sys.exit(not successful) 4808 sys.exit(not successful)
4788 4809
4789 4810
4790 if __name__ == '__main__': 4811 if __name__ == '__main__':
4791 Main() 4812 Main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698