- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / execute_javascript.py
1 #!/usr/bin/env python
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
4 # found in the LICENSE file.
5
6 import os
7 import sys
8 import unittest
9
10 import pyauto_functional
11 from pyauto import PyUITest
12
13
14 class ExecuteJavascriptTest(PyUITest):
15   def _GetExtensionInfoById(self, extensions, id):
16     for x in extensions:
17       if x['id'] == id:
18         return x
19     return None
20
21   def testExecuteJavascript(self):
22     self.NavigateToURL(self.GetFileURLForDataPath(
23         'frame_dom_access', 'frame_dom_access.html'))
24
25     v = self.ExecuteJavascript('window.domAutomationController.send(' +
26                                'document.getElementById("myinput").nodeName)')
27     self.assertEqual(v, 'INPUT')
28
29   def testGetDOMValue(self):
30     self.NavigateToURL(self.GetFileURLForDataPath(
31         'frame_dom_access', 'frame_dom_access.html'))
32
33     v = self.GetDOMValue('document.getElementById("myinput").nodeName')
34     self.assertEqual(v, 'INPUT')
35
36   def testExecuteJavascriptInExtension(self):
37     """Test we can inject JavaScript into an extension."""
38     dir_path = os.path.abspath(
39         os.path.join(self.DataDir(), 'extensions', 'js_injection_background'))
40     ext_id = self.InstallExtension(dir_path)
41
42     # Verify extension is enabled.
43     extension = self._GetExtensionInfoById(self.GetExtensionsInfo(), ext_id)
44     self.assertTrue(extension['is_enabled'],
45                     msg='Extension was disabled by default')
46
47     # Get the background page's view.
48     background_view = self.WaitUntilExtensionViewLoaded(
49         view_type='EXTENSION_BACKGROUND_PAGE')
50     self.assertTrue(background_view,
51                     msg='problematic background view: views = %s.' %
52                     self.GetBrowserInfo()['extension_views'])
53
54     # Get values from background page's DOM
55     v = self.ExecuteJavascriptInRenderView(
56         'window.domAutomationController.send('
57         'document.getElementById("myinput").nodeName)', background_view)
58     self.assertEqual(v, 'INPUT',
59                      msg='Incorrect value returned (v = %s).' % v)
60     v = self.ExecuteJavascriptInRenderView(
61         'window.domAutomationController.send(bool_var)', background_view)
62     self.assertEqual(v, True, msg='Incorrect value returned (v = %s).' % v)
63     v = self.ExecuteJavascriptInRenderView(
64         'window.domAutomationController.send(int_var)', background_view)
65     self.assertEqual(v, 42, msg='Incorrect value returned (v = %s).' % v)
66     v = self.ExecuteJavascriptInRenderView(
67         'window.domAutomationController.send(str_var)', background_view)
68     self.assertEqual(v, 'foo', msg='Incorrect value returned (v = %s).' % v)
69
70
71 if __name__ == '__main__':
72   pyauto_functional.Main()