OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/logging.h" | 5 #include "base/logging.h" |
6 #include "chrome/browser/extensions/extension_apitest.h" | 6 #include "chrome/browser/extensions/extension_apitest.h" |
7 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
| 8 #include "chrome/browser/ui/browser_tabstrip.h" |
8 #include "chrome/common/chrome_switches.h" | 9 #include "chrome/common/chrome_switches.h" |
9 #include "chrome/test/base/ui_test_utils.h" | 10 #include "chrome/test/base/ui_test_utils.h" |
10 #include "content/public/browser/web_contents.h" | 11 #include "content/public/browser/web_contents.h" |
11 #include "googleurl/src/gurl.h" | 12 #include "googleurl/src/gurl.h" |
12 #include "net/base/mock_host_resolver.h" | 13 #include "net/base/mock_host_resolver.h" |
13 | 14 |
14 class ExtensionResourceRequestPolicyTest : public ExtensionApiTest { | 15 class ExtensionResourceRequestPolicyTest : public ExtensionApiTest { |
15 protected: | 16 protected: |
16 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 17 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
17 ExtensionApiTest::SetUpCommandLine(command_line); | 18 ExtensionApiTest::SetUpCommandLine(command_line); |
(...skipping 22 matching lines...) Expand all Loading... |
40 | 41 |
41 std::string host_b("b.com"); | 42 std::string host_b("b.com"); |
42 GURL::Replacements make_host_b_com; | 43 GURL::Replacements make_host_b_com; |
43 make_host_b_com.SetHostStr(host_b); | 44 make_host_b_com.SetHostStr(host_b); |
44 | 45 |
45 // A web host that has permission. | 46 // A web host that has permission. |
46 ui_test_utils::NavigateToURL( | 47 ui_test_utils::NavigateToURL( |
47 browser(), web_resource.ReplaceComponents(make_host_a_com)); | 48 browser(), web_resource.ReplaceComponents(make_host_a_com)); |
48 std::string result; | 49 std::string result; |
49 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 50 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
50 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 51 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
51 L"window.domAutomationController.send(document.title)", | 52 L"window.domAutomationController.send(document.title)", |
52 &result)); | 53 &result)); |
53 EXPECT_EQ(result, "Loaded"); | 54 EXPECT_EQ(result, "Loaded"); |
54 | 55 |
55 // A web host that loads a non-existent extension. | 56 // A web host that loads a non-existent extension. |
56 GURL non_existent_extension( | 57 GURL non_existent_extension( |
57 test_server()->GetURL( | 58 test_server()->GetURL( |
58 "files/extensions/api_test/extension_resource_request_policy/" | 59 "files/extensions/api_test/extension_resource_request_policy/" |
59 "non_existent_extension.html")); | 60 "non_existent_extension.html")); |
60 ui_test_utils::NavigateToURL(browser(), non_existent_extension); | 61 ui_test_utils::NavigateToURL(browser(), non_existent_extension); |
61 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 62 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
62 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 63 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
63 L"window.domAutomationController.send(document.title)", | 64 L"window.domAutomationController.send(document.title)", |
64 &result)); | 65 &result)); |
65 EXPECT_EQ(result, "Image failed to load"); | 66 EXPECT_EQ(result, "Image failed to load"); |
66 | 67 |
67 // A data URL. Data URLs should always be able to load chrome-extension:// | 68 // A data URL. Data URLs should always be able to load chrome-extension:// |
68 // resources. | 69 // resources. |
69 std::string file_source; | 70 std::string file_source; |
70 ASSERT_TRUE(file_util::ReadFileToString( | 71 ASSERT_TRUE(file_util::ReadFileToString( |
71 test_data_dir_.AppendASCII("extension_resource_request_policy") | 72 test_data_dir_.AppendASCII("extension_resource_request_policy") |
72 .AppendASCII("index.html"), &file_source)); | 73 .AppendASCII("index.html"), &file_source)); |
73 ui_test_utils::NavigateToURL(browser(), | 74 ui_test_utils::NavigateToURL(browser(), |
74 GURL(std::string("data:text/html;charset=utf-8,") + file_source)); | 75 GURL(std::string("data:text/html;charset=utf-8,") + file_source)); |
75 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 76 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
76 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 77 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
77 L"window.domAutomationController.send(document.title)", | 78 L"window.domAutomationController.send(document.title)", |
78 &result)); | 79 &result)); |
79 EXPECT_EQ(result, "Loaded"); | 80 EXPECT_EQ(result, "Loaded"); |
80 | 81 |
81 // A different extension. Legacy (manifest_version 1) extensions should always | 82 // A different extension. Legacy (manifest_version 1) extensions should always |
82 // be able to load each other's resources. | 83 // be able to load each other's resources. |
83 ASSERT_TRUE(LoadExtension(test_data_dir_ | 84 ASSERT_TRUE(LoadExtension(test_data_dir_ |
84 .AppendASCII("extension_resource_request_policy") | 85 .AppendASCII("extension_resource_request_policy") |
85 .AppendASCII("extension2"))); | 86 .AppendASCII("extension2"))); |
86 ui_test_utils::NavigateToURL( | 87 ui_test_utils::NavigateToURL( |
87 browser(), | 88 browser(), |
88 GURL("chrome-extension://pbkkcbgdkliohhfaeefcijaghglkahja/index.html")); | 89 GURL("chrome-extension://pbkkcbgdkliohhfaeefcijaghglkahja/index.html")); |
89 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 90 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
90 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 91 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
91 L"window.domAutomationController.send(document.title)", | 92 L"window.domAutomationController.send(document.title)", |
92 &result)); | 93 &result)); |
93 EXPECT_EQ(result, "Loaded"); | 94 EXPECT_EQ(result, "Loaded"); |
94 } | 95 } |
95 | 96 |
96 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 97 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
97 ExtensionCanLoadHostedAppIcons) { | 98 ExtensionCanLoadHostedAppIcons) { |
98 ASSERT_TRUE(LoadExtension(test_data_dir_ | 99 ASSERT_TRUE(LoadExtension(test_data_dir_ |
99 .AppendASCII("extension_resource_request_policy") | 100 .AppendASCII("extension_resource_request_policy") |
100 .AppendASCII("extension"))); | 101 .AppendASCII("extension"))); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 ASSERT_TRUE(LoadExtension(test_data_dir_ | 137 ASSERT_TRUE(LoadExtension(test_data_dir_ |
137 .AppendASCII("extension_resource_request_policy") | 138 .AppendASCII("extension_resource_request_policy") |
138 .AppendASCII("web_accessible"))); | 139 .AppendASCII("web_accessible"))); |
139 | 140 |
140 GURL accessible_resource( | 141 GURL accessible_resource( |
141 test_server()->GetURL( | 142 test_server()->GetURL( |
142 "files/extensions/api_test/extension_resource_request_policy/" | 143 "files/extensions/api_test/extension_resource_request_policy/" |
143 "web_accessible/accessible_resource.html")); | 144 "web_accessible/accessible_resource.html")); |
144 ui_test_utils::NavigateToURL(browser(), accessible_resource); | 145 ui_test_utils::NavigateToURL(browser(), accessible_resource); |
145 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 146 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
146 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 147 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
147 L"window.domAutomationController.send(document.title)", | 148 L"window.domAutomationController.send(document.title)", |
148 &result)); | 149 &result)); |
149 EXPECT_EQ("Loaded", result); | 150 EXPECT_EQ("Loaded", result); |
150 | 151 |
151 GURL xhr_accessible_resource( | 152 GURL xhr_accessible_resource( |
152 test_server()->GetURL( | 153 test_server()->GetURL( |
153 "files/extensions/api_test/extension_resource_request_policy/" | 154 "files/extensions/api_test/extension_resource_request_policy/" |
154 "web_accessible/xhr_accessible_resource.html")); | 155 "web_accessible/xhr_accessible_resource.html")); |
155 ui_test_utils::NavigateToURL( | 156 ui_test_utils::NavigateToURL( |
156 browser(), xhr_accessible_resource); | 157 browser(), xhr_accessible_resource); |
157 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 158 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
158 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 159 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
159 L"window.domAutomationController.send(document.title)", | 160 L"window.domAutomationController.send(document.title)", |
160 &result)); | 161 &result)); |
161 EXPECT_EQ("XHR completed with status: 200", result); | 162 EXPECT_EQ("XHR completed with status: 200", result); |
162 | 163 |
163 GURL xhr_inaccessible_resource( | 164 GURL xhr_inaccessible_resource( |
164 test_server()->GetURL( | 165 test_server()->GetURL( |
165 "files/extensions/api_test/extension_resource_request_policy/" | 166 "files/extensions/api_test/extension_resource_request_policy/" |
166 "web_accessible/xhr_inaccessible_resource.html")); | 167 "web_accessible/xhr_inaccessible_resource.html")); |
167 ui_test_utils::NavigateToURL( | 168 ui_test_utils::NavigateToURL( |
168 browser(), xhr_inaccessible_resource); | 169 browser(), xhr_inaccessible_resource); |
169 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 170 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
170 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 171 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
171 L"window.domAutomationController.send(document.title)", | 172 L"window.domAutomationController.send(document.title)", |
172 &result)); | 173 &result)); |
173 EXPECT_EQ("XHR failed to load resource", result); | 174 EXPECT_EQ("XHR failed to load resource", result); |
174 | 175 |
175 GURL nonaccessible_resource( | 176 GURL nonaccessible_resource( |
176 test_server()->GetURL( | 177 test_server()->GetURL( |
177 "files/extensions/api_test/extension_resource_request_policy/" | 178 "files/extensions/api_test/extension_resource_request_policy/" |
178 "web_accessible/nonaccessible_resource.html")); | 179 "web_accessible/nonaccessible_resource.html")); |
179 ui_test_utils::NavigateToURL(browser(), nonaccessible_resource); | 180 ui_test_utils::NavigateToURL(browser(), nonaccessible_resource); |
180 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 181 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
181 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 182 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
182 L"window.domAutomationController.send(document.title)", | 183 L"window.domAutomationController.send(document.title)", |
183 &result)); | 184 &result)); |
184 EXPECT_EQ("Image failed to load", result); | 185 EXPECT_EQ("Image failed to load", result); |
185 | 186 |
186 GURL nonexistent_resource( | 187 GURL nonexistent_resource( |
187 test_server()->GetURL( | 188 test_server()->GetURL( |
188 "files/extensions/api_test/extension_resource_request_policy/" | 189 "files/extensions/api_test/extension_resource_request_policy/" |
189 "web_accessible/nonexistent_resource.html")); | 190 "web_accessible/nonexistent_resource.html")); |
190 ui_test_utils::NavigateToURL(browser(), nonexistent_resource); | 191 ui_test_utils::NavigateToURL(browser(), nonexistent_resource); |
191 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 192 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
192 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 193 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
193 L"window.domAutomationController.send(document.title)", | 194 L"window.domAutomationController.send(document.title)", |
194 &result)); | 195 &result)); |
195 EXPECT_EQ("Image failed to load", result); | 196 EXPECT_EQ("Image failed to load", result); |
196 | 197 |
197 GURL nonaccessible_cer_resource( | 198 GURL nonaccessible_cer_resource( |
198 test_server()->GetURL( | 199 test_server()->GetURL( |
199 "files/extensions/api_test/extension_resource_request_policy/" | 200 "files/extensions/api_test/extension_resource_request_policy/" |
200 "web_accessible/nonaccessible_chrome_resource_scheme.html")); | 201 "web_accessible/nonaccessible_chrome_resource_scheme.html")); |
201 ui_test_utils::NavigateToURL(browser(), nonaccessible_cer_resource); | 202 ui_test_utils::NavigateToURL(browser(), nonaccessible_cer_resource); |
202 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 203 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
203 browser()->GetActiveWebContents()->GetRenderViewHost(), L"", | 204 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
204 L"window.domAutomationController.send(document.title)", | 205 L"window.domAutomationController.send(document.title)", |
205 &result)); | 206 &result)); |
206 EXPECT_EQ("Loading CER:// failed.", result); | 207 EXPECT_EQ("Loading CER:// failed.", result); |
207 } | 208 } |
208 | 209 |
209 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Iframe) { | 210 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Iframe) { |
210 // Load another extension, which the test one shouldn't be able to get | 211 // Load another extension, which the test one shouldn't be able to get |
211 // resources from. | 212 // resources from. |
212 ASSERT_TRUE(LoadExtension(test_data_dir_ | 213 ASSERT_TRUE(LoadExtension(test_data_dir_ |
213 .AppendASCII("extension_resource_request_policy") | 214 .AppendASCII("extension_resource_request_policy") |
214 .AppendASCII("inaccessible"))); | 215 .AppendASCII("inaccessible"))); |
215 EXPECT_TRUE(RunExtensionSubtest( | 216 EXPECT_TRUE(RunExtensionSubtest( |
216 "extension_resource_request_policy/web_accessible", | 217 "extension_resource_request_policy/web_accessible", |
217 "iframe.html")); | 218 "iframe.html")); |
218 } | 219 } |
219 | 220 |
220 #if defined(OS_MACOSX) | 221 #if defined(OS_MACOSX) |
221 #define MAYBE_ExtensionAccessibleResources FLAKY_ExtensionAccessibleResources | 222 #define MAYBE_ExtensionAccessibleResources FLAKY_ExtensionAccessibleResources |
222 #else | 223 #else |
223 #define MAYBE_ExtensionAccessibleResources ExtensionAccessibleResources | 224 #define MAYBE_ExtensionAccessibleResources ExtensionAccessibleResources |
224 #endif | 225 #endif |
225 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 226 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
226 MAYBE_ExtensionAccessibleResources) { | 227 MAYBE_ExtensionAccessibleResources) { |
227 ASSERT_TRUE(RunExtensionSubtest("accessible_cer", "main.html")) << message_; | 228 ASSERT_TRUE(RunExtensionSubtest("accessible_cer", "main.html")) << message_; |
228 } | 229 } |
OLD | NEW |