| 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/command_line.h" |
| 6 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 7 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/app/chrome_command_ids.h" | 10 #include "chrome/app/chrome_command_ids.h" |
| 10 #include "chrome/browser/chrome_notification_types.h" | 11 #include "chrome/browser/chrome_notification_types.h" |
| 11 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" | 12 #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" | 13 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsert
est_util.h" |
| 13 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
| 14 #include "chrome/browser/ui/browser_commands.h" | 15 #include "chrome/browser/ui/browser_commands.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 16 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 16 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
| 17 #include "chrome/test/base/in_process_browser_test.h" | 18 #include "chrome/test/base/in_process_browser_test.h" |
| 18 #include "chrome/test/base/ui_test_utils.h" | 19 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "content/public/browser/navigation_controller.h" | 20 #include "content/public/browser/navigation_controller.h" |
| 20 #include "content/public/browser/navigation_entry.h" | 21 #include "content/public/browser/navigation_entry.h" |
| 21 #include "content/public/browser/notification_service.h" | 22 #include "content/public/browser/notification_service.h" |
| 22 #include "content/public/browser/render_view_host.h" | 23 #include "content/public/browser/render_view_host.h" |
| 23 #include "content/public/browser/web_contents.h" | 24 #include "content/public/browser/web_contents.h" |
| 25 #include "content/public/common/content_switches.h" |
| 24 #include "content/public/test/browser_test_utils.h" | 26 #include "content/public/test/browser_test_utils.h" |
| 25 #include "net/test/spawned_test_server/spawned_test_server.h" | 27 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 26 #include "third_party/WebKit/public/web/WebInputEvent.h" | 28 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| 27 | 29 |
| 28 namespace { | 30 namespace { |
| 29 | 31 |
| 30 const base::FilePath::CharType kDocRoot[] = | 32 const base::FilePath::CharType kDocRoot[] = |
| 31 FILE_PATH_LITERAL("chrome/test/data/referrer_policy"); | 33 FILE_PATH_LITERAL("chrome/test/data/referrer_policy"); |
| 32 | 34 |
| 33 } // namespace | 35 } // namespace |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 title_watcher->AlsoWaitForTitle( | 89 title_watcher->AlsoWaitForTitle( |
| 88 GetExpectedTitle(url, EXPECT_FULL_REFERRER)); | 90 GetExpectedTitle(url, EXPECT_FULL_REFERRER)); |
| 89 title_watcher->AlsoWaitForTitle( | 91 title_watcher->AlsoWaitForTitle( |
| 90 GetExpectedTitle(url, EXPECT_ORIGIN_AS_REFERRER)); | 92 GetExpectedTitle(url, EXPECT_ORIGIN_AS_REFERRER)); |
| 91 } | 93 } |
| 92 | 94 |
| 93 // Returns a string representation of a given |referrer_policy|. | 95 // Returns a string representation of a given |referrer_policy|. |
| 94 std::string ReferrerPolicyToString(blink::WebReferrerPolicy referrer_policy) { | 96 std::string ReferrerPolicyToString(blink::WebReferrerPolicy referrer_policy) { |
| 95 switch (referrer_policy) { | 97 switch (referrer_policy) { |
| 96 case blink::WebReferrerPolicyDefault: | 98 case blink::WebReferrerPolicyDefault: |
| 99 return "no-meta"; |
| 100 case blink::WebReferrerPolicyNoReferrerWhenDowngrade: |
| 97 return "default"; | 101 return "default"; |
| 98 case blink::WebReferrerPolicyOrigin: | 102 case blink::WebReferrerPolicyOrigin: |
| 99 return "origin"; | 103 return "origin"; |
| 100 case blink::WebReferrerPolicyAlways: | 104 case blink::WebReferrerPolicyAlways: |
| 101 return "always"; | 105 return "always"; |
| 102 case blink::WebReferrerPolicyNever: | 106 case blink::WebReferrerPolicyNever: |
| 103 return "never"; | 107 return "never"; |
| 104 default: | 108 default: |
| 105 NOTREACHED(); | 109 NOTREACHED(); |
| 106 return ""; | 110 return ""; |
| 107 } | 111 } |
| 108 } | 112 } |
| 109 | 113 |
| 110 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, }; | 114 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, }; |
| 111 | 115 |
| 112 enum LinkType { REGULAR_LINK, LINK_WITH_TARGET_BLANK, }; | 116 enum LinkType { REGULAR_LINK, LINK_WITH_TARGET_BLANK, }; |
| 113 | 117 |
| 114 enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, }; | 118 enum RedirectType { |
| 119 NO_REDIRECT, |
| 120 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, |
| 121 SERVER_REDIRECT_FROM_HTTP_TO_HTTP, |
| 122 SERVER_REDIRECT_FROM_HTTP_TO_HTTPS |
| 123 }; |
| 115 | 124 |
| 116 std::string RedirectTypeToString(RedirectType redirect) { | 125 std::string RedirectTypeToString(RedirectType redirect) { |
| 117 switch (redirect) { | 126 switch (redirect) { |
| 118 case NO_REDIRECT: | 127 case NO_REDIRECT: |
| 119 return "none"; | 128 return "none"; |
| 120 case SERVER_REDIRECT: | 129 case SERVER_REDIRECT_FROM_HTTPS_TO_HTTP: |
| 121 return "https"; | 130 return "https2http"; |
| 122 case SERVER_REDIRECT_ON_HTTP: | 131 case SERVER_REDIRECT_FROM_HTTP_TO_HTTP: |
| 123 return "http"; | 132 return "http2http"; |
| 133 case SERVER_REDIRECT_FROM_HTTP_TO_HTTPS: |
| 134 return "http2https"; |
| 124 } | 135 } |
| 125 NOTREACHED(); | 136 NOTREACHED(); |
| 126 return ""; | 137 return ""; |
| 127 } | 138 } |
| 128 | 139 |
| 129 // Navigates from a page with a given |referrer_policy| and checks that the | 140 // Navigates from a page with a given |referrer_policy| and checks that the |
| 130 // reported referrer matches the expectation. | 141 // reported referrer matches the expectation. |
| 131 // Parameters: | 142 // Parameters: |
| 132 // referrer_policy: The referrer policy to test. | 143 // referrer_policy: The referrer policy to test. |
| 133 // start_protocol: The protocol the test should start on. | 144 // start_protocol: The protocol the test should start on. |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 START_ON_HTTPS, | 360 START_ON_HTTPS, |
| 350 REGULAR_LINK, | 361 REGULAR_LINK, |
| 351 NO_REDIRECT, | 362 NO_REDIRECT, |
| 352 NEW_FOREGROUND_TAB, | 363 NEW_FOREGROUND_TAB, |
| 353 blink::WebMouseEvent::ButtonRight, | 364 blink::WebMouseEvent::ButtonRight, |
| 354 EXPECT_ORIGIN_AS_REFERRER); | 365 EXPECT_ORIGIN_AS_REFERRER); |
| 355 } | 366 } |
| 356 | 367 |
| 357 // Content initiated navigation, from HTTP to HTTP via server redirect. | 368 // Content initiated navigation, from HTTP to HTTP via server redirect. |
| 358 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Redirect) { | 369 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Redirect) { |
| 359 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 370 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK, |
| 360 START_ON_HTTP, | 371 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB, |
| 361 REGULAR_LINK, | 372 blink::WebMouseEvent::ButtonNone, EXPECT_ORIGIN_AS_REFERRER); |
| 362 SERVER_REDIRECT, | |
| 363 CURRENT_TAB, | |
| 364 blink::WebMouseEvent::ButtonNone, | |
| 365 EXPECT_ORIGIN_AS_REFERRER); | |
| 366 } | 373 } |
| 367 | 374 |
| 368 // Content initiated navigation, from HTTPS to HTTP via server redirect. | 375 // Content initiated navigation, from HTTPS to HTTP via server redirect. |
| 369 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsRedirect) { | 376 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsRedirect) { |
| 370 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 377 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 371 START_ON_HTTPS, | 378 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB, |
| 372 REGULAR_LINK, | 379 blink::WebMouseEvent::ButtonNone, EXPECT_ORIGIN_AS_REFERRER); |
| 373 SERVER_REDIRECT, | |
| 374 CURRENT_TAB, | |
| 375 blink::WebMouseEvent::ButtonNone, | |
| 376 EXPECT_ORIGIN_AS_REFERRER); | |
| 377 } | 380 } |
| 378 | 381 |
| 379 // User initiated navigation, from HTTP to HTTP via server redirect. | 382 // User initiated navigation, from HTTP to HTTP via server redirect. |
| 380 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, LeftClickRedirect) { | 383 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, LeftClickRedirect) { |
| 381 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 384 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK, |
| 382 START_ON_HTTP, | 385 SERVER_REDIRECT_FROM_HTTP_TO_HTTP, CURRENT_TAB, |
| 383 REGULAR_LINK, | 386 blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER); |
| 384 SERVER_REDIRECT, | |
| 385 CURRENT_TAB, | |
| 386 blink::WebMouseEvent::ButtonLeft, | |
| 387 EXPECT_ORIGIN_AS_REFERRER); | |
| 388 } | 387 } |
| 389 | 388 |
| 390 // User initiated navigation, from HTTPS to HTTP via server redirect. | 389 // User initiated navigation, from HTTPS to HTTP via server redirect. |
| 391 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsLeftClickRedirect) { | 390 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsLeftClickRedirect) { |
| 392 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 391 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 393 START_ON_HTTPS, | 392 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB, |
| 394 REGULAR_LINK, | 393 blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER); |
| 395 SERVER_REDIRECT, | |
| 396 CURRENT_TAB, | |
| 397 blink::WebMouseEvent::ButtonLeft, | |
| 398 EXPECT_ORIGIN_AS_REFERRER); | |
| 399 } | 394 } |
| 400 | 395 |
| 401 // User initiated navigation, middle click, from HTTP to HTTP via server | 396 // User initiated navigation, middle click, from HTTP to HTTP via server |
| 402 // redirect. | 397 // redirect. |
| 403 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickRedirect) { | 398 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickRedirect) { |
| 404 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 399 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK, |
| 405 START_ON_HTTP, | 400 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_BACKGROUND_TAB, |
| 406 REGULAR_LINK, | |
| 407 SERVER_REDIRECT, | |
| 408 NEW_BACKGROUND_TAB, | |
| 409 blink::WebMouseEvent::ButtonMiddle, | 401 blink::WebMouseEvent::ButtonMiddle, |
| 410 EXPECT_ORIGIN_AS_REFERRER); | 402 EXPECT_ORIGIN_AS_REFERRER); |
| 411 } | 403 } |
| 412 | 404 |
| 413 // User initiated navigation, middle click, from HTTPS to HTTP via server | 405 // User initiated navigation, middle click, from HTTPS to HTTP via server |
| 414 // redirect. | 406 // redirect. |
| 415 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickRedirect) { | 407 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickRedirect) { |
| 416 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 408 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 417 START_ON_HTTPS, | 409 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_BACKGROUND_TAB, |
| 418 REGULAR_LINK, | |
| 419 SERVER_REDIRECT, | |
| 420 NEW_BACKGROUND_TAB, | |
| 421 blink::WebMouseEvent::ButtonMiddle, | 410 blink::WebMouseEvent::ButtonMiddle, |
| 422 EXPECT_ORIGIN_AS_REFERRER); | 411 EXPECT_ORIGIN_AS_REFERRER); |
| 423 } | 412 } |
| 424 | 413 |
| 425 // User initiated navigation, target blank, from HTTP to HTTP via server | 414 // User initiated navigation, target blank, from HTTP to HTTP via server |
| 426 // redirect. | 415 // redirect. |
| 427 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { | 416 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { |
| 428 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 417 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, |
| 429 START_ON_HTTP, | 418 LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, |
| 430 LINK_WITH_TARGET_BLANK, | 419 NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonLeft, |
| 431 SERVER_REDIRECT, | |
| 432 NEW_FOREGROUND_TAB, | |
| 433 blink::WebMouseEvent::ButtonLeft, | |
| 434 EXPECT_ORIGIN_AS_REFERRER); | 420 EXPECT_ORIGIN_AS_REFERRER); |
| 435 } | 421 } |
| 436 | 422 |
| 437 // User initiated navigation, target blank, from HTTPS to HTTP via server | 423 // User initiated navigation, target blank, from HTTPS to HTTP via server |
| 438 // redirect. | 424 // redirect. |
| 439 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { | 425 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { |
| 440 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 426 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, |
| 441 START_ON_HTTPS, | 427 LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, |
| 442 LINK_WITH_TARGET_BLANK, | 428 NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonLeft, |
| 443 SERVER_REDIRECT, | |
| 444 NEW_FOREGROUND_TAB, | |
| 445 blink::WebMouseEvent::ButtonLeft, | |
| 446 EXPECT_ORIGIN_AS_REFERRER); | 429 EXPECT_ORIGIN_AS_REFERRER); |
| 447 } | 430 } |
| 448 | 431 |
| 449 // User initiated navigation, middle click, target blank, from HTTP to HTTP via | 432 // User initiated navigation, middle click, target blank, from HTTP to HTTP via |
| 450 // server redirect. | 433 // server redirect. |
| 451 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { | 434 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { |
| 452 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 435 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, |
| 453 START_ON_HTTP, | 436 LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, |
| 454 LINK_WITH_TARGET_BLANK, | 437 NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonMiddle, |
| 455 SERVER_REDIRECT, | |
| 456 NEW_FOREGROUND_TAB, | |
| 457 blink::WebMouseEvent::ButtonMiddle, | |
| 458 EXPECT_ORIGIN_AS_REFERRER); | 438 EXPECT_ORIGIN_AS_REFERRER); |
| 459 } | 439 } |
| 460 | 440 |
| 461 // User initiated navigation, middle click, target blank, from HTTPS to HTTP | 441 // User initiated navigation, middle click, target blank, from HTTPS to HTTP |
| 462 // via server redirect. | 442 // via server redirect. |
| 463 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, | 443 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, |
| 464 HttpsMiddleClickTargetBlankRedirect) { | 444 HttpsMiddleClickTargetBlankRedirect) { |
| 465 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 445 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, |
| 466 START_ON_HTTPS, | 446 LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, |
| 467 LINK_WITH_TARGET_BLANK, | 447 NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonMiddle, |
| 468 SERVER_REDIRECT, | |
| 469 NEW_FOREGROUND_TAB, | |
| 470 blink::WebMouseEvent::ButtonMiddle, | |
| 471 EXPECT_ORIGIN_AS_REFERRER); | 448 EXPECT_ORIGIN_AS_REFERRER); |
| 472 } | 449 } |
| 473 | 450 |
| 474 // Context menu, from HTTP to HTTP via server redirect. | 451 // Context menu, from HTTP to HTTP via server redirect. |
| 475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { | 452 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { |
| 476 ContextMenuNotificationObserver context_menu_observer( | 453 ContextMenuNotificationObserver context_menu_observer( |
| 477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 454 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 478 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 455 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK, |
| 479 START_ON_HTTP, | 456 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_FOREGROUND_TAB, |
| 480 REGULAR_LINK, | 457 blink::WebMouseEvent::ButtonRight, EXPECT_ORIGIN_AS_REFERRER); |
| 481 SERVER_REDIRECT, | |
| 482 NEW_FOREGROUND_TAB, | |
| 483 blink::WebMouseEvent::ButtonRight, | |
| 484 EXPECT_ORIGIN_AS_REFERRER); | |
| 485 } | 458 } |
| 486 | 459 |
| 487 // Context menu, from HTTPS to HTTP via server redirect. | 460 // Context menu, from HTTPS to HTTP via server redirect. |
| 488 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuRedirect) { | 461 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuRedirect) { |
| 489 ContextMenuNotificationObserver context_menu_observer( | 462 ContextMenuNotificationObserver context_menu_observer( |
| 490 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 463 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 491 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 464 RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 492 START_ON_HTTPS, | 465 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_FOREGROUND_TAB, |
| 493 REGULAR_LINK, | 466 blink::WebMouseEvent::ButtonRight, EXPECT_ORIGIN_AS_REFERRER); |
| 494 SERVER_REDIRECT, | |
| 495 NEW_FOREGROUND_TAB, | |
| 496 blink::WebMouseEvent::ButtonRight, | |
| 497 EXPECT_ORIGIN_AS_REFERRER); | |
| 498 } | 467 } |
| 499 | 468 |
| 500 // Tests history navigation actions: Navigate from A to B with a referrer | 469 // Tests history navigation actions: Navigate from A to B with a referrer |
| 501 // policy, then navigate to C, back to B, and reload. | 470 // policy, then navigate to C, back to B, and reload. |
| 502 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, History) { | 471 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, History) { |
| 503 // Navigate from A to B. | 472 // Navigate from A to B. |
| 504 GURL start_url = RunReferrerTest(blink::WebReferrerPolicyOrigin, | 473 GURL start_url = RunReferrerTest( |
| 505 START_ON_HTTPS, | 474 blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 506 REGULAR_LINK, | 475 SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB, |
| 507 SERVER_REDIRECT, | 476 blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER); |
| 508 CURRENT_TAB, | |
| 509 blink::WebMouseEvent::ButtonLeft, | |
| 510 EXPECT_ORIGIN_AS_REFERRER); | |
| 511 | 477 |
| 512 // Navigate to C. | 478 // Navigate to C. |
| 513 ui_test_utils::NavigateToURL(browser(), test_server_->GetURL(std::string())); | 479 ui_test_utils::NavigateToURL(browser(), test_server_->GetURL(std::string())); |
| 514 | 480 |
| 515 base::string16 expected_title = | 481 base::string16 expected_title = |
| 516 GetExpectedTitle(start_url, EXPECT_ORIGIN_AS_REFERRER); | 482 GetExpectedTitle(start_url, EXPECT_ORIGIN_AS_REFERRER); |
| 517 content::WebContents* tab = | 483 content::WebContents* tab = |
| 518 browser()->tab_strip_model()->GetActiveWebContents(); | 484 browser()->tab_strip_model()->GetActiveWebContents(); |
| 519 scoped_ptr<content::TitleWatcher> title_watcher( | 485 scoped_ptr<content::TitleWatcher> title_watcher( |
| 520 new content::TitleWatcher(tab, expected_title)); | 486 new content::TitleWatcher(tab, expected_title)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 537 AddAllPossibleTitles(start_url, title_watcher.get()); | 503 AddAllPossibleTitles(start_url, title_watcher.get()); |
| 538 | 504 |
| 539 // Shift-reload to B. | 505 // Shift-reload to B. |
| 540 chrome::ReloadIgnoringCache(browser(), CURRENT_TAB); | 506 chrome::ReloadIgnoringCache(browser(), CURRENT_TAB); |
| 541 EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle()); | 507 EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle()); |
| 542 } | 508 } |
| 543 | 509 |
| 544 // Tests that reloading a site for "request tablet version" correctly clears | 510 // Tests that reloading a site for "request tablet version" correctly clears |
| 545 // the referrer. | 511 // the referrer. |
| 546 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, RequestTabletSite) { | 512 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, RequestTabletSite) { |
| 547 GURL start_url = RunReferrerTest(blink::WebReferrerPolicyOrigin, | 513 GURL start_url = RunReferrerTest( |
| 548 START_ON_HTTPS, | 514 blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK, |
| 549 REGULAR_LINK, | 515 SERVER_REDIRECT_FROM_HTTP_TO_HTTP, CURRENT_TAB, |
| 550 SERVER_REDIRECT_ON_HTTP, | 516 blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER); |
| 551 CURRENT_TAB, | |
| 552 blink::WebMouseEvent::ButtonLeft, | |
| 553 EXPECT_ORIGIN_AS_REFERRER); | |
| 554 | 517 |
| 555 base::string16 expected_title = | 518 base::string16 expected_title = |
| 556 GetExpectedTitle(start_url, EXPECT_EMPTY_REFERRER); | 519 GetExpectedTitle(start_url, EXPECT_EMPTY_REFERRER); |
| 557 content::WebContents* tab = | 520 content::WebContents* tab = |
| 558 browser()->tab_strip_model()->GetActiveWebContents(); | 521 browser()->tab_strip_model()->GetActiveWebContents(); |
| 559 content::TitleWatcher title_watcher(tab, expected_title); | 522 content::TitleWatcher title_watcher(tab, expected_title); |
| 560 | 523 |
| 561 // Watch for all possible outcomes to avoid timeouts if something breaks. | 524 // Watch for all possible outcomes to avoid timeouts if something breaks. |
| 562 AddAllPossibleTitles(start_url, &title_watcher); | 525 AddAllPossibleTitles(start_url, &title_watcher); |
| 563 | 526 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 | 574 |
| 612 // Verify that the full url of the iframe was used as referrer. | 575 // Verify that the full url of the iframe was used as referrer. |
| 613 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 576 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 614 frame, | 577 frame, |
| 615 "window.domAutomationController.send(document.title)", | 578 "window.domAutomationController.send(document.title)", |
| 616 &title)); | 579 &title)); |
| 617 EXPECT_EQ("Referrer is " + | 580 EXPECT_EQ("Referrer is " + |
| 618 test_server_->GetURL("files/referrer-policy-log.html").spec(), | 581 test_server_->GetURL("files/referrer-policy-log.html").spec(), |
| 619 title); | 582 title); |
| 620 } | 583 } |
| 584 |
| 585 // Reduced 'referer' granularity flag tests. |
| 586 |
| 587 // User initiated navigation, from HTTP to HTTPS via server redirect. |
| 588 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpLeftClickRedirectDefaultNoFlag) { |
| 589 RunReferrerTest(blink::WebReferrerPolicyDefault, START_ON_HTTP, REGULAR_LINK, |
| 590 SERVER_REDIRECT_FROM_HTTP_TO_HTTPS, CURRENT_TAB, |
| 591 blink::WebMouseEvent::ButtonLeft, EXPECT_FULL_REFERRER); |
| 592 } |
| 593 |
| 594 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpLeftClickRedirectDefaultFlag) { |
| 595 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 596 switches::kReducedReferrerGranularity); |
| 597 RunReferrerTest(blink::WebReferrerPolicyDefault, START_ON_HTTP, REGULAR_LINK, |
| 598 SERVER_REDIRECT_FROM_HTTP_TO_HTTPS, CURRENT_TAB, |
| 599 blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER); |
| 600 } |
| OLD | NEW |