| 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
| 7 #include "base/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
| 10 #include "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
| 11 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" | 11 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" |
| 12 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsert
est_util.h" | 12 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsert
est_util.h" |
| 13 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
| 14 #include "chrome/browser/ui/browser_commands.h" | 14 #include "chrome/browser/ui/browser_commands.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 16 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
| 17 #include "chrome/test/base/in_process_browser_test.h" | 17 #include "chrome/test/base/in_process_browser_test.h" |
| 18 #include "chrome/test/base/ui_test_utils.h" | 18 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "content/public/browser/navigation_controller.h" | 19 #include "content/public/browser/navigation_controller.h" |
| 20 #include "content/public/browser/navigation_entry.h" | 20 #include "content/public/browser/navigation_entry.h" |
| 21 #include "content/public/browser/notification_service.h" | 21 #include "content/public/browser/notification_service.h" |
| 22 #include "content/public/browser/render_view_host.h" | 22 #include "content/public/browser/render_view_host.h" |
| 23 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" |
| 24 #include "content/public/test/browser_test_utils.h" | 24 #include "content/public/test/browser_test_utils.h" |
| 25 #include "net/test/spawned_test_server/spawned_test_server.h" | 25 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 26 #include "third_party/WebKit/public/web/WebInputEvent.h" | 26 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| 27 | 27 |
| 28 // GTK requires a X11-level mouse event to open a context menu correctly. | |
| 29 #if defined(TOOLKIT_GTK) | |
| 30 #define MAYBE_ContextMenuOrigin DISABLED_ContextMenuOrigin | |
| 31 #define MAYBE_HttpsContextMenuOrigin DISABLED_HttpsContextMenuOrigin | |
| 32 #define MAYBE_ContextMenuRedirect DISABLED_ContextMenuRedirect | |
| 33 #define MAYBE_HttpsContextMenuRedirect DISABLED_HttpsContextMenuRedirect | |
| 34 #else | |
| 35 #define MAYBE_ContextMenuOrigin ContextMenuOrigin | |
| 36 #define MAYBE_HttpsContextMenuOrigin HttpsContextMenuOrigin | |
| 37 #define MAYBE_ContextMenuRedirect ContextMenuRedirect | |
| 38 #define MAYBE_HttpsContextMenuRedirect HttpsContextMenuRedirect | |
| 39 #endif | |
| 40 | |
| 41 namespace { | 28 namespace { |
| 42 | 29 |
| 43 const base::FilePath::CharType kDocRoot[] = | 30 const base::FilePath::CharType kDocRoot[] = |
| 44 FILE_PATH_LITERAL("chrome/test/data/referrer_policy"); | 31 FILE_PATH_LITERAL("chrome/test/data/referrer_policy"); |
| 45 | 32 |
| 46 } // namespace | 33 } // namespace |
| 47 | 34 |
| 48 class ReferrerPolicyTest : public InProcessBrowserTest { | 35 class ReferrerPolicyTest : public InProcessBrowserTest { |
| 49 public: | 36 public: |
| 50 ReferrerPolicyTest() {} | 37 ReferrerPolicyTest() {} |
| 51 virtual ~ReferrerPolicyTest() {} | 38 virtual ~ReferrerPolicyTest() {} |
| 52 | 39 |
| 53 virtual void SetUp() OVERRIDE { | 40 virtual void SetUp() OVERRIDE { |
| 54 test_server_.reset(new net::SpawnedTestServer( | 41 test_server_.reset(new net::SpawnedTestServer( |
| 55 net::SpawnedTestServer::TYPE_HTTP, | 42 net::SpawnedTestServer::TYPE_HTTP, |
| 56 net::SpawnedTestServer::kLocalhost, | 43 net::SpawnedTestServer::kLocalhost, |
| 57 base::FilePath(kDocRoot))); | 44 base::FilePath(kDocRoot))); |
| 58 ASSERT_TRUE(test_server_->Start()); | 45 ASSERT_TRUE(test_server_->Start()); |
| 59 ssl_test_server_.reset(new net::SpawnedTestServer( | 46 ssl_test_server_.reset(new net::SpawnedTestServer( |
| 60 net::SpawnedTestServer::TYPE_HTTPS, | 47 net::SpawnedTestServer::TYPE_HTTPS, |
| 61 net::SpawnedTestServer::kLocalhost, | 48 net::SpawnedTestServer::kLocalhost, |
| 62 base::FilePath(kDocRoot))); | 49 base::FilePath(kDocRoot))); |
| 63 ASSERT_TRUE(ssl_test_server_->Start()); | 50 ASSERT_TRUE(ssl_test_server_->Start()); |
| 64 | 51 |
| 65 InProcessBrowserTest::SetUp(); | 52 InProcessBrowserTest::SetUp(); |
| 66 } | 53 } |
| 67 | 54 |
| 68 protected: | 55 protected: |
| 69 enum ExpectedReferrer { | 56 enum ExpectedReferrer { |
| 70 EXPECT_EMPTY_REFERRER, | 57 EXPECT_EMPTY_REFERRER, |
| 71 EXPECT_FULL_REFERRER, | 58 EXPECT_FULL_REFERRER, |
| 72 EXPECT_ORIGIN_AS_REFERRER | 59 EXPECT_ORIGIN_AS_REFERRER |
| 73 }; | 60 }; |
| 74 | 61 |
| 75 // Returns the expected title for the tab with the given (full) referrer and | 62 // Returns the expected title for the tab with the given (full) referrer and |
| 76 // the expected modification of it. | 63 // the expected modification of it. |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 322 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 336 START_ON_HTTPS, | 323 START_ON_HTTPS, |
| 337 LINk_WITH_TARGET_BLANK, | 324 LINk_WITH_TARGET_BLANK, |
| 338 NO_REDIRECT, | 325 NO_REDIRECT, |
| 339 NEW_FOREGROUND_TAB, | 326 NEW_FOREGROUND_TAB, |
| 340 blink::WebMouseEvent::ButtonMiddle, | 327 blink::WebMouseEvent::ButtonMiddle, |
| 341 EXPECT_ORIGIN_AS_REFERRER); | 328 EXPECT_ORIGIN_AS_REFERRER); |
| 342 } | 329 } |
| 343 | 330 |
| 344 // Context menu, from HTTP to HTTP. | 331 // Context menu, from HTTP to HTTP. |
| 345 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_ContextMenuOrigin) { | 332 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuOrigin) { |
| 346 ContextMenuNotificationObserver context_menu_observer( | 333 ContextMenuNotificationObserver context_menu_observer( |
| 347 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 334 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 348 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 335 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 349 START_ON_HTTP, | 336 START_ON_HTTP, |
| 350 REGULAR_LINK, | 337 REGULAR_LINK, |
| 351 NO_REDIRECT, | 338 NO_REDIRECT, |
| 352 NEW_FOREGROUND_TAB, | 339 NEW_FOREGROUND_TAB, |
| 353 blink::WebMouseEvent::ButtonRight, | 340 blink::WebMouseEvent::ButtonRight, |
| 354 EXPECT_ORIGIN_AS_REFERRER); | 341 EXPECT_ORIGIN_AS_REFERRER); |
| 355 } | 342 } |
| 356 | 343 |
| 357 // Context menu, from HTTPS to HTTP. | 344 // Context menu, from HTTPS to HTTP. |
| 358 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_HttpsContextMenuOrigin) { | 345 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuOrigin) { |
| 359 ContextMenuNotificationObserver context_menu_observer( | 346 ContextMenuNotificationObserver context_menu_observer( |
| 360 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 347 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 361 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 348 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 362 START_ON_HTTPS, | 349 START_ON_HTTPS, |
| 363 REGULAR_LINK, | 350 REGULAR_LINK, |
| 364 NO_REDIRECT, | 351 NO_REDIRECT, |
| 365 NEW_FOREGROUND_TAB, | 352 NEW_FOREGROUND_TAB, |
| 366 blink::WebMouseEvent::ButtonRight, | 353 blink::WebMouseEvent::ButtonRight, |
| 367 EXPECT_ORIGIN_AS_REFERRER); | 354 EXPECT_ORIGIN_AS_REFERRER); |
| 368 } | 355 } |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 465 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 479 START_ON_HTTPS, | 466 START_ON_HTTPS, |
| 480 LINk_WITH_TARGET_BLANK, | 467 LINk_WITH_TARGET_BLANK, |
| 481 SERVER_REDIRECT, | 468 SERVER_REDIRECT, |
| 482 NEW_FOREGROUND_TAB, | 469 NEW_FOREGROUND_TAB, |
| 483 blink::WebMouseEvent::ButtonMiddle, | 470 blink::WebMouseEvent::ButtonMiddle, |
| 484 EXPECT_ORIGIN_AS_REFERRER); | 471 EXPECT_ORIGIN_AS_REFERRER); |
| 485 } | 472 } |
| 486 | 473 |
| 487 // Context menu, from HTTP to HTTP via server redirect. | 474 // Context menu, from HTTP to HTTP via server redirect. |
| 488 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_ContextMenuRedirect) { | 475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { |
| 489 ContextMenuNotificationObserver context_menu_observer( | 476 ContextMenuNotificationObserver context_menu_observer( |
| 490 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 491 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 478 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 492 START_ON_HTTP, | 479 START_ON_HTTP, |
| 493 REGULAR_LINK, | 480 REGULAR_LINK, |
| 494 SERVER_REDIRECT, | 481 SERVER_REDIRECT, |
| 495 NEW_FOREGROUND_TAB, | 482 NEW_FOREGROUND_TAB, |
| 496 blink::WebMouseEvent::ButtonRight, | 483 blink::WebMouseEvent::ButtonRight, |
| 497 EXPECT_ORIGIN_AS_REFERRER); | 484 EXPECT_ORIGIN_AS_REFERRER); |
| 498 } | 485 } |
| 499 | 486 |
| 500 // Context menu, from HTTPS to HTTP via server redirect. | 487 // Context menu, from HTTPS to HTTP via server redirect. |
| 501 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_HttpsContextMenuRedirect) { | 488 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuRedirect) { |
| 502 ContextMenuNotificationObserver context_menu_observer( | 489 ContextMenuNotificationObserver context_menu_observer( |
| 503 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 490 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 504 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 491 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 505 START_ON_HTTPS, | 492 START_ON_HTTPS, |
| 506 REGULAR_LINK, | 493 REGULAR_LINK, |
| 507 SERVER_REDIRECT, | 494 SERVER_REDIRECT, |
| 508 NEW_FOREGROUND_TAB, | 495 NEW_FOREGROUND_TAB, |
| 509 blink::WebMouseEvent::ButtonRight, | 496 blink::WebMouseEvent::ButtonRight, |
| 510 EXPECT_ORIGIN_AS_REFERRER); | 497 EXPECT_ORIGIN_AS_REFERRER); |
| 511 } | 498 } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 | 611 |
| 625 // Verify that the full url of the iframe was used as referrer. | 612 // Verify that the full url of the iframe was used as referrer. |
| 626 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 613 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 627 frame, | 614 frame, |
| 628 "window.domAutomationController.send(document.title)", | 615 "window.domAutomationController.send(document.title)", |
| 629 &title)); | 616 &title)); |
| 630 EXPECT_EQ("Referrer is " + | 617 EXPECT_EQ("Referrer is " + |
| 631 test_server_->GetURL("files/referrer-policy-log.html").spec(), | 618 test_server_->GetURL("files/referrer-policy-log.html").spec(), |
| 632 title); | 619 title); |
| 633 } | 620 } |
| OLD | NEW |