• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/command_line.h"
6 #include "chrome/browser/extensions/extension_apitest.h"
7 #include "chrome/browser/extensions/extension_service.h"
8 #include "chrome/browser/extensions/extension_webnavigation_api.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/ui_test_utils.h"
13 #include "content/browser/tab_contents/tab_contents.h"
14 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigation)15 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigation) {
16   CommandLine::ForCurrentProcess()->AppendSwitch(
17       switches::kEnableExperimentalExtensionApis);
18 
19   FrameNavigationState::set_allow_extension_scheme(true);
20 
21   ASSERT_TRUE(RunExtensionTest("webnavigation/api")) << message_;
22 }
23 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationClientRedirect)24 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationClientRedirect) {
25   CommandLine::ForCurrentProcess()->AppendSwitch(
26       switches::kEnableExperimentalExtensionApis);
27 
28   FrameNavigationState::set_allow_extension_scheme(true);
29 
30   ASSERT_TRUE(RunExtensionTest("webnavigation/clientRedirect")) << message_;
31 }
32 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationForwardBack)33 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationForwardBack) {
34   CommandLine::ForCurrentProcess()->AppendSwitch(
35       switches::kEnableExperimentalExtensionApis);
36 
37   FrameNavigationState::set_allow_extension_scheme(true);
38 
39   ASSERT_TRUE(RunExtensionTest("webnavigation/forwardBack")) << message_;
40 }
41 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationIFrame)42 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationIFrame) {
43   CommandLine::ForCurrentProcess()->AppendSwitch(
44       switches::kEnableExperimentalExtensionApis);
45 
46   FrameNavigationState::set_allow_extension_scheme(true);
47 
48   ASSERT_TRUE(RunExtensionTest("webnavigation/iframe")) << message_;
49 }
50 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationOpenTab)51 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationOpenTab) {
52   CommandLine::ForCurrentProcess()->AppendSwitch(
53       switches::kEnableExperimentalExtensionApis);
54 
55   FrameNavigationState::set_allow_extension_scheme(true);
56 
57   ASSERT_TRUE(RunExtensionTest("webnavigation/openTab")) << message_;
58 }
59 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationReferenceFragment)60 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationReferenceFragment) {
61   CommandLine::ForCurrentProcess()->AppendSwitch(
62       switches::kEnableExperimentalExtensionApis);
63 
64   FrameNavigationState::set_allow_extension_scheme(true);
65 
66   ASSERT_TRUE(RunExtensionTest("webnavigation/referenceFragment")) << message_;
67 }
68 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationSimpleLoad)69 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationSimpleLoad) {
70   CommandLine::ForCurrentProcess()->AppendSwitch(
71       switches::kEnableExperimentalExtensionApis);
72 
73   FrameNavigationState::set_allow_extension_scheme(true);
74 
75   ASSERT_TRUE(RunExtensionTest("webnavigation/simpleLoad")) << message_;
76 }
77 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationFailures)78 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationFailures) {
79   CommandLine::ForCurrentProcess()->AppendSwitch(
80       switches::kEnableExperimentalExtensionApis);
81 
82   FrameNavigationState::set_allow_extension_scheme(true);
83 
84   ASSERT_TRUE(RunExtensionTest("webnavigation/failures")) << message_;
85 }
86 
IN_PROC_BROWSER_TEST_F(ExtensionApiTest,WebNavigationUserAction)87 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationUserAction) {
88   CommandLine::ForCurrentProcess()->AppendSwitch(
89       switches::kEnableExperimentalExtensionApis);
90 
91   FrameNavigationState::set_allow_extension_scheme(true);
92 
93   // Wait for the extension to set itself up and return control to us.
94   ASSERT_TRUE(RunExtensionTest("webnavigation/userAction")) << message_;
95 
96   ResultCatcher catcher;
97 
98   ExtensionService* service = browser()->profile()->GetExtensionService();
99   const Extension* extension =
100       service->GetExtensionById(last_loaded_extension_id_, false);
101   GURL url = extension->GetResourceURL("a.html");
102 
103   ui_test_utils::NavigateToURL(browser(), url);
104 
105   url = extension->GetResourceURL("b.html");
106   // This corresponds to "Open link in new tab".
107   browser()->GetSelectedTabContents()->OpenURL(
108       url, GURL(), NEW_BACKGROUND_TAB, PageTransition::LINK);
109   ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
110 }
111