Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Side by Side Diff: content/browser/frame_host/navigation_handle_impl_unittest.cc

Issue 2321503002: (Re-)introduce AncestorThrottle to handle 'X-Frame-Options'. (Closed)
Patch Set: Rebase after a month... Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/macros.h" 5 #include "base/macros.h"
6 #include "content/browser/frame_host/navigation_handle_impl.h" 6 #include "content/browser/frame_host/navigation_handle_impl.h"
7 #include "content/public/browser/navigation_throttle.h" 7 #include "content/public/browser/navigation_throttle.h"
8 #include "content/public/browser/ssl_status.h" 8 #include "content/public/browser/ssl_status.h"
9 #include "content/public/common/request_context_type.h" 9 #include "content/public/common/request_context_type.h"
10 #include "content/test/test_render_frame_host.h" 10 #include "content/test/test_render_frame_host.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 86
87 bool IsDeferringRedirect() { 87 bool IsDeferringRedirect() {
88 return test_handle_->state() == NavigationHandleImpl::DEFERRING_REDIRECT; 88 return test_handle_->state() == NavigationHandleImpl::DEFERRING_REDIRECT;
89 } 89 }
90 90
91 bool IsDeferringResponse() { 91 bool IsDeferringResponse() {
92 return test_handle_->state() == NavigationHandleImpl::DEFERRING_RESPONSE; 92 return test_handle_->state() == NavigationHandleImpl::DEFERRING_RESPONSE;
93 } 93 }
94 94
95 bool IsCanceling() { 95 bool IsCancelingRequest() {
96 return test_handle_->state() == NavigationHandleImpl::CANCELING; 96 return test_handle_->state() == NavigationHandleImpl::CANCELING_REQUEST;
97 }
98
99 bool IsCancelingResponse() {
100 return test_handle_->state() == NavigationHandleImpl::CANCELING_RESPONSE;
97 } 101 }
98 102
99 // Helper function to call WillStartRequest on |handle|. If this function 103 // Helper function to call WillStartRequest on |handle|. If this function
100 // returns DEFER, |callback_result_| will be set to the actual result of 104 // returns DEFER, |callback_result_| will be set to the actual result of
101 // the throttle checks when they are finished. 105 // the throttle checks when they are finished.
102 void SimulateWillStartRequest() { 106 void SimulateWillStartRequest() {
103 was_callback_called_ = false; 107 was_callback_called_ = false;
104 callback_result_ = NavigationThrottle::DEFER; 108 callback_result_ = NavigationThrottle::DEFER;
105 109
106 // It's safe to use base::Unretained since the NavigationHandle is owned by 110 // It's safe to use base::Unretained since the NavigationHandle is owned by
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 EXPECT_FALSE(was_callback_called()); 307 EXPECT_FALSE(was_callback_called());
304 EXPECT_EQ(1, test_throttle->will_start_calls()); 308 EXPECT_EQ(1, test_throttle->will_start_calls());
305 EXPECT_EQ(0, test_throttle->will_redirect_calls()); 309 EXPECT_EQ(0, test_throttle->will_redirect_calls());
306 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 310 EXPECT_EQ(0, test_throttle->will_process_response_calls());
307 311
308 // Cancel the request. The callback should have been called. 312 // Cancel the request. The callback should have been called.
309 test_handle()->CancelDeferredNavigation( 313 test_handle()->CancelDeferredNavigation(
310 NavigationThrottle::CANCEL_AND_IGNORE); 314 NavigationThrottle::CANCEL_AND_IGNORE);
311 EXPECT_FALSE(IsDeferringStart()); 315 EXPECT_FALSE(IsDeferringStart());
312 EXPECT_FALSE(IsDeferringRedirect()); 316 EXPECT_FALSE(IsDeferringRedirect());
313 EXPECT_TRUE(IsCanceling()); 317 EXPECT_TRUE(IsCancelingRequest());
314 EXPECT_TRUE(was_callback_called()); 318 EXPECT_TRUE(was_callback_called());
315 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 319 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
316 EXPECT_EQ(1, test_throttle->will_start_calls()); 320 EXPECT_EQ(1, test_throttle->will_start_calls());
317 EXPECT_EQ(0, test_throttle->will_redirect_calls()); 321 EXPECT_EQ(0, test_throttle->will_redirect_calls());
318 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 322 EXPECT_EQ(0, test_throttle->will_process_response_calls());
319 } 323 }
320 324
321 // Checks that a navigation deferred during WillRedirectRequest can be properly 325 // Checks that a navigation deferred during WillRedirectRequest can be properly
322 // cancelled. 326 // cancelled.
323 TEST_F(NavigationHandleImplTest, CancelDeferredWillRedirect) { 327 TEST_F(NavigationHandleImplTest, CancelDeferredWillRedirect) {
(...skipping 13 matching lines...) Expand all
337 EXPECT_FALSE(was_callback_called()); 341 EXPECT_FALSE(was_callback_called());
338 EXPECT_EQ(0, test_throttle->will_start_calls()); 342 EXPECT_EQ(0, test_throttle->will_start_calls());
339 EXPECT_EQ(1, test_throttle->will_redirect_calls()); 343 EXPECT_EQ(1, test_throttle->will_redirect_calls());
340 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 344 EXPECT_EQ(0, test_throttle->will_process_response_calls());
341 345
342 // Cancel the request. The callback should have been called. 346 // Cancel the request. The callback should have been called.
343 test_handle()->CancelDeferredNavigation( 347 test_handle()->CancelDeferredNavigation(
344 NavigationThrottle::CANCEL_AND_IGNORE); 348 NavigationThrottle::CANCEL_AND_IGNORE);
345 EXPECT_FALSE(IsDeferringStart()); 349 EXPECT_FALSE(IsDeferringStart());
346 EXPECT_FALSE(IsDeferringRedirect()); 350 EXPECT_FALSE(IsDeferringRedirect());
347 EXPECT_TRUE(IsCanceling()); 351 EXPECT_TRUE(IsCancelingRequest());
348 EXPECT_TRUE(was_callback_called()); 352 EXPECT_TRUE(was_callback_called());
349 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 353 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
350 EXPECT_EQ(0, test_throttle->will_start_calls()); 354 EXPECT_EQ(0, test_throttle->will_start_calls());
351 EXPECT_EQ(1, test_throttle->will_redirect_calls()); 355 EXPECT_EQ(1, test_throttle->will_redirect_calls());
352 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 356 EXPECT_EQ(0, test_throttle->will_process_response_calls());
353 } 357 }
354 358
355 // Checks that a navigation deferred can be canceled and not ignored. 359 // Checks that a navigation deferred can be canceled and not ignored.
356 TEST_F(NavigationHandleImplTest, CancelDeferredNoIgnore) { 360 TEST_F(NavigationHandleImplTest, CancelDeferredNoIgnore) {
357 TestNavigationThrottle* test_throttle = 361 TestNavigationThrottle* test_throttle =
(...skipping 12 matching lines...) Expand all
370 EXPECT_FALSE(was_callback_called()); 374 EXPECT_FALSE(was_callback_called());
371 EXPECT_EQ(1, test_throttle->will_start_calls()); 375 EXPECT_EQ(1, test_throttle->will_start_calls());
372 EXPECT_EQ(0, test_throttle->will_redirect_calls()); 376 EXPECT_EQ(0, test_throttle->will_redirect_calls());
373 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 377 EXPECT_EQ(0, test_throttle->will_process_response_calls());
374 378
375 // Cancel the request. The callback should have been called with CANCEL, and 379 // Cancel the request. The callback should have been called with CANCEL, and
376 // not CANCEL_AND_IGNORE. 380 // not CANCEL_AND_IGNORE.
377 test_handle()->CancelDeferredNavigation(NavigationThrottle::CANCEL); 381 test_handle()->CancelDeferredNavigation(NavigationThrottle::CANCEL);
378 EXPECT_FALSE(IsDeferringStart()); 382 EXPECT_FALSE(IsDeferringStart());
379 EXPECT_FALSE(IsDeferringRedirect()); 383 EXPECT_FALSE(IsDeferringRedirect());
380 EXPECT_TRUE(IsCanceling()); 384 EXPECT_TRUE(IsCancelingRequest());
381 EXPECT_TRUE(was_callback_called()); 385 EXPECT_TRUE(was_callback_called());
382 EXPECT_EQ(NavigationThrottle::CANCEL, callback_result()); 386 EXPECT_EQ(NavigationThrottle::CANCEL, callback_result());
383 EXPECT_EQ(1, test_throttle->will_start_calls()); 387 EXPECT_EQ(1, test_throttle->will_start_calls());
384 EXPECT_EQ(0, test_throttle->will_redirect_calls()); 388 EXPECT_EQ(0, test_throttle->will_redirect_calls());
385 EXPECT_EQ(0, test_throttle->will_process_response_calls()); 389 EXPECT_EQ(0, test_throttle->will_process_response_calls());
386 } 390 }
387 391
388 // Checks that a NavigationThrottle asking to defer followed by a 392 // Checks that a NavigationThrottle asking to defer followed by a
389 // NavigationThrottle asking to proceed behave correctly. 393 // NavigationThrottle asking to proceed behave correctly.
390 TEST_F(NavigationHandleImplTest, DeferThenProceed) { 394 TEST_F(NavigationHandleImplTest, DeferThenProceed) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 EXPECT_EQ(0, defer_throttle->will_redirect_calls()); 484 EXPECT_EQ(0, defer_throttle->will_redirect_calls());
481 EXPECT_EQ(0, defer_throttle->will_process_response_calls()); 485 EXPECT_EQ(0, defer_throttle->will_process_response_calls());
482 EXPECT_EQ(0, cancel_throttle->will_start_calls()); 486 EXPECT_EQ(0, cancel_throttle->will_start_calls());
483 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); 487 EXPECT_EQ(0, cancel_throttle->will_redirect_calls());
484 488
485 // Resume the request. The callback should have been called. The second 489 // Resume the request. The callback should have been called. The second
486 // throttle should have been notified. 490 // throttle should have been notified.
487 test_handle()->Resume(); 491 test_handle()->Resume();
488 EXPECT_FALSE(IsDeferringStart()); 492 EXPECT_FALSE(IsDeferringStart());
489 EXPECT_FALSE(IsDeferringRedirect()); 493 EXPECT_FALSE(IsDeferringRedirect());
490 EXPECT_TRUE(IsCanceling()); 494 EXPECT_TRUE(IsCancelingRequest());
491 EXPECT_TRUE(was_callback_called()); 495 EXPECT_TRUE(was_callback_called());
492 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 496 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
493 EXPECT_EQ(1, defer_throttle->will_start_calls()); 497 EXPECT_EQ(1, defer_throttle->will_start_calls());
494 EXPECT_EQ(0, defer_throttle->will_redirect_calls()); 498 EXPECT_EQ(0, defer_throttle->will_redirect_calls());
495 EXPECT_EQ(0, defer_throttle->will_process_response_calls()); 499 EXPECT_EQ(0, defer_throttle->will_process_response_calls());
496 EXPECT_EQ(1, cancel_throttle->will_start_calls()); 500 EXPECT_EQ(1, cancel_throttle->will_start_calls());
497 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); 501 EXPECT_EQ(0, cancel_throttle->will_redirect_calls());
498 } 502 }
499 503
500 // Checks that a NavigationThrottle asking to defer followed by a 504 // Checks that a NavigationThrottle asking to defer followed by a
(...skipping 22 matching lines...) Expand all
523 EXPECT_EQ(1, defer_throttle->will_redirect_calls()); 527 EXPECT_EQ(1, defer_throttle->will_redirect_calls());
524 EXPECT_EQ(0, defer_throttle->will_process_response_calls()); 528 EXPECT_EQ(0, defer_throttle->will_process_response_calls());
525 EXPECT_EQ(0, cancel_throttle->will_start_calls()); 529 EXPECT_EQ(0, cancel_throttle->will_start_calls());
526 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); 530 EXPECT_EQ(0, cancel_throttle->will_redirect_calls());
527 531
528 // Resume the request. The callback should have been called. The second 532 // Resume the request. The callback should have been called. The second
529 // throttle should have been notified. 533 // throttle should have been notified.
530 test_handle()->Resume(); 534 test_handle()->Resume();
531 EXPECT_FALSE(IsDeferringStart()); 535 EXPECT_FALSE(IsDeferringStart());
532 EXPECT_FALSE(IsDeferringRedirect()); 536 EXPECT_FALSE(IsDeferringRedirect());
533 EXPECT_TRUE(IsCanceling()); 537 EXPECT_TRUE(IsCancelingRequest());
534 EXPECT_TRUE(was_callback_called()); 538 EXPECT_TRUE(was_callback_called());
535 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 539 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
536 EXPECT_EQ(0, defer_throttle->will_start_calls()); 540 EXPECT_EQ(0, defer_throttle->will_start_calls());
537 EXPECT_EQ(1, defer_throttle->will_redirect_calls()); 541 EXPECT_EQ(1, defer_throttle->will_redirect_calls());
538 EXPECT_EQ(0, defer_throttle->will_process_response_calls()); 542 EXPECT_EQ(0, defer_throttle->will_process_response_calls());
539 EXPECT_EQ(0, cancel_throttle->will_start_calls()); 543 EXPECT_EQ(0, cancel_throttle->will_start_calls());
540 EXPECT_EQ(1, cancel_throttle->will_redirect_calls()); 544 EXPECT_EQ(1, cancel_throttle->will_redirect_calls());
541 } 545 }
542 546
543 // Checks that a NavigationThrottle asking to cancel followed by a 547 // Checks that a NavigationThrottle asking to cancel followed by a
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); 623 EXPECT_EQ(0, cancel_throttle->will_process_response_calls());
620 EXPECT_EQ(0, proceed_throttle->will_start_calls()); 624 EXPECT_EQ(0, proceed_throttle->will_start_calls());
621 EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); 625 EXPECT_EQ(0, proceed_throttle->will_redirect_calls());
622 EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); 626 EXPECT_EQ(0, proceed_throttle->will_process_response_calls());
623 627
624 // Simulate WillRedirectRequest. The request should not be deferred. The 628 // Simulate WillRedirectRequest. The request should not be deferred. The
625 // callback should have been called. 629 // callback should have been called.
626 SimulateWillProcessResponse(); 630 SimulateWillProcessResponse();
627 EXPECT_FALSE(IsDeferringStart()); 631 EXPECT_FALSE(IsDeferringStart());
628 EXPECT_FALSE(IsDeferringRedirect()); 632 EXPECT_FALSE(IsDeferringRedirect());
633 EXPECT_TRUE(IsCancelingResponse());
629 EXPECT_TRUE(was_callback_called()); 634 EXPECT_TRUE(was_callback_called());
630 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 635 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
631 EXPECT_EQ(0, cancel_throttle->will_start_calls()); 636 EXPECT_EQ(0, cancel_throttle->will_start_calls());
632 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); 637 EXPECT_EQ(0, cancel_throttle->will_redirect_calls());
633 EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); 638 EXPECT_EQ(1, cancel_throttle->will_process_response_calls());
634 EXPECT_EQ(0, proceed_throttle->will_start_calls()); 639 EXPECT_EQ(0, proceed_throttle->will_start_calls());
635 EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); 640 EXPECT_EQ(0, proceed_throttle->will_redirect_calls());
636 EXPECT_EQ(1, proceed_throttle->will_process_response_calls()); 641 EXPECT_EQ(1, proceed_throttle->will_process_response_calls());
637 } 642 }
638 643
(...skipping 24 matching lines...) Expand all
663 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); 668 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result());
664 EXPECT_EQ(0, cancel_throttle->will_start_calls()); 669 EXPECT_EQ(0, cancel_throttle->will_start_calls());
665 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); 670 EXPECT_EQ(0, cancel_throttle->will_redirect_calls());
666 EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); 671 EXPECT_EQ(1, cancel_throttle->will_process_response_calls());
667 EXPECT_EQ(0, proceed_throttle->will_start_calls()); 672 EXPECT_EQ(0, proceed_throttle->will_start_calls());
668 EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); 673 EXPECT_EQ(0, proceed_throttle->will_redirect_calls());
669 EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); 674 EXPECT_EQ(0, proceed_throttle->will_process_response_calls());
670 } 675 }
671 676
672 } // namespace content 677 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_handle_impl.cc ('k') | content/browser/loader/navigation_resource_throttle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698