| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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 import logging | 6 import logging |
| 7 import os | 7 import os |
| 8 import pprint |
| 8 import sys | 9 import sys |
| 9 | 10 |
| 10 import pyauto_functional # Must be imported before pyauto | 11 import pyauto_functional # Must be imported before pyauto |
| 11 import pyauto | 12 import pyauto |
| 12 | 13 |
| 13 | 14 |
| 14 class PluginsCheck(pyauto.PyUITest): | 15 class PluginsCheck(pyauto.PyUITest): |
| 15 """TestCase for Plugins.""" | 16 """TestCase for Plugins.""" |
| 16 | 17 |
| 17 def _ReadPluginsList(self, plugins_list_file): | 18 def _ReadPluginsList(self, plugins_list_file): |
| 18 """Read test plugins list from a file based on the test platform | 19 """Read test plugins list from a file based on the test platform |
| 19 | 20 |
| 20 File contains list of plugins like, | 21 File contains list of plugins like, |
| 21 [ | 22 [ |
| 22 {u'name':'Shockwave Flash', u'enabled':True, u'version':u'10.2.154.9'} | 23 {u'name':'Shockwave Flash', u'enabled':True, u'version':u'10.2.154.9'} |
| 23 {u'name':'Chrome PDF Viewer', u'enabled':True, u'version':u''} | 24 {u'name':'Chrome PDF Viewer', u'enabled':True, u'version':u''} |
| 24 ... | 25 ... |
| 25 ] | 26 ] |
| 26 """ | 27 """ |
| 27 file_path = os.path.join(self.DataDir(), plugins_list_file) | 28 file_path = os.path.join(self.DataDir(), plugins_list_file) |
| 28 return self.EvalDataFrom(file_path) | 29 return self.EvalDataFrom(file_path) |
| 29 | 30 |
| 30 def testPluginsStates(self): | 31 def testPluginsStates(self): |
| 31 """Verify plugins' versions and states.""" | 32 """Verify plugins' versions and states.""" |
| 32 if self.IsWin(): | 33 if self.IsWin(): |
| 33 plugins_list = self._ReadPluginsList('win_plugins_list.txt') | 34 plugins_list = self._ReadPluginsList('win_plugins_list.txt') |
| 34 elif self.IsMac(): | 35 elif self.IsMac(): |
| 35 plugins_list = self._ReadPluginsList('mac_plugins_list.txt') | 36 plugins_list = self._ReadPluginsList('mac_plugins_list.txt') |
| 37 elif self.IsChromeOS(): |
| 38 plugins_list = self._ReadPluginsList('chromeos_plugins_list.txt') |
| 36 elif self.IsLinux(): | 39 elif self.IsLinux(): |
| 37 # TODO(rohitbm) | 40 # TODO(rohitbm) |
| 38 # Add plugins_check support for Linux | 41 # Add plugins_check support for Linux |
| 39 logging.debug('Not performing plugins check on linux') | 42 logging.debug('Not performing plugins check on linux') |
| 40 return | 43 return |
| 41 | 44 |
| 42 browser_plugins_list = self.GetPluginsInfo().Plugins() | 45 browser_plugins_list = self.GetPluginsInfo().Plugins() |
| 43 for plugin in plugins_list: | 46 for plugin in plugins_list: |
| 44 test_plugin = [x['name'] for x in browser_plugins_list \ | 47 # We will compare the keys available in the plugin list |
| 45 if x['version'] == plugin['version'] and \ | 48 found_plugin = False |
| 46 str(x['enabled']) == plugin['enabled'] and \ | 49 for browser_plugin in browser_plugins_list: |
| 47 x['name'] == plugin['name']] | 50 whitelist_keys = plugin.keys() |
| 48 plugin_info = '[ NAME : %s, VERSION: %s, ENABLED: %s]' % \ | 51 if 'unique_key' in plugin: |
| 49 (plugin['name'], plugin['version'], plugin['enabled']) | 52 unique_key = plugin['unique_key'] |
| 50 logging.debug(plugin_info) | 53 whitelist_keys.remove('unique_key') |
| 51 self.assertTrue(test_plugin, '%s - Failed to match with plugins' | 54 else: |
| 52 ' available in the browser plugins list' % plugin_info) | 55 unique_key = 'name' |
| 56 if browser_plugin[unique_key] == plugin[unique_key]: |
| 57 found_plugin = True |
| 58 for key in whitelist_keys: |
| 59 if browser_plugin[key] != plugin[key]: |
| 60 self.assertEqual(browser_plugin[key], plugin[key], 'The following' |
| 61 ' plugin attributes do not match the whitelist:' |
| 62 '\n\tplugin:\n%s\n\tlist:\n%s' |
| 63 % (pprint.pformat(browser_plugin), pprint.pformat(plugin))) |
| 64 break; |
| 65 self.assertTrue(found_plugin, 'The following plugin in the whitelist ' |
| 66 'does not match any on the system:\n%s' % pprint.pformat(plugin)) |
| 67 if self.IsChromeOS(): |
| 68 self.assertEqual(len(plugins_list), len(browser_plugins_list), |
| 69 'The number of plugins on the system do not match the number in the ' |
| 70 'whitelist.') |
| 53 | 71 |
| 54 | 72 |
| 55 if __name__ == '__main__': | 73 if __name__ == '__main__': |
| 56 pyauto_functional.Main() | 74 pyauto_functional.Main() |
| OLD | NEW |