blob: 0ebde00734be08bef2cc70ea1774fd6581bfbaa4 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import re
import pyauto_functional # Must be imported before pyauto
import pyauto
import pyauto_utils
class AboutPluginsUITest(pyauto.PyUITest):
"""Testcase for chrome://plugins UI."""
def testAboutPluginDetailInfo(self):
"""Verify chrome://plugins page shows plugin details."""
self.NavigateToURL('chrome://plugins/')
driver = self.NewWebDriver()
detail_link = driver.find_element_by_id('details-link')
self.assertTrue(self.WaitUntil(lambda: detail_link.is_displayed()),
msg='Details link could not be found.')
detail_link.click()
# Verify that detail info for Remote Viewer plugin shows up.
# Remote Viewer plugin is expected to be present on all platforms.
self.assertTrue(self.WaitUntil(lambda: len(driver.find_elements_by_xpath(
'//*[@jscontent="path"][text()="internal-remoting-viewer"]'))))
class ChromeAboutPluginsUITest(pyauto.PyUITest):
"""Testcase for official build only plugins in chrome://plugins UI."""
def Debug(self):
"""chrome://plugins test debug method.
This method will not run automatically.
"""
self.NavigateToURL('chrome://plugins/')
driver = self.NewWebDriver()
import pdb
pdb.set_trace()
def _IsEnabled(self, driver, plugin_name):
"""Checks if plugin is enabled.
Args:
driver: A Chrome driver object.
plugin_name: Plugin name to verify.
Returns:
True, if plugin is enabled, or False otherwise.
"""
check_plugin_enabled_js = 'return navigator.plugins["%s"] != undefined' % \
plugin_name
return driver.execute_script(check_plugin_enabled_js)
def _ExpandDetailInfoLink(self, driver):
"""Expand detail info link.
Args:
driver: A Chrome driver object.
"""
detail_link = driver.find_element_by_id('details-link')
self.assertTrue(self.WaitUntil(lambda: detail_link.is_displayed()),
msg='Details link could not be found.')
detail_link.click()
def _OverridePluginPageAnimation(self, driver):
"""Override the animation for expanding detail info to make sure element
remain at the same location where web driver found it.
Args:
driver: A Chrome driver object.
"""
override_animation_style_js = """
style = document.createElement('style');
style.innerHTML = "* { -webkit-transition: all 0s ease-in !important}";
document.head.appendChild(style);
"""
driver.execute_script(override_animation_style_js)
def testAboutPluginEnableAndDisablePDFPlugin(self):
"""Verify enable and disable pdf plugins from about:plugins page."""
self.NavigateToURL('chrome://plugins/')
driver = self.NewWebDriver()
self._OverridePluginPageAnimation(driver)
self._ExpandDetailInfoLink(driver)
pdf_disable_path = '//*[@class="plugin-name"][text()="Chrome PDF Viewer"' \
']//ancestor::*[@class="plugin-text"]//a[text()="Disable"]'
pdf_enable_path = '//*[@class="plugin-name"][text()="Chrome PDF Viewer"' \
']//ancestor::*[@class="plugin-text"]//a[text()="Enable"]'
# Confirm Chrome PDF Viewer plugin is found and find disable PDF link.
pdf_disable_link = pyauto_utils.WaitForDomElement(self, driver,
pdf_disable_path)
# Disable PDF viewer plugin in about:plugins.
pdf_disable_link.click()
self.assertTrue(self.WaitUntil(lambda: not
self._IsEnabled(driver, 'Chrome PDF Viewer')))
# Re-enable PDF viewer plugin.
pdf_enable_link = driver.find_element_by_xpath(pdf_enable_path)
pdf_enable_link.click()
self.assertTrue(self.WaitUntil(lambda:
self._IsEnabled(driver, 'Chrome PDF Viewer')))
def testEnableAndDisableFlashPlugin(self):
"""Verify enable and disable flash plugins from about:plugins page."""
self.NavigateToURL('chrome://plugins/')
driver = self.NewWebDriver()
self._OverridePluginPageAnimation(driver)
self._ExpandDetailInfoLink(driver)
flash_plugins_elem = driver.find_element_by_xpath(
'//*[@jscontent="name"][text()="Flash"]//ancestor' \
'::*[@class="plugin-text"]')
# Disable flash plugin from flash detail info.
flash_disable_link = flash_plugins_elem.find_element_by_xpath(
'.//a[text()="Disable"]')
flash_disable_link.click()
self.assertTrue(self.WaitUntil(lambda: not
self._IsEnabled(driver, 'Shockwave Flash')))
# Re-enable Flash plugin from flash detail info.
flash_enable_link = flash_plugins_elem.find_element_by_xpath(
'.//a[text()="Enable"]')
flash_enable_link.click()
self.assertTrue(self.WaitUntil(lambda:
self._IsEnabled(driver, 'Shockwave Flash')))
if __name__ == '__main__':
pyauto_functional.Main()