Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / extension_unittest.py
index f17d029..77e44e3 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Copyright 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.
 
@@ -16,22 +16,26 @@ from telemetry.unittest import options_for_unittests
 
 class ExtensionTest(unittest.TestCase):
   def setUp(self):
-    extension_path = os.path.join(util.GetUnittestDataDir(), 'simple_extension')
+    self._browser = None
+    self._extension = None
+    self._extension_id = None
+
+  def CreateBrowserWithExtension(self, ext_path):
+    extension_path = os.path.join(util.GetUnittestDataDir(), ext_path)
     options = options_for_unittests.GetCopy()
     load_extension = extension_to_load.ExtensionToLoad(
         extension_path, options.browser_type)
     options.extensions_to_load = [load_extension]
     browser_to_create = browser_finder.FindBrowser(options)
 
-    self._browser = None
-    self._extension = None
     if not browser_to_create:
       # May not find a browser that supports extensions.
-      return
+      return False
     self._browser = browser_to_create.Create()
-    self._browser.Start()
     self._extension = self._browser.extensions[load_extension]
+    self._extension_id = load_extension.extension_id
     self.assertTrue(self._extension)
+    return True
 
   def tearDown(self):
     if self._browser:
@@ -39,7 +43,7 @@ class ExtensionTest(unittest.TestCase):
 
   def testExtensionBasic(self):
     """Test ExtensionPage's ExecuteJavaScript and EvaluateJavaScript."""
-    if not self._extension:
+    if not self.CreateBrowserWithExtension('simple_extension'):
       logging.warning('Did not find a browser that supports extensions, '
                       'skipping test.')
       return
@@ -49,6 +53,32 @@ class ExtensionTest(unittest.TestCase):
     self.assertEquals('abcdef',
                       self._extension.EvaluateJavaScript('_testVar'))
 
+  def testExtensionGetByExtensionId(self):
+    """Test GetByExtensionId for a simple extension with a background page."""
+    if not self.CreateBrowserWithExtension('simple_extension'):
+      logging.warning('Did not find a browser that supports extensions, '
+                      'skipping test.')
+      return
+    ext = self._browser.extensions.GetByExtensionId(self._extension_id)
+    self.assertEqual(1, len(ext))
+    self.assertEqual(ext[0], self._extension)
+    self.assertTrue(
+        ext[0].EvaluateJavaScript('chrome.runtime != null'))
+
+  def testWebApp(self):
+    """Tests GetByExtensionId for a web app with multiple pages."""
+    if not self.CreateBrowserWithExtension('simple_app'):
+      logging.warning('Did not find a browser that supports extensions, '
+                      'skipping test.')
+      return
+    extensions = self._browser.extensions.GetByExtensionId(self._extension_id)
+    extension_urls = set([ext.EvaluateJavaScript('location.href;')
+                          for ext in extensions])
+    expected_urls = set(['chrome-extension://' + self._extension_id + '/' + path
+                         for path in ['main.html', 'second.html',
+                                      '_generated_background_page.html']])
+
+    self.assertEqual(expected_urls, extension_urls)
 
 class NonExistentExtensionTest(unittest.TestCase):
   def testNonExistentExtensionPath(self):
@@ -93,7 +123,6 @@ class MultipleExtensionTest(unittest.TestCase):
     # May not find a browser that supports extensions.
     if browser_to_create:
       self._browser = browser_to_create.Create()
-      self._browser.Start()
 
   def tearDown(self):
     if self._browser: