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