| 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(), | 54 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 55 "", | 55 L"window.domAutomationController.send(document.title)", |
| 56 "window.domAutomationController.send(document.title)", | 56 &result)); |
| 57 &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::ExecuteJavaScriptAndExtractString( |
| 67 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 66 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 68 "", | 67 L"window.domAutomationController.send(document.title)", |
| 69 "window.domAutomationController.send(document.title)", | 68 &result)); |
| 70 &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::ExecuteJavaScriptAndExtractString( |
| 82 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 80 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 83 "", | 81 L"window.domAutomationController.send(document.title)", |
| 84 "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::ExecuteJavaScriptAndExtractString( |
| 99 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 96 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 100 "", | 97 L"window.domAutomationController.send(document.title)", |
| 101 "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"), |
| 111 // Tests manifest_version 1 behavior, so warnings are expected. | 107 // Tests manifest_version 1 behavior, so warnings are expected. |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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::ExecuteJavaScriptAndExtractString( |
| 164 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 160 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 165 "", | 161 L"window.domAutomationController.send(document.title)", |
| 166 "window.domAutomationController.send(document.title)", | 162 &result)); |
| 167 &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::ExecuteJavaScriptAndExtractString( |
| 177 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 172 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 178 "", | 173 L"window.domAutomationController.send(document.title)", |
| 179 "window.domAutomationController.send(document.title)", | 174 &result)); |
| 180 &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::ExecuteJavaScriptAndExtractString( |
| 190 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 184 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 191 "", | 185 L"window.domAutomationController.send(document.title)", |
| 192 "window.domAutomationController.send(document.title)", | 186 &result)); |
| 193 &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::ExecuteJavaScriptAndExtractString( |
| 202 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 195 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 203 "", | 196 L"window.domAutomationController.send(document.title)", |
| 204 "window.domAutomationController.send(document.title)", | 197 &result)); |
| 205 &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::ExecuteJavaScriptAndExtractString( |
| 214 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 206 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 215 "", | 207 L"window.domAutomationController.send(document.title)", |
| 216 "window.domAutomationController.send(document.title)", | 208 &result)); |
| 217 &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::ExecuteJavaScriptAndExtractString( |
| 226 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 217 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 227 "", | 218 L"window.domAutomationController.send(document.title)", |
| 228 "window.domAutomationController.send(document.title)", | 219 &result)); |
| 229 &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::ExecuteJavaScriptAndExtractString( |
| 241 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 231 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 242 "", | 232 L"window.domAutomationController.send(document.title)", |
| 243 "window.domAutomationController.send(document.title)", | 233 &result)); |
| 244 &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::ExecuteJavaScriptAndExtractString( |
| 262 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 251 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 263 "", | 252 L"window.domAutomationController.send(document.title)", |
| 264 "window.domAutomationController.send(document.title)", | 253 &result)); |
| 265 &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 |