| 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/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 #include "chrome/browser/extensions/extension_apitest.h" | 8 #include "chrome/browser/extensions/extension_apitest.h" |
| 9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 10 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 11 #include "chrome/common/chrome_switches.h" | 11 #include "chrome/common/chrome_switches.h" |
| 12 #include "chrome/test/base/test_switches.h" | 12 #include "chrome/test/base/test_switches.h" |
| 13 #include "chrome/test/base/ui_test_utils.h" | 13 #include "chrome/test/base/ui_test_utils.h" |
| 14 #include "content/public/browser/navigation_handle.h" | 14 #include "content/public/browser/navigation_handle.h" |
| 15 #include "content/public/browser/notification_service.h" |
| 15 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
| 16 #include "content/public/browser/web_contents_observer.h" | 17 #include "content/public/browser/web_contents_observer.h" |
| 17 #include "content/public/test/browser_test_utils.h" | 18 #include "content/public/test/browser_test_utils.h" |
| 18 #include "extensions/common/switches.h" | 19 #include "extensions/common/switches.h" |
| 19 #include "net/dns/mock_host_resolver.h" | 20 #include "net/dns/mock_host_resolver.h" |
| 20 #include "net/test/embedded_test_server/embedded_test_server.h" | 21 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 21 #include "url/gurl.h" | 22 #include "url/gurl.h" |
| 22 | 23 |
| 23 class ExtensionResourceRequestPolicyTest : public ExtensionApiTest { | 24 class ExtensionResourceRequestPolicyTest : public ExtensionApiTest { |
| 24 protected: | 25 protected: |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 browser()->tab_strip_model()->GetActiveWebContents(), | 229 browser()->tab_strip_model()->GetActiveWebContents(), |
| 229 "window.domAutomationController.send(document.title)", | 230 "window.domAutomationController.send(document.title)", |
| 230 &result)); | 231 &result)); |
| 231 EXPECT_EQ("New Tab Page Loaded Successfully", result); | 232 EXPECT_EQ("New Tab Page Loaded Successfully", result); |
| 232 } | 233 } |
| 233 | 234 |
| 234 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 235 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
| 235 LinkToWebAccessibleResources) { | 236 LinkToWebAccessibleResources) { |
| 236 std::string result; | 237 std::string result; |
| 237 ASSERT_TRUE(embedded_test_server()->Start()); | 238 ASSERT_TRUE(embedded_test_server()->Start()); |
| 238 ASSERT_TRUE(LoadExtension(test_data_dir_ | 239 const extensions::Extension* extension = LoadExtension( |
| 239 .AppendASCII("extension_resource_request_policy") | 240 test_data_dir_.AppendASCII("extension_resource_request_policy") |
| 240 .AppendASCII("web_accessible"))); | 241 .AppendASCII("web_accessible")); |
| 242 ASSERT_TRUE(extension); |
| 241 | 243 |
| 242 GURL accessible_linked_resource(embedded_test_server()->GetURL( | 244 GURL accessible_linked_resource(embedded_test_server()->GetURL( |
| 243 "/extensions/api_test/extension_resource_request_policy/" | 245 "/extensions/api_test/extension_resource_request_policy/" |
| 244 "web_accessible/accessible_link_resource.html")); | 246 "web_accessible/accessible_link_resource.html")); |
| 245 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 247 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
| 246 browser(), accessible_linked_resource, 1); | 248 browser(), accessible_linked_resource, 1); |
| 247 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 249 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| 248 browser()->tab_strip_model()->GetActiveWebContents(), | 250 browser()->tab_strip_model()->GetActiveWebContents(), |
| 249 "window.domAutomationController.send(document.URL)", | 251 "window.domAutomationController.send(document.URL)", |
| 250 &result)); | 252 &result)); |
| 251 EXPECT_NE("about:blank", result); | 253 EXPECT_NE("about:blank", result); |
| 252 | 254 |
| 253 GURL nonaccessible_linked_resource(embedded_test_server()->GetURL( | 255 GURL nonaccessible_linked_resource(embedded_test_server()->GetURL( |
| 254 "/extensions/api_test/extension_resource_request_policy/" | 256 "/extensions/api_test/extension_resource_request_policy/" |
| 255 "web_accessible/nonaccessible_link_resource.html")); | 257 "web_accessible/nonaccessible_link_resource.html")); |
| 256 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), | 258 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), |
| 257 nonaccessible_linked_resource, 2); | 259 nonaccessible_linked_resource, 2); |
| 258 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 260 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| 259 browser()->tab_strip_model()->GetActiveWebContents(), | 261 browser()->tab_strip_model()->GetActiveWebContents(), |
| 260 "window.domAutomationController.send(document.URL)", | 262 "window.domAutomationController.send(document.URL)", |
| 261 &result)); | 263 &result)); |
| 262 EXPECT_EQ("about:blank", result); | 264 EXPECT_EQ("about:blank", result); |
| 263 | 265 |
| 266 |
| 267 // Redirects can sometimes occur before the load event, so use a |
| 268 // UrlLoadObserver instead of blocking waiting for two load events. |
| 269 GURL accessible_url = extension->GetResourceURL("/test.png"); |
| 270 ui_test_utils::UrlLoadObserver accessible_observer( |
| 271 accessible_url, content::NotificationService::AllSources()); |
| 264 GURL accessible_client_redirect_resource(embedded_test_server()->GetURL( | 272 GURL accessible_client_redirect_resource(embedded_test_server()->GetURL( |
| 265 "/extensions/api_test/extension_resource_request_policy/" | 273 "/extensions/api_test/extension_resource_request_policy/" |
| 266 "web_accessible/accessible_redirect_resource.html")); | 274 "web_accessible/accessible_redirect_resource.html")); |
| 267 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), | 275 ui_test_utils::NavigateToURL(browser(), accessible_client_redirect_resource); |
| 268 accessible_client_redirect_resource, 2); | 276 accessible_observer.Wait(); |
| 269 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 277 EXPECT_EQ(accessible_url, browser() |
| 270 browser()->tab_strip_model()->GetActiveWebContents(), | 278 ->tab_strip_model() |
| 271 "window.domAutomationController.send(document.URL)", | 279 ->GetActiveWebContents() |
| 272 &result)); | 280 ->GetLastCommittedURL()); |
| 273 EXPECT_NE("about:blank", result); | |
| 274 | 281 |
| 282 ui_test_utils::UrlLoadObserver nonaccessible_observer( |
| 283 GURL("about:blank"), content::NotificationService::AllSources()); |
| 275 GURL nonaccessible_client_redirect_resource(embedded_test_server()->GetURL( | 284 GURL nonaccessible_client_redirect_resource(embedded_test_server()->GetURL( |
| 276 "/extensions/api_test/extension_resource_request_policy/" | 285 "/extensions/api_test/extension_resource_request_policy/" |
| 277 "web_accessible/nonaccessible_redirect_resource.html")); | 286 "web_accessible/nonaccessible_redirect_resource.html")); |
| 278 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), | 287 ui_test_utils::NavigateToURL(browser(), |
| 279 nonaccessible_client_redirect_resource, 2); | 288 nonaccessible_client_redirect_resource); |
| 280 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 289 nonaccessible_observer.Wait(); |
| 281 browser()->tab_strip_model()->GetActiveWebContents(), | 290 EXPECT_EQ(GURL("about:blank"), browser() |
| 282 "window.domAutomationController.send(document.URL)", | 291 ->tab_strip_model() |
| 283 &result)); | 292 ->GetActiveWebContents() |
| 284 EXPECT_EQ("about:blank", result); | 293 ->GetLastCommittedURL()); |
| 285 } | 294 } |
| 286 | 295 |
| 287 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, | 296 IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, |
| 288 WebAccessibleResourcesWithCSP) { | 297 WebAccessibleResourcesWithCSP) { |
| 289 std::string result; | 298 std::string result; |
| 290 ASSERT_TRUE(embedded_test_server()->Start()); | 299 ASSERT_TRUE(embedded_test_server()->Start()); |
| 291 ASSERT_TRUE(LoadExtension(test_data_dir_ | 300 ASSERT_TRUE(LoadExtension(test_data_dir_ |
| 292 .AppendASCII("extension_resource_request_policy") | 301 .AppendASCII("extension_resource_request_policy") |
| 293 .AppendASCII("web_accessible"))); | 302 .AppendASCII("web_accessible"))); |
| 294 | 303 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 | 381 |
| 373 content::WebContents* web_contents = | 382 content::WebContents* web_contents = |
| 374 browser()->tab_strip_model()->GetActiveWebContents(); | 383 browser()->tab_strip_model()->GetActiveWebContents(); |
| 375 | 384 |
| 376 GURL private_page( | 385 GURL private_page( |
| 377 "chrome-extension://kegmjfcnjamahdnldjmlpachmpielcdk/private.html"); | 386 "chrome-extension://kegmjfcnjamahdnldjmlpachmpielcdk/private.html"); |
| 378 NavigationErrorObserver observer(web_contents, private_page); | 387 NavigationErrorObserver observer(web_contents, private_page); |
| 379 ASSERT_TRUE(content::ExecuteScript(web_contents, "navigateFrameNow()")); | 388 ASSERT_TRUE(content::ExecuteScript(web_contents, "navigateFrameNow()")); |
| 380 observer.Wait(); | 389 observer.Wait(); |
| 381 } | 390 } |
| OLD | NEW |