Chromium Code Reviews| 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 "net/url_request/url_request_job.h" | 5 #include "net/url_request/url_request_job.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "net/base/request_priority.h" | 10 #include "net/base/request_priority.h" |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 381 // ... but should be stripped to the origin for a cross-origin redirect. | 381 // ... but should be stripped to the origin for a cross-origin redirect. |
| 382 {"https://foo.test/one" /* original url */, | 382 {"https://foo.test/one" /* original url */, |
| 383 "https://foo.test/one" /* original referrer */, | 383 "https://foo.test/one" /* original referrer */, |
| 384 "Location: https://bar.test/two\n" | 384 "Location: https://bar.test/two\n" |
| 385 "Referrer-Policy: origin-when-cross-origin\n", | 385 "Referrer-Policy: origin-when-cross-origin\n", |
| 386 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | 386 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, |
| 387 URLRequest:: | 387 URLRequest:: |
| 388 ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN /* expected final policy */, | 388 ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN /* expected final policy */, |
| 389 "https://foo.test/" /* expected final referrer */}, | 389 "https://foo.test/" /* expected final referrer */}, |
| 390 | 390 |
| 391 // If a redirect serves 'Referrer-Policy: same-origin', then the referrer | |
| 392 // should be untouched for a same-origin redirect, | |
| 393 {"https://foo.test/one" /* original url */, | |
| 394 "https://foo.test/referrer" /* original referrer */, | |
| 395 "Location: https://foo.test/two\n" | |
| 396 "Referrer-Policy: same-origin\n", | |
| 397 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 398 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN /* expected final | |
| 399 policy */ | |
|
mmenke
2017/06/07 21:04:00
Maybe replace "expected final policy" with "final
estark
2017/06/08 18:42:58
Done; I just removed it for these cases where the
| |
| 400 , | |
| 401 "https://foo.test/referrer" /* expected final referrer */}, | |
| 402 | |
| 403 // ... but should be cleared for a cross-origin redirect. | |
| 404 {"https://foo.test/one" /* original url */, | |
| 405 "https://foo.test/referrer" /* original referrer */, | |
| 406 "Location: https://bar.test/two\n" | |
| 407 "Referrer-Policy: same-origin\n", | |
| 408 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 409 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN /* expected final | |
| 410 policy */ | |
| 411 , | |
| 412 "" /* expected final referrer */}, | |
| 413 | |
| 414 // If a redirect serves 'Referrer-Policy: strict-origin', then the | |
| 415 // referrer should be the origin only for a cross-origin non-downgrading | |
| 416 // redirect, | |
| 417 {"https://foo.test/one" /* original url */, | |
| 418 "https://foo.test/referrer" /* original referrer */, | |
| 419 "Location: https://bar.test/two\n" | |
| 420 "Referrer-Policy: strict-origin\n", | |
| 421 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 422 URLRequest:: | |
| 423 ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE /* expected final | |
| 424 policy */ | |
| 425 , | |
| 426 "https://foo.test/" /* expected final referrer */}, | |
| 427 {"http://foo.test/one" /* original url */, | |
| 428 "http://foo.test/referrer" /* original referrer */, | |
| 429 "Location: http://bar.test/two\n" | |
| 430 "Referrer-Policy: strict-origin\n", | |
| 431 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 432 URLRequest:: | |
| 433 ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE /* expected final | |
| 434 policy */ | |
| 435 , | |
| 436 "http://foo.test/" /* expected final referrer */}, | |
| 437 | |
| 438 // ... but should be cleared for a downgrading redirect. | |
| 439 {"https://foo.test/one" /* original url */, | |
| 440 "https://foo.test/referrer" /* original referrer */, | |
| 441 "Location: http://foo.test/two\n" | |
| 442 "Referrer-Policy: strict-origin\n", | |
| 443 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 444 URLRequest:: | |
| 445 ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE /* expected final | |
| 446 policy */ | |
| 447 , | |
| 448 "" /* expected final referrer */}, | |
| 449 | |
| 450 // If a redirect serves 'Referrer-Policy: | |
| 451 // strict-origin-when-cross-origin', then the referrer should be preserved | |
| 452 // for a same-origin redirect, | |
| 453 {"https://foo.test/one" /* original url */, | |
| 454 "https://foo.test/referrer" /* original referrer */, | |
| 455 "Location: https://foo.test/two\n" | |
| 456 "Referrer-Policy: strict-origin-when-cross-origin\n", | |
| 457 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 458 URLRequest:: | |
| 459 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN /* expected | |
| 460 final | |
| 461 policy */ | |
| 462 , | |
| 463 "https://foo.test/referrer" /* expected final referrer */}, | |
| 464 {"http://foo.test/one" /* original url */, | |
| 465 "http://foo.test/referrer" /* original referrer */, | |
| 466 "Location: http://foo.test/two\n" | |
| 467 "Referrer-Policy: strict-origin-when-cross-origin\n", | |
| 468 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 469 URLRequest:: | |
| 470 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN /* expected | |
| 471 final | |
| 472 policy */ | |
| 473 , | |
| 474 "http://foo.test/referrer" /* expected final referrer */}, | |
| 475 | |
| 476 // ... but should be stripped to the origin for a cross-origin | |
| 477 // non-downgrading redirect, | |
| 478 {"https://foo.test/one" /* original url */, | |
| 479 "https://foo.test/referrer" /* original referrer */, | |
| 480 "Location: https://bar.test/two\n" | |
| 481 "Referrer-Policy: strict-origin-when-cross-origin\n", | |
| 482 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 483 URLRequest:: | |
| 484 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN /* expected | |
| 485 final | |
| 486 policy */ | |
| 487 , | |
| 488 "https://foo.test/" /* expected final referrer */}, | |
| 489 {"http://foo.test/one" /* original url */, | |
| 490 "http://foo.test/referrer" /* original referrer */, | |
| 491 "Location: http://bar.test/two\n" | |
| 492 "Referrer-Policy: strict-origin-when-cross-origin\n", | |
| 493 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 494 URLRequest:: | |
| 495 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN /* expected | |
| 496 final | |
| 497 policy */ | |
| 498 , | |
| 499 "http://foo.test/" /* expected final referrer */}, | |
| 500 | |
| 501 // ... and should be cleared for a downgrading redirect. | |
| 502 {"https://foo.test/one" /* original url */, | |
| 503 "https://foo.test/referrer" /* original referrer */, | |
| 504 "Location: http://foo.test/two\n" | |
| 505 "Referrer-Policy: strict-origin-when-cross-origin\n", | |
| 506 URLRequest::NEVER_CLEAR_REFERRER /* original policy */, | |
| 507 URLRequest:: | |
| 508 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN /* expected | |
| 509 final | |
| 510 policy */ | |
| 511 , | |
| 512 "" /* expected final referrer */}, | |
| 513 | |
| 391 // If a redirect serves 'Referrer-Policy: unsafe-url', then the | 514 // If a redirect serves 'Referrer-Policy: unsafe-url', then the |
| 392 // referrer should remain, even if originally set to clear on | 515 // referrer should remain, even if originally set to clear on |
| 393 // downgrade. | 516 // downgrade. |
| 394 {"https://foo.test/one" /* original url */, | 517 {"https://foo.test/one" /* original url */, |
| 395 "https://foo.test/one" /* original referrer */, | 518 "https://foo.test/one" /* original referrer */, |
| 396 "Location: https://bar.test/two\n" | 519 "Location: https://bar.test/two\n" |
| 397 "Referrer-Policy: unsafe-url\n", | 520 "Referrer-Policy: unsafe-url\n", |
| 398 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN /* original policy */, | 521 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN /* original policy */, |
| 399 URLRequest::NEVER_CLEAR_REFERRER /* expected final policy */, | 522 URLRequest::NEVER_CLEAR_REFERRER /* expected final policy */, |
| 400 "https://foo.test/one" /* expected final referrer */}, | 523 "https://foo.test/one" /* expected final referrer */}, |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 620 | 743 |
| 621 EXPECT_FALSE(d.request_failed()); | 744 EXPECT_FALSE(d.request_failed()); |
| 622 EXPECT_EQ(200, req->GetResponseCode()); | 745 EXPECT_EQ(200, req->GetResponseCode()); |
| 623 EXPECT_EQ(kHelloData, d.data_received()); | 746 EXPECT_EQ(kHelloData, d.data_received()); |
| 624 EXPECT_TRUE(network_layer.done_reading_called()); | 747 EXPECT_TRUE(network_layer.done_reading_called()); |
| 625 | 748 |
| 626 RemoveMockTransaction(&kBrotli_Slow_Transaction); | 749 RemoveMockTransaction(&kBrotli_Slow_Transaction); |
| 627 } | 750 } |
| 628 | 751 |
| 629 } // namespace net | 752 } // namespace net |
| OLD | NEW |