| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 """Python representation for Chromium Plugins info. | |
| 6 | |
| 7 This is the info available at about:plugins. | |
| 8 Obtain one of these from PyUITestSuite::GetPluginsInfo() call. | |
| 9 | |
| 10 Example: | |
| 11 class MyTest(pyauto.PyUITest): | |
| 12 def testBasic(self): | |
| 13 info = self.GetPluginsInfo() # fetch plugins snapshot | |
| 14 print info.Plugins() | |
| 15 | |
| 16 See more examples in chrome/test/functional/plugins.py. | |
| 17 """ | |
| 18 | |
| 19 import simplejson as json | |
| 20 | |
| 21 from pyauto_errors import JSONInterfaceError | |
| 22 | |
| 23 | |
| 24 class PluginsInfo(object): | |
| 25 """Represent info for Chromium plugins. | |
| 26 | |
| 27 The info is represented as a list of dictionaries, one for each plugin. | |
| 28 """ | |
| 29 def __init__(self, plugins_dict): | |
| 30 """Initialize a PluginsInfo from a json string. | |
| 31 | |
| 32 Args: | |
| 33 plugins_dict: a dictionary returned by the automation command | |
| 34 'GetPluginsInfo'. | |
| 35 | |
| 36 Raises: | |
| 37 pyauto_errors.JSONInterfaceError if the automation call returns an error. | |
| 38 """ | |
| 39 # JSON string prepared in GetPluginsInfo() in automation_provider.cc | |
| 40 self.pluginsdict = plugins_dict | |
| 41 if self.pluginsdict.has_key('error'): | |
| 42 raise JSONInterfaceError(self.pluginsdict['error']) | |
| 43 | |
| 44 def Plugins(self): | |
| 45 """Get plugins. | |
| 46 | |
| 47 Returns: | |
| 48 a list of plugins info | |
| 49 Sample: | |
| 50 [ { u'desc': u'Shockwave Flash 10.0 r45', | |
| 51 u'enabled': True, | |
| 52 u'mimeTypes': [ { u'description': u'Shockwave Flash', | |
| 53 u'fileExtensions': [u'swf'], | |
| 54 u'mimeType': u'application/x-shockwave-flash'}, | |
| 55 { u'description': u'FutureSplash Player', | |
| 56 u'fileExtensions': [u'spl'], | |
| 57 u'mimeType': u'application/futuresplash'}], | |
| 58 u'name': u'Shockwave Flash', | |
| 59 u'path': u'/Library/Internet Plug-Ins/Flash Player.plugin', | |
| 60 u'version': u'10.0.45.2'}, | |
| 61 { u'desc': u'Version 1.1.2.9282', | |
| 62 u'enabled': True, | |
| 63 u'mimeTypes': [ { u'description': u'Google voice and video chat', | |
| 64 u'fileExtensions': [u'googletalk'], | |
| 65 u'mimeType': u'application/googletalk'}], | |
| 66 u'name': u'Google Talk NPAPI Plugin', | |
| 67 u'path': u'/Library/Internet Plug-Ins/googletalkbrowserplugin.plugin', | |
| 68 u'version': u'1.1.2.9282'}, | |
| 69 ..., | |
| 70 ..., | |
| 71 ] | |
| 72 """ | |
| 73 return self.pluginsdict.get('plugins', []) | |
| 74 | |
| 75 def PluginForPath(self, path): | |
| 76 """Get plugin info for the given plugin path. | |
| 77 | |
| 78 Returns: | |
| 79 a dictionary of info for the plugin. | |
| 80 """ | |
| 81 got = filter(lambda x: x['path'] == path, self.Plugins()) | |
| 82 if not got: return None | |
| 83 return got[0] | |
| 84 | |
| 85 def PluginForName(self, name): | |
| 86 """Get plugin info for the given name. | |
| 87 | |
| 88 There might be several plugins with the same name. | |
| 89 | |
| 90 Args: | |
| 91 name: the name for which to look for. | |
| 92 | |
| 93 Returns: | |
| 94 a list of info dictionaries for each plugin found with the given name. | |
| 95 """ | |
| 96 return filter(lambda x: x['name'] == name, self.Plugins()) | |
| 97 | |
| 98 def FirstPluginForName(self, name): | |
| 99 """Get plugin info for the first plugin with the given name. | |
| 100 | |
| 101 This is useful in case there are multiple plugins for a name. | |
| 102 | |
| 103 Args: | |
| 104 name: the name for which to look for. | |
| 105 | |
| 106 Returns: | |
| 107 a plugin info dictionary | |
| 108 None, if not found | |
| 109 """ | |
| 110 all = self.PluginForName(name) | |
| 111 if not all: return None | |
| 112 return all[0] | |
| OLD | NEW |