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

Unified Diff: content/browser/frame_host/navigation_handle_impl.cc

Issue 2321503002: (Re-)introduce AncestorThrottle to handle 'X-Frame-Options'. (Closed)
Patch Set: Rebase after a month... Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/navigation_handle_impl.cc
diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc
index 26bcc63fa8e58fc8673879491aacc14564144169..26ac9365661cf21f873722baf11e337bc974fdc3 100644
--- a/content/browser/frame_host/navigation_handle_impl.cc
+++ b/content/browser/frame_host/navigation_handle_impl.cc
@@ -11,6 +11,7 @@
#include "content/browser/browsing_data/clear_site_data_throttle.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/devtools/render_frame_devtools_agent_host.h"
+#include "content/browser/frame_host/ancestor_throttle.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/navigator.h"
#include "content/browser/frame_host/navigator_delegate.h"
@@ -274,7 +275,7 @@ void NavigationHandleImpl::CancelDeferredNavigation(
DCHECK(state_ == DEFERRING_START || state_ == DEFERRING_REDIRECT);
DCHECK(result == NavigationThrottle::CANCEL_AND_IGNORE ||
result == NavigationThrottle::CANCEL);
- state_ = CANCELING;
+ state_ = CANCELING_REQUEST;
RunCompleteCallback(result);
}
@@ -544,14 +545,20 @@ NavigationHandleImpl::CheckWillStartRequest() {
case NavigationThrottle::CANCEL:
case NavigationThrottle::CANCEL_AND_IGNORE:
+ state_ = CANCELING_REQUEST;
+ return result;
+
case NavigationThrottle::BLOCK_REQUEST:
- state_ = CANCELING;
+ state_ = CANCELING_RESPONSE;
return result;
case NavigationThrottle::DEFER:
state_ = DEFERRING_START;
next_index_ = i + 1;
return result;
+
+ case NavigationThrottle::BLOCK_RESPONSE:
+ NOTREACHED();
}
}
next_index_ = 0;
@@ -573,7 +580,7 @@ NavigationHandleImpl::CheckWillRedirectRequest() {
case NavigationThrottle::CANCEL:
case NavigationThrottle::CANCEL_AND_IGNORE:
- state_ = CANCELING;
+ state_ = CANCELING_REQUEST;
return result;
case NavigationThrottle::DEFER:
@@ -582,6 +589,7 @@ NavigationHandleImpl::CheckWillRedirectRequest() {
return result;
case NavigationThrottle::BLOCK_REQUEST:
+ case NavigationThrottle::BLOCK_RESPONSE:
NOTREACHED();
}
}
@@ -609,7 +617,11 @@ NavigationHandleImpl::CheckWillProcessResponse() {
case NavigationThrottle::CANCEL:
case NavigationThrottle::CANCEL_AND_IGNORE:
- state_ = CANCELING;
+ state_ = CANCELING_REQUEST;
+ return result;
+
+ case NavigationThrottle::BLOCK_RESPONSE:
+ state_ = CANCELING_RESPONSE;
return result;
case NavigationThrottle::DEFER:
@@ -735,6 +747,7 @@ void NavigationHandleImpl::RegisterNavigationThrottles() {
// GetNavigationThrottles is not assigned to throttles_ directly because it
// would overwrite any throttle previously added with
// RegisterThrottleForTesting.
+
ScopedVector<NavigationThrottle> throttles_to_register =
GetDelegate()->CreateThrottlesForNavigation(this);
std::unique_ptr<NavigationThrottle> devtools_throttle =
@@ -747,6 +760,11 @@ void NavigationHandleImpl::RegisterNavigationThrottles() {
if (clear_site_data_throttle)
throttles_to_register.push_back(std::move(clear_site_data_throttle));
+ std::unique_ptr<content::NavigationThrottle> ancestor_throttle =
+ content::AncestorThrottle::MaybeCreateThrottleFor(this);
+ if (ancestor_throttle)
+ throttles_.push_back(std::move(ancestor_throttle));
+
if (throttles_to_register.size() > 0) {
throttles_.insert(throttles_.begin(), throttles_to_register.begin(),
throttles_to_register.end());
« no previous file with comments | « content/browser/frame_host/navigation_handle_impl.h ('k') | content/browser/frame_host/navigation_handle_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698