| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import os | |
| 7 import re | |
| 8 | |
| 9 import pyauto_functional # Must be imported before pyauto | |
| 10 import pyauto | |
| 11 import pyauto_utils | |
| 12 | |
| 13 | |
| 14 class AboutPluginsUITest(pyauto.PyUITest): | |
| 15 """Testcase for chrome://plugins UI.""" | |
| 16 | |
| 17 def testAboutPluginDetailInfo(self): | |
| 18 """Verify chrome://plugins page shows plugin details.""" | |
| 19 self.NavigateToURL('chrome://plugins/') | |
| 20 driver = self.NewWebDriver() | |
| 21 detail_link = driver.find_element_by_id('details-link') | |
| 22 self.assertTrue(self.WaitUntil(lambda: detail_link.is_displayed()), | |
| 23 msg='Details link could not be found.') | |
| 24 detail_link.click() | |
| 25 # Verify that detail info for Remote Viewer plugin shows up. | |
| 26 # Remote Viewer plugin is expected to be present on all platforms. | |
| 27 self.assertTrue(self.WaitUntil(lambda: len(driver.find_elements_by_xpath( | |
| 28 '//*[@jscontent="path"][text()="internal-remoting-viewer"]')))) | |
| 29 | |
| 30 | |
| 31 class ChromeAboutPluginsUITest(pyauto.PyUITest): | |
| 32 """Testcase for official build only plugins in chrome://plugins UI.""" | |
| 33 | |
| 34 def Debug(self): | |
| 35 """chrome://plugins test debug method. | |
| 36 | |
| 37 This method will not run automatically. | |
| 38 """ | |
| 39 self.NavigateToURL('chrome://plugins/') | |
| 40 driver = self.NewWebDriver() | |
| 41 import pdb | |
| 42 pdb.set_trace() | |
| 43 | |
| 44 def _IsEnabled(self, driver, plugin_name): | |
| 45 """Checks if plugin is enabled. | |
| 46 | |
| 47 Args: | |
| 48 driver: A Chrome driver object. | |
| 49 plugin_name: Plugin name to verify. | |
| 50 | |
| 51 Returns: | |
| 52 True, if plugin is enabled, or False otherwise. | |
| 53 """ | |
| 54 check_plugin_enabled_js = 'return navigator.plugins["%s"] != undefined' % \ | |
| 55 plugin_name | |
| 56 return driver.execute_script(check_plugin_enabled_js) | |
| 57 | |
| 58 def _ExpandDetailInfoLink(self, driver): | |
| 59 """Expand detail info link. | |
| 60 | |
| 61 Args: | |
| 62 driver: A Chrome driver object. | |
| 63 """ | |
| 64 detail_link = driver.find_element_by_id('details-link') | |
| 65 self.assertTrue(self.WaitUntil(lambda: detail_link.is_displayed()), | |
| 66 msg='Details link could not be found.') | |
| 67 detail_link.click() | |
| 68 | |
| 69 def _OverridePluginPageAnimation(self, driver): | |
| 70 """Override the animation for expanding detail info to make sure element | |
| 71 remain at the same location where web driver found it. | |
| 72 | |
| 73 Args: | |
| 74 driver: A Chrome driver object. | |
| 75 """ | |
| 76 override_animation_style_js = """ | |
| 77 style = document.createElement('style'); | |
| 78 style.innerHTML = "* { -webkit-transition: all 0s ease-in !important}"; | |
| 79 document.head.appendChild(style); | |
| 80 """ | |
| 81 driver.execute_script(override_animation_style_js) | |
| 82 | |
| 83 def testAboutPluginEnableAndDisablePDFPlugin(self): | |
| 84 """Verify enable and disable pdf plugins from about:plugins page.""" | |
| 85 self.NavigateToURL('chrome://plugins/') | |
| 86 driver = self.NewWebDriver() | |
| 87 | |
| 88 self._OverridePluginPageAnimation(driver) | |
| 89 self._ExpandDetailInfoLink(driver) | |
| 90 | |
| 91 pdf_disable_path = '//*[@class="plugin-name"][text()="Chrome PDF Viewer"' \ | |
| 92 ']//ancestor::*[@class="plugin-text"]//a[text()="Disable"]' | |
| 93 pdf_enable_path = '//*[@class="plugin-name"][text()="Chrome PDF Viewer"' \ | |
| 94 ']//ancestor::*[@class="plugin-text"]//a[text()="Enable"]' | |
| 95 | |
| 96 # Confirm Chrome PDF Viewer plugin is found and find disable PDF link. | |
| 97 pdf_disable_link = pyauto_utils.WaitForDomElement(self, driver, | |
| 98 pdf_disable_path) | |
| 99 | |
| 100 # Disable PDF viewer plugin in about:plugins. | |
| 101 pdf_disable_link.click() | |
| 102 self.assertTrue(self.WaitUntil(lambda: not | |
| 103 self._IsEnabled(driver, 'Chrome PDF Viewer'))) | |
| 104 | |
| 105 # Re-enable PDF viewer plugin. | |
| 106 pdf_enable_link = driver.find_element_by_xpath(pdf_enable_path) | |
| 107 pdf_enable_link.click() | |
| 108 self.assertTrue(self.WaitUntil(lambda: | |
| 109 self._IsEnabled(driver, 'Chrome PDF Viewer'))) | |
| 110 | |
| 111 def testEnableAndDisableFlashPlugin(self): | |
| 112 """Verify enable and disable flash plugins from about:plugins page.""" | |
| 113 self.NavigateToURL('chrome://plugins/') | |
| 114 driver = self.NewWebDriver() | |
| 115 | |
| 116 self._OverridePluginPageAnimation(driver) | |
| 117 self._ExpandDetailInfoLink(driver) | |
| 118 flash_plugins_elem = driver.find_element_by_xpath( | |
| 119 '//*[@jscontent="name"][text()="Flash"]//ancestor' \ | |
| 120 '::*[@class="plugin-text"]') | |
| 121 | |
| 122 # Disable flash plugin from flash detail info. | |
| 123 flash_disable_link = flash_plugins_elem.find_element_by_xpath( | |
| 124 './/a[text()="Disable"]') | |
| 125 flash_disable_link.click() | |
| 126 self.assertTrue(self.WaitUntil(lambda: not | |
| 127 self._IsEnabled(driver, 'Shockwave Flash'))) | |
| 128 | |
| 129 # Re-enable Flash plugin from flash detail info. | |
| 130 flash_enable_link = flash_plugins_elem.find_element_by_xpath( | |
| 131 './/a[text()="Enable"]') | |
| 132 flash_enable_link.click() | |
| 133 self.assertTrue(self.WaitUntil(lambda: | |
| 134 self._IsEnabled(driver, 'Shockwave Flash'))) | |
| 135 | |
| 136 | |
| 137 if __name__ == '__main__': | |
| 138 pyauto_functional.Main() | |
| OLD | NEW |