| 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" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 case blink::WebReferrerPolicyNever: | 102 case blink::WebReferrerPolicyNever: |
| 103 return "never"; | 103 return "never"; |
| 104 default: | 104 default: |
| 105 NOTREACHED(); | 105 NOTREACHED(); |
| 106 return ""; | 106 return ""; |
| 107 } | 107 } |
| 108 } | 108 } |
| 109 | 109 |
| 110 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, }; | 110 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, }; |
| 111 | 111 |
| 112 enum LinkType { REGULAR_LINK, LINk_WITH_TARGET_BLANK, }; | 112 enum LinkType { REGULAR_LINK, LINK_WITH_TARGET_BLANK, }; |
| 113 | 113 |
| 114 enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, }; | 114 enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, }; |
| 115 | 115 |
| 116 std::string RedirectTypeToString(RedirectType redirect) { | 116 std::string RedirectTypeToString(RedirectType redirect) { |
| 117 switch (redirect) { | 117 switch (redirect) { |
| 118 case NO_REDIRECT: | 118 case NO_REDIRECT: |
| 119 return "none"; | 119 return "none"; |
| 120 case SERVER_REDIRECT: | 120 case SERVER_REDIRECT: |
| 121 return "https"; | 121 return "https"; |
| 122 case SERVER_REDIRECT_ON_HTTP: | 122 case SERVER_REDIRECT_ON_HTTP: |
| (...skipping 29 matching lines...) Expand all Loading... |
| 152 ? ssl_test_server_.get() | 152 ? ssl_test_server_.get() |
| 153 : test_server_.get(); | 153 : test_server_.get(); |
| 154 start_url = start_server->GetURL( | 154 start_url = start_server->GetURL( |
| 155 std::string("files/referrer-policy-start.html?") + "policy=" + | 155 std::string("files/referrer-policy-start.html?") + "policy=" + |
| 156 ReferrerPolicyToString(referrer_policy) + "&port=" + | 156 ReferrerPolicyToString(referrer_policy) + "&port=" + |
| 157 base::IntToString(test_server_->host_port_pair().port()) + | 157 base::IntToString(test_server_->host_port_pair().port()) + |
| 158 "&ssl_port=" + | 158 "&ssl_port=" + |
| 159 base::IntToString(ssl_test_server_->host_port_pair().port()) + | 159 base::IntToString(ssl_test_server_->host_port_pair().port()) + |
| 160 "&redirect=" + RedirectTypeToString(redirect) + "&link=" + | 160 "&redirect=" + RedirectTypeToString(redirect) + "&link=" + |
| 161 (button == blink::WebMouseEvent::ButtonNone ? "false" : "true") + | 161 (button == blink::WebMouseEvent::ButtonNone ? "false" : "true") + |
| 162 "&target=" + (link_type == LINk_WITH_TARGET_BLANK ? "_blank" : "")); | 162 "&target=" + (link_type == LINK_WITH_TARGET_BLANK ? "_blank" : "")); |
| 163 | 163 |
| 164 ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer( | 164 ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer( |
| 165 content::NotificationService::AllSources()); | 165 content::NotificationService::AllSources()); |
| 166 | 166 |
| 167 base::string16 expected_title = | 167 base::string16 expected_title = |
| 168 GetExpectedTitle(start_url, expected_referrer); | 168 GetExpectedTitle(start_url, expected_referrer); |
| 169 content::WebContents* tab = | 169 content::WebContents* tab = |
| 170 browser()->tab_strip_model()->GetActiveWebContents(); | 170 browser()->tab_strip_model()->GetActiveWebContents(); |
| 171 content::TitleWatcher title_watcher(tab, expected_title); | 171 content::TitleWatcher title_watcher(tab, expected_title); |
| 172 | 172 |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 NO_REDIRECT, | 281 NO_REDIRECT, |
| 282 NEW_BACKGROUND_TAB, | 282 NEW_BACKGROUND_TAB, |
| 283 blink::WebMouseEvent::ButtonMiddle, | 283 blink::WebMouseEvent::ButtonMiddle, |
| 284 EXPECT_ORIGIN_AS_REFERRER); | 284 EXPECT_ORIGIN_AS_REFERRER); |
| 285 } | 285 } |
| 286 | 286 |
| 287 // User initiated navigation, target blank, from HTTP to HTTP. | 287 // User initiated navigation, target blank, from HTTP to HTTP. |
| 288 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankOrigin) { | 288 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankOrigin) { |
| 289 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 289 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 290 START_ON_HTTP, | 290 START_ON_HTTP, |
| 291 LINk_WITH_TARGET_BLANK, | 291 LINK_WITH_TARGET_BLANK, |
| 292 NO_REDIRECT, | 292 NO_REDIRECT, |
| 293 NEW_FOREGROUND_TAB, | 293 NEW_FOREGROUND_TAB, |
| 294 blink::WebMouseEvent::ButtonLeft, | 294 blink::WebMouseEvent::ButtonLeft, |
| 295 EXPECT_ORIGIN_AS_REFERRER); | 295 EXPECT_ORIGIN_AS_REFERRER); |
| 296 } | 296 } |
| 297 | 297 |
| 298 // User initiated navigation, target blank, from HTTPS to HTTP. | 298 // User initiated navigation, target blank, from HTTPS to HTTP. |
| 299 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankOrigin) { | 299 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankOrigin) { |
| 300 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 300 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 301 START_ON_HTTPS, | 301 START_ON_HTTPS, |
| 302 LINk_WITH_TARGET_BLANK, | 302 LINK_WITH_TARGET_BLANK, |
| 303 NO_REDIRECT, | 303 NO_REDIRECT, |
| 304 NEW_FOREGROUND_TAB, | 304 NEW_FOREGROUND_TAB, |
| 305 blink::WebMouseEvent::ButtonLeft, | 305 blink::WebMouseEvent::ButtonLeft, |
| 306 EXPECT_ORIGIN_AS_REFERRER); | 306 EXPECT_ORIGIN_AS_REFERRER); |
| 307 } | 307 } |
| 308 | 308 |
| 309 // User initiated navigation, middle click, target blank, from HTTP to HTTP. | 309 // User initiated navigation, middle click, target blank, from HTTP to HTTP. |
| 310 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankOrigin) { | 310 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankOrigin) { |
| 311 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 311 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 312 START_ON_HTTP, | 312 START_ON_HTTP, |
| 313 LINk_WITH_TARGET_BLANK, | 313 LINK_WITH_TARGET_BLANK, |
| 314 NO_REDIRECT, | 314 NO_REDIRECT, |
| 315 NEW_FOREGROUND_TAB, | 315 NEW_FOREGROUND_TAB, |
| 316 blink::WebMouseEvent::ButtonMiddle, | 316 blink::WebMouseEvent::ButtonMiddle, |
| 317 EXPECT_ORIGIN_AS_REFERRER); | 317 EXPECT_ORIGIN_AS_REFERRER); |
| 318 } | 318 } |
| 319 | 319 |
| 320 // User initiated navigation, middle click, target blank, from HTTPS to HTTP. | 320 // User initiated navigation, middle click, target blank, from HTTPS to HTTP. |
| 321 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickTargetBlankOrigin) { | 321 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickTargetBlankOrigin) { |
| 322 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 322 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 323 START_ON_HTTPS, | 323 START_ON_HTTPS, |
| 324 LINk_WITH_TARGET_BLANK, | 324 LINK_WITH_TARGET_BLANK, |
| 325 NO_REDIRECT, | 325 NO_REDIRECT, |
| 326 NEW_FOREGROUND_TAB, | 326 NEW_FOREGROUND_TAB, |
| 327 blink::WebMouseEvent::ButtonMiddle, | 327 blink::WebMouseEvent::ButtonMiddle, |
| 328 EXPECT_ORIGIN_AS_REFERRER); | 328 EXPECT_ORIGIN_AS_REFERRER); |
| 329 } | 329 } |
| 330 | 330 |
| 331 // Context menu, from HTTP to HTTP. | 331 // Context menu, from HTTP to HTTP. |
| 332 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuOrigin) { | 332 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuOrigin) { |
| 333 ContextMenuNotificationObserver context_menu_observer( | 333 ContextMenuNotificationObserver context_menu_observer( |
| 334 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 334 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 NEW_BACKGROUND_TAB, | 420 NEW_BACKGROUND_TAB, |
| 421 blink::WebMouseEvent::ButtonMiddle, | 421 blink::WebMouseEvent::ButtonMiddle, |
| 422 EXPECT_ORIGIN_AS_REFERRER); | 422 EXPECT_ORIGIN_AS_REFERRER); |
| 423 } | 423 } |
| 424 | 424 |
| 425 // User initiated navigation, target blank, from HTTP to HTTP via server | 425 // User initiated navigation, target blank, from HTTP to HTTP via server |
| 426 // redirect. | 426 // redirect. |
| 427 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { | 427 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { |
| 428 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 428 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 429 START_ON_HTTP, | 429 START_ON_HTTP, |
| 430 LINk_WITH_TARGET_BLANK, | 430 LINK_WITH_TARGET_BLANK, |
| 431 SERVER_REDIRECT, | 431 SERVER_REDIRECT, |
| 432 NEW_FOREGROUND_TAB, | 432 NEW_FOREGROUND_TAB, |
| 433 blink::WebMouseEvent::ButtonLeft, | 433 blink::WebMouseEvent::ButtonLeft, |
| 434 EXPECT_ORIGIN_AS_REFERRER); | 434 EXPECT_ORIGIN_AS_REFERRER); |
| 435 } | 435 } |
| 436 | 436 |
| 437 // User initiated navigation, target blank, from HTTPS to HTTP via server | 437 // User initiated navigation, target blank, from HTTPS to HTTP via server |
| 438 // redirect. | 438 // redirect. |
| 439 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { | 439 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { |
| 440 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 440 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 441 START_ON_HTTPS, | 441 START_ON_HTTPS, |
| 442 LINk_WITH_TARGET_BLANK, | 442 LINK_WITH_TARGET_BLANK, |
| 443 SERVER_REDIRECT, | 443 SERVER_REDIRECT, |
| 444 NEW_FOREGROUND_TAB, | 444 NEW_FOREGROUND_TAB, |
| 445 blink::WebMouseEvent::ButtonLeft, | 445 blink::WebMouseEvent::ButtonLeft, |
| 446 EXPECT_ORIGIN_AS_REFERRER); | 446 EXPECT_ORIGIN_AS_REFERRER); |
| 447 } | 447 } |
| 448 | 448 |
| 449 // User initiated navigation, middle click, target blank, from HTTP to HTTP via | 449 // User initiated navigation, middle click, target blank, from HTTP to HTTP via |
| 450 // server redirect. | 450 // server redirect. |
| 451 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { | 451 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { |
| 452 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 452 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 453 START_ON_HTTP, | 453 START_ON_HTTP, |
| 454 LINk_WITH_TARGET_BLANK, | 454 LINK_WITH_TARGET_BLANK, |
| 455 SERVER_REDIRECT, | 455 SERVER_REDIRECT, |
| 456 NEW_FOREGROUND_TAB, | 456 NEW_FOREGROUND_TAB, |
| 457 blink::WebMouseEvent::ButtonMiddle, | 457 blink::WebMouseEvent::ButtonMiddle, |
| 458 EXPECT_ORIGIN_AS_REFERRER); | 458 EXPECT_ORIGIN_AS_REFERRER); |
| 459 } | 459 } |
| 460 | 460 |
| 461 // User initiated navigation, middle click, target blank, from HTTPS to HTTP | 461 // User initiated navigation, middle click, target blank, from HTTPS to HTTP |
| 462 // via server redirect. | 462 // via server redirect. |
| 463 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, | 463 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, |
| 464 HttpsMiddleClickTargetBlankRedirect) { | 464 HttpsMiddleClickTargetBlankRedirect) { |
| 465 RunReferrerTest(blink::WebReferrerPolicyOrigin, | 465 RunReferrerTest(blink::WebReferrerPolicyOrigin, |
| 466 START_ON_HTTPS, | 466 START_ON_HTTPS, |
| 467 LINk_WITH_TARGET_BLANK, | 467 LINK_WITH_TARGET_BLANK, |
| 468 SERVER_REDIRECT, | 468 SERVER_REDIRECT, |
| 469 NEW_FOREGROUND_TAB, | 469 NEW_FOREGROUND_TAB, |
| 470 blink::WebMouseEvent::ButtonMiddle, | 470 blink::WebMouseEvent::ButtonMiddle, |
| 471 EXPECT_ORIGIN_AS_REFERRER); | 471 EXPECT_ORIGIN_AS_REFERRER); |
| 472 } | 472 } |
| 473 | 473 |
| 474 // Context menu, from HTTP to HTTP via server redirect. | 474 // Context menu, from HTTP to HTTP via server redirect. |
| 475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { | 475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { |
| 476 ContextMenuNotificationObserver context_menu_observer( | 476 ContextMenuNotificationObserver context_menu_observer( |
| 477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); | 477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 | 611 |
| 612 // 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. |
| 613 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 613 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 614 frame, | 614 frame, |
| 615 "window.domAutomationController.send(document.title)", | 615 "window.domAutomationController.send(document.title)", |
| 616 &title)); | 616 &title)); |
| 617 EXPECT_EQ("Referrer is " + | 617 EXPECT_EQ("Referrer is " + |
| 618 test_server_->GetURL("files/referrer-policy-log.html").spec(), | 618 test_server_->GetURL("files/referrer-policy-log.html").spec(), |
| 619 title); | 619 title); |
| 620 } | 620 } |
| OLD | NEW |