- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / about_plugins_ui.py
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()