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