OLD | NEW |
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 "content/browser/frame_host/navigation_handle_impl.h" | 5 #include "content/browser/frame_host/navigation_handle_impl.h" |
6 | 6 |
7 #include <iterator> | 7 #include <iterator> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "content/browser/appcache/appcache_navigation_handle.h" | 10 #include "content/browser/appcache/appcache_navigation_handle.h" |
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 DCHECK(state_ == WILL_SEND_REQUEST || state_ == DEFERRING_START); | 688 DCHECK(state_ == WILL_SEND_REQUEST || state_ == DEFERRING_START); |
689 DCHECK(state_ != WILL_SEND_REQUEST || next_index_ == 0); | 689 DCHECK(state_ != WILL_SEND_REQUEST || next_index_ == 0); |
690 DCHECK(state_ != DEFERRING_START || next_index_ != 0); | 690 DCHECK(state_ != DEFERRING_START || next_index_ != 0); |
691 for (size_t i = next_index_; i < throttles_.size(); ++i) { | 691 for (size_t i = next_index_; i < throttles_.size(); ++i) { |
692 NavigationThrottle::ThrottleCheckResult result = | 692 NavigationThrottle::ThrottleCheckResult result = |
693 throttles_[i]->WillStartRequest(); | 693 throttles_[i]->WillStartRequest(); |
694 switch (result) { | 694 switch (result) { |
695 case NavigationThrottle::PROCEED: | 695 case NavigationThrottle::PROCEED: |
696 continue; | 696 continue; |
697 | 697 |
| 698 case NavigationThrottle::BLOCK_REQUEST: |
698 case NavigationThrottle::CANCEL: | 699 case NavigationThrottle::CANCEL: |
699 case NavigationThrottle::CANCEL_AND_IGNORE: | 700 case NavigationThrottle::CANCEL_AND_IGNORE: |
700 case NavigationThrottle::BLOCK_REQUEST: | |
701 state_ = CANCELING; | 701 state_ = CANCELING; |
702 return result; | 702 return result; |
703 | 703 |
704 case NavigationThrottle::DEFER: | 704 case NavigationThrottle::DEFER: |
705 state_ = DEFERRING_START; | 705 state_ = DEFERRING_START; |
706 next_index_ = i + 1; | 706 next_index_ = i + 1; |
707 return result; | 707 return result; |
708 | 708 |
709 case NavigationThrottle::BLOCK_RESPONSE: | 709 case NavigationThrottle::BLOCK_RESPONSE: |
710 NOTREACHED(); | 710 NOTREACHED(); |
711 } | 711 } |
712 } | 712 } |
713 next_index_ = 0; | 713 next_index_ = 0; |
714 state_ = WILL_SEND_REQUEST; | 714 state_ = WILL_SEND_REQUEST; |
715 return NavigationThrottle::PROCEED; | 715 return NavigationThrottle::PROCEED; |
716 } | 716 } |
717 | 717 |
718 NavigationThrottle::ThrottleCheckResult | 718 NavigationThrottle::ThrottleCheckResult |
719 NavigationHandleImpl::CheckWillRedirectRequest() { | 719 NavigationHandleImpl::CheckWillRedirectRequest() { |
720 DCHECK(state_ == WILL_REDIRECT_REQUEST || state_ == DEFERRING_REDIRECT); | 720 DCHECK(state_ == WILL_REDIRECT_REQUEST || state_ == DEFERRING_REDIRECT); |
721 DCHECK(state_ != WILL_REDIRECT_REQUEST || next_index_ == 0); | 721 DCHECK(state_ != WILL_REDIRECT_REQUEST || next_index_ == 0); |
722 DCHECK(state_ != DEFERRING_REDIRECT || next_index_ != 0); | 722 DCHECK(state_ != DEFERRING_REDIRECT || next_index_ != 0); |
723 for (size_t i = next_index_; i < throttles_.size(); ++i) { | 723 for (size_t i = next_index_; i < throttles_.size(); ++i) { |
724 NavigationThrottle::ThrottleCheckResult result = | 724 NavigationThrottle::ThrottleCheckResult result = |
725 throttles_[i]->WillRedirectRequest(); | 725 throttles_[i]->WillRedirectRequest(); |
726 switch (result) { | 726 switch (result) { |
727 case NavigationThrottle::PROCEED: | 727 case NavigationThrottle::PROCEED: |
728 continue; | 728 continue; |
729 | 729 |
| 730 case NavigationThrottle::BLOCK_REQUEST: |
| 731 CHECK(IsBrowserSideNavigationEnabled()) |
| 732 << "BLOCK_REQUEST must not be used on redirect without PlzNavigate"; |
730 case NavigationThrottle::CANCEL: | 733 case NavigationThrottle::CANCEL: |
731 case NavigationThrottle::CANCEL_AND_IGNORE: | 734 case NavigationThrottle::CANCEL_AND_IGNORE: |
732 state_ = CANCELING; | 735 state_ = CANCELING; |
733 return result; | 736 return result; |
734 | 737 |
735 case NavigationThrottle::DEFER: | 738 case NavigationThrottle::DEFER: |
736 state_ = DEFERRING_REDIRECT; | 739 state_ = DEFERRING_REDIRECT; |
737 next_index_ = i + 1; | 740 next_index_ = i + 1; |
738 return result; | 741 return result; |
739 | 742 |
740 case NavigationThrottle::BLOCK_REQUEST: | |
741 case NavigationThrottle::BLOCK_RESPONSE: | 743 case NavigationThrottle::BLOCK_RESPONSE: |
742 NOTREACHED(); | 744 NOTREACHED(); |
743 } | 745 } |
744 } | 746 } |
745 next_index_ = 0; | 747 next_index_ = 0; |
746 state_ = WILL_REDIRECT_REQUEST; | 748 state_ = WILL_REDIRECT_REQUEST; |
747 | 749 |
748 // Notify the delegate that a redirect was encountered and will be followed. | 750 // Notify the delegate that a redirect was encountered and will be followed. |
749 if (GetDelegate()) | 751 if (GetDelegate()) |
750 GetDelegate()->DidRedirectNavigation(this); | 752 GetDelegate()->DidRedirectNavigation(this); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 if (node->current_url().EqualsIgnoringRef(url_)) { | 953 if (node->current_url().EqualsIgnoringRef(url_)) { |
952 if (found_self_reference) | 954 if (found_self_reference) |
953 return true; | 955 return true; |
954 found_self_reference = true; | 956 found_self_reference = true; |
955 } | 957 } |
956 } | 958 } |
957 return false; | 959 return false; |
958 } | 960 } |
959 | 961 |
960 } // namespace content | 962 } // namespace content |
OLD | NEW |