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/browser/ui/browser_tabstrip.h" |
9 #include "chrome/common/chrome_switches.h" | 9 #include "chrome/common/chrome_switches.h" |
10 #include "chrome/test/base/ui_test_utils.h" | 10 #include "chrome/test/base/ui_test_utils.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 make_host_a_com.SetHostStr(host_a); | 43 make_host_a_com.SetHostStr(host_a); |
44 | 44 |
45 std::string host_b("b.com"); | 45 std::string host_b("b.com"); |
46 GURL::Replacements make_host_b_com; | 46 GURL::Replacements make_host_b_com; |
47 make_host_b_com.SetHostStr(host_b); | 47 make_host_b_com.SetHostStr(host_b); |
48 | 48 |
49 // A web host that has permission. | 49 // A web host that has permission. |
50 ui_test_utils::NavigateToURL( | 50 ui_test_utils::NavigateToURL( |
51 browser(), web_resource.ReplaceComponents(make_host_a_com)); | 51 browser(), web_resource.ReplaceComponents(make_host_a_com)); |
52 std::string result; | 52 std::string result; |
53 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 53 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
54 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 54 chrome::GetActiveWebContents(browser()), |
55 "", | |
56 "window.domAutomationController.send(document.title)", | 55 "window.domAutomationController.send(document.title)", |
57 &result)); | 56 &result)); |
58 EXPECT_EQ(result, "Loaded"); | 57 EXPECT_EQ(result, "Loaded"); |
59 | 58 |
60 // A web host that loads a non-existent extension. | 59 // A web host that loads a non-existent extension. |
61 GURL non_existent_extension( | 60 GURL non_existent_extension( |
62 test_server()->GetURL( | 61 test_server()->GetURL( |
63 "files/extensions/api_test/extension_resource_request_policy/" | 62 "files/extensions/api_test/extension_resource_request_policy/" |
64 "non_existent_extension.html")); | 63 "non_existent_extension.html")); |
65 ui_test_utils::NavigateToURL(browser(), non_existent_extension); | 64 ui_test_utils::NavigateToURL(browser(), non_existent_extension); |
66 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 65 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
67 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 66 chrome::GetActiveWebContents(browser()), |
68 "", | |
69 "window.domAutomationController.send(document.title)", | 67 "window.domAutomationController.send(document.title)", |
70 &result)); | 68 &result)); |
71 EXPECT_EQ(result, "Image failed to load"); | 69 EXPECT_EQ(result, "Image failed to load"); |
72 | 70 |
73 // A data URL. Data URLs should always be able to load chrome-extension:// | 71 // A data URL. Data URLs should always be able to load chrome-extension:// |
74 // resources. | 72 // resources. |
75 std::string file_source; | 73 std::string file_source; |
76 ASSERT_TRUE(file_util::ReadFileToString( | 74 ASSERT_TRUE(file_util::ReadFileToString( |
77 test_data_dir_.AppendASCII("extension_resource_request_policy") | 75 test_data_dir_.AppendASCII("extension_resource_request_policy") |
78 .AppendASCII("index.html"), &file_source)); | 76 .AppendASCII("index.html"), &file_source)); |
79 ui_test_utils::NavigateToURL(browser(), | 77 ui_test_utils::NavigateToURL(browser(), |
80 GURL(std::string("data:text/html;charset=utf-8,") + file_source)); | 78 GURL(std::string("data:text/html;charset=utf-8,") + file_source)); |
81 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 79 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
82 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 80 chrome::GetActiveWebContents(browser()), |
83 "", | |
84 "window.domAutomationController.send(document.title)", | 81 "window.domAutomationController.send(document.title)", |
85 &result)); | 82 &result)); |
86 EXPECT_EQ(result, "Loaded"); | 83 EXPECT_EQ(result, "Loaded"); |
87 | 84 |
88 // A different extension. Legacy (manifest_version 1) extensions should always | 85 // A different extension. Legacy (manifest_version 1) extensions should always |
89 // be able to load each other's resources. | 86 // be able to load each other's resources. |
90 ASSERT_TRUE(LoadExtensionWithFlags(test_data_dir_ | 87 ASSERT_TRUE(LoadExtensionWithFlags(test_data_dir_ |
91 .AppendASCII("extension_resource_request_policy") | 88 .AppendASCII("extension_resource_request_policy") |
92 .AppendASCII("extension2"), | 89 .AppendASCII("extension2"), |
93 // Tests manifest_version 1 behavior, so warnings are expected. | 90 // Tests manifest_version 1 behavior, so warnings are expected. |
94 ExtensionBrowserTest::kFlagIgnoreManifestWarnings)); | 91 ExtensionBrowserTest::kFlagIgnoreManifestWarnings)); |
95 ui_test_utils::NavigateToURL( | 92 ui_test_utils::NavigateToURL( |
96 browser(), | 93 browser(), |
97 GURL("chrome-extension://pbkkcbgdkliohhfaeefcijaghglkahja/index.html")); | 94 GURL("chrome-extension://pbkkcbgdkliohhfaeefcijaghglkahja/index.html")); |
98 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 95 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
99 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 96 chrome::GetActiveWebContents(browser()), |
100 "", | |
101 "window.domAutomationController.send(document.title)", | 97 "window.domAutomationController.send(document.title)", |
102 &result)); | 98 &result)); |
103 EXPECT_EQ(result, "Loaded"); | 99 EXPECT_EQ(result, "Loaded"); |
104 } | 100 } |
105 | 101 |
106 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 102 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
107 ExtensionCanLoadHostedAppIcons) { | 103 ExtensionCanLoadHostedAppIcons) { |
108 ASSERT_TRUE(LoadExtensionWithFlags(test_data_dir_ | 104 ASSERT_TRUE(LoadExtensionWithFlags(test_data_dir_ |
109 .AppendASCII("extension_resource_request_policy") | 105 .AppendASCII("extension_resource_request_policy") |
110 .AppendASCII("extension"), | 106 .AppendASCII("extension"), |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 ASSERT_TRUE(test_server()->Start()); | 149 ASSERT_TRUE(test_server()->Start()); |
154 ASSERT_TRUE(LoadExtension(test_data_dir_ | 150 ASSERT_TRUE(LoadExtension(test_data_dir_ |
155 .AppendASCII("extension_resource_request_policy") | 151 .AppendASCII("extension_resource_request_policy") |
156 .AppendASCII("web_accessible"))); | 152 .AppendASCII("web_accessible"))); |
157 | 153 |
158 GURL accessible_resource( | 154 GURL accessible_resource( |
159 test_server()->GetURL( | 155 test_server()->GetURL( |
160 "files/extensions/api_test/extension_resource_request_policy/" | 156 "files/extensions/api_test/extension_resource_request_policy/" |
161 "web_accessible/accessible_resource.html")); | 157 "web_accessible/accessible_resource.html")); |
162 ui_test_utils::NavigateToURL(browser(), accessible_resource); | 158 ui_test_utils::NavigateToURL(browser(), accessible_resource); |
163 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 159 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
164 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 160 chrome::GetActiveWebContents(browser()), |
165 "", | |
166 "window.domAutomationController.send(document.title)", | 161 "window.domAutomationController.send(document.title)", |
167 &result)); | 162 &result)); |
168 EXPECT_EQ("Loaded", result); | 163 EXPECT_EQ("Loaded", result); |
169 | 164 |
170 GURL xhr_accessible_resource( | 165 GURL xhr_accessible_resource( |
171 test_server()->GetURL( | 166 test_server()->GetURL( |
172 "files/extensions/api_test/extension_resource_request_policy/" | 167 "files/extensions/api_test/extension_resource_request_policy/" |
173 "web_accessible/xhr_accessible_resource.html")); | 168 "web_accessible/xhr_accessible_resource.html")); |
174 ui_test_utils::NavigateToURL( | 169 ui_test_utils::NavigateToURL( |
175 browser(), xhr_accessible_resource); | 170 browser(), xhr_accessible_resource); |
176 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 171 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
177 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 172 chrome::GetActiveWebContents(browser()), |
178 "", | |
179 "window.domAutomationController.send(document.title)", | 173 "window.domAutomationController.send(document.title)", |
180 &result)); | 174 &result)); |
181 EXPECT_EQ("XHR completed with status: 200", result); | 175 EXPECT_EQ("XHR completed with status: 200", result); |
182 | 176 |
183 GURL xhr_inaccessible_resource( | 177 GURL xhr_inaccessible_resource( |
184 test_server()->GetURL( | 178 test_server()->GetURL( |
185 "files/extensions/api_test/extension_resource_request_policy/" | 179 "files/extensions/api_test/extension_resource_request_policy/" |
186 "web_accessible/xhr_inaccessible_resource.html")); | 180 "web_accessible/xhr_inaccessible_resource.html")); |
187 ui_test_utils::NavigateToURL( | 181 ui_test_utils::NavigateToURL( |
188 browser(), xhr_inaccessible_resource); | 182 browser(), xhr_inaccessible_resource); |
189 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 183 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
190 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 184 chrome::GetActiveWebContents(browser()), |
191 "", | |
192 "window.domAutomationController.send(document.title)", | 185 "window.domAutomationController.send(document.title)", |
193 &result)); | 186 &result)); |
194 EXPECT_EQ("XHR failed to load resource", result); | 187 EXPECT_EQ("XHR failed to load resource", result); |
195 | 188 |
196 GURL nonaccessible_resource( | 189 GURL nonaccessible_resource( |
197 test_server()->GetURL( | 190 test_server()->GetURL( |
198 "files/extensions/api_test/extension_resource_request_policy/" | 191 "files/extensions/api_test/extension_resource_request_policy/" |
199 "web_accessible/nonaccessible_resource.html")); | 192 "web_accessible/nonaccessible_resource.html")); |
200 ui_test_utils::NavigateToURL(browser(), nonaccessible_resource); | 193 ui_test_utils::NavigateToURL(browser(), nonaccessible_resource); |
201 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 194 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
202 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 195 chrome::GetActiveWebContents(browser()), |
203 "", | |
204 "window.domAutomationController.send(document.title)", | 196 "window.domAutomationController.send(document.title)", |
205 &result)); | 197 &result)); |
206 EXPECT_EQ("Image failed to load", result); | 198 EXPECT_EQ("Image failed to load", result); |
207 | 199 |
208 GURL nonexistent_resource( | 200 GURL nonexistent_resource( |
209 test_server()->GetURL( | 201 test_server()->GetURL( |
210 "files/extensions/api_test/extension_resource_request_policy/" | 202 "files/extensions/api_test/extension_resource_request_policy/" |
211 "web_accessible/nonexistent_resource.html")); | 203 "web_accessible/nonexistent_resource.html")); |
212 ui_test_utils::NavigateToURL(browser(), nonexistent_resource); | 204 ui_test_utils::NavigateToURL(browser(), nonexistent_resource); |
213 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 205 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
214 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 206 chrome::GetActiveWebContents(browser()), |
215 "", | |
216 "window.domAutomationController.send(document.title)", | 207 "window.domAutomationController.send(document.title)", |
217 &result)); | 208 &result)); |
218 EXPECT_EQ("Image failed to load", result); | 209 EXPECT_EQ("Image failed to load", result); |
219 | 210 |
220 GURL nonaccessible_cer_resource( | 211 GURL nonaccessible_cer_resource( |
221 test_server()->GetURL( | 212 test_server()->GetURL( |
222 "files/extensions/api_test/extension_resource_request_policy/" | 213 "files/extensions/api_test/extension_resource_request_policy/" |
223 "web_accessible/nonaccessible_chrome_resource_scheme.html")); | 214 "web_accessible/nonaccessible_chrome_resource_scheme.html")); |
224 ui_test_utils::NavigateToURL(browser(), nonaccessible_cer_resource); | 215 ui_test_utils::NavigateToURL(browser(), nonaccessible_cer_resource); |
225 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 216 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
226 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 217 chrome::GetActiveWebContents(browser()), |
227 "", | |
228 "window.domAutomationController.send(document.title)", | 218 "window.domAutomationController.send(document.title)", |
229 &result)); | 219 &result)); |
230 EXPECT_EQ("Loading CER:// failed.", result); | 220 EXPECT_EQ("Loading CER:// failed.", result); |
231 | 221 |
232 GURL newtab_page("chrome://newtab"); | 222 GURL newtab_page("chrome://newtab"); |
233 GURL accessible_newtab_override( | 223 GURL accessible_newtab_override( |
234 test_server()->GetURL( | 224 test_server()->GetURL( |
235 "files/extensions/api_test/extension_resource_request_policy/" | 225 "files/extensions/api_test/extension_resource_request_policy/" |
236 "web_accessible/accessible_history_navigation.html")); | 226 "web_accessible/accessible_history_navigation.html")); |
237 ui_test_utils::NavigateToURL(browser(), newtab_page); | 227 ui_test_utils::NavigateToURL(browser(), newtab_page); |
238 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 228 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
239 browser(), accessible_newtab_override, 2); | 229 browser(), accessible_newtab_override, 2); |
240 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 230 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
241 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 231 chrome::GetActiveWebContents(browser()), |
242 "", | |
243 "window.domAutomationController.send(document.title)", | 232 "window.domAutomationController.send(document.title)", |
244 &result)); | 233 &result)); |
245 EXPECT_EQ("New Tab Page Loaded Successfully", result); | 234 EXPECT_EQ("New Tab Page Loaded Successfully", result); |
246 } | 235 } |
247 | 236 |
248 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 237 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
249 WebAccessibleResourcesWithCSP) { | 238 WebAccessibleResourcesWithCSP) { |
250 std::string result; | 239 std::string result; |
251 ASSERT_TRUE(test_server()->Start()); | 240 ASSERT_TRUE(test_server()->Start()); |
252 ASSERT_TRUE(LoadExtension(test_data_dir_ | 241 ASSERT_TRUE(LoadExtension(test_data_dir_ |
253 .AppendASCII("extension_resource_request_policy") | 242 .AppendASCII("extension_resource_request_policy") |
254 .AppendASCII("web_accessible"))); | 243 .AppendASCII("web_accessible"))); |
255 | 244 |
256 GURL accessible_resource_with_csp( | 245 GURL accessible_resource_with_csp( |
257 test_server()->GetURL( | 246 test_server()->GetURL( |
258 "files/extensions/api_test/extension_resource_request_policy/" | 247 "files/extensions/api_test/extension_resource_request_policy/" |
259 "web_accessible/accessible_resource_with_csp.html")); | 248 "web_accessible/accessible_resource_with_csp.html")); |
260 ui_test_utils::NavigateToURL(browser(), accessible_resource_with_csp); | 249 ui_test_utils::NavigateToURL(browser(), accessible_resource_with_csp); |
261 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 250 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
262 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 251 chrome::GetActiveWebContents(browser()), |
263 "", | |
264 "window.domAutomationController.send(document.title)", | 252 "window.domAutomationController.send(document.title)", |
265 &result)); | 253 &result)); |
266 EXPECT_EQ("Loaded", result); | 254 EXPECT_EQ("Loaded", result); |
267 } | 255 } |
268 | 256 |
269 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Iframe) { | 257 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Iframe) { |
270 // Load another extension, which the test one shouldn't be able to get | 258 // Load another extension, which the test one shouldn't be able to get |
271 // resources from. | 259 // resources from. |
272 ASSERT_TRUE(LoadExtension(test_data_dir_ | 260 ASSERT_TRUE(LoadExtension(test_data_dir_ |
273 .AppendASCII("extension_resource_request_policy") | 261 .AppendASCII("extension_resource_request_policy") |
274 .AppendASCII("inaccessible"))); | 262 .AppendASCII("inaccessible"))); |
275 EXPECT_TRUE(RunExtensionSubtest( | 263 EXPECT_TRUE(RunExtensionSubtest( |
276 "extension_resource_request_policy/web_accessible", | 264 "extension_resource_request_policy/web_accessible", |
277 "iframe.html")) << message_; | 265 "iframe.html")) << message_; |
278 } | 266 } |
279 | 267 |
280 #if defined(OS_MACOSX) | 268 #if defined(OS_MACOSX) |
281 #define MAYBE_ExtensionAccessibleResources DISABLED_ExtensionAccessibleResources | 269 #define MAYBE_ExtensionAccessibleResources DISABLED_ExtensionAccessibleResources |
282 #else | 270 #else |
283 #define MAYBE_ExtensionAccessibleResources ExtensionAccessibleResources | 271 #define MAYBE_ExtensionAccessibleResources ExtensionAccessibleResources |
284 #endif | 272 #endif |
285 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 273 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
286 MAYBE_ExtensionAccessibleResources) { | 274 MAYBE_ExtensionAccessibleResources) { |
287 ASSERT_TRUE(RunExtensionSubtest("accessible_cer", "main.html")) << message_; | 275 ASSERT_TRUE(RunExtensionSubtest("accessible_cer", "main.html")) << message_; |
288 } | 276 } |
OLD | NEW |