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

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

Issue 2488743003: (Re-)introduce AncestorThrottle to handle 'X-Frame-Options'. (Closed)
Patch Set: Addressed comments (@clamy). Created 4 years 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 93d6b99d2dfa2acf4898ce6216306ed2dd67302c..21ae9ae6c082644a35b4abad1bbee2a050991f90 100644
--- a/content/browser/frame_host/navigation_handle_impl.cc
+++ b/content/browser/frame_host/navigation_handle_impl.cc
@@ -9,6 +9,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/debug_urls.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/navigator.h"
@@ -287,7 +288,9 @@ void NavigationHandleImpl::Resume() {
void NavigationHandleImpl::CancelDeferredNavigation(
NavigationThrottle::ThrottleCheckResult result) {
- DCHECK(state_ == DEFERRING_START || state_ == DEFERRING_REDIRECT);
+ DCHECK(state_ == DEFERRING_START ||
+ state_ == DEFERRING_REDIRECT ||
+ state_ == DEFERRING_RESPONSE);
DCHECK(result == NavigationThrottle::CANCEL_AND_IGNORE ||
result == NavigationThrottle::CANCEL);
state_ = CANCELING;
@@ -592,6 +595,9 @@ NavigationHandleImpl::CheckWillStartRequest() {
state_ = DEFERRING_START;
next_index_ = i + 1;
return result;
+
+ case NavigationThrottle::BLOCK_RESPONSE:
+ NOTREACHED();
}
}
next_index_ = 0;
@@ -622,6 +628,7 @@ NavigationHandleImpl::CheckWillRedirectRequest() {
return result;
case NavigationThrottle::BLOCK_REQUEST:
+ case NavigationThrottle::BLOCK_RESPONSE:
NOTREACHED();
}
}
@@ -649,6 +656,7 @@ NavigationHandleImpl::CheckWillProcessResponse() {
case NavigationThrottle::CANCEL:
case NavigationThrottle::CANCEL_AND_IGNORE:
+ case NavigationThrottle::BLOCK_RESPONSE:
state_ = CANCELING;
return result;
@@ -775,6 +783,7 @@ void NavigationHandleImpl::RegisterNavigationThrottles() {
// GetNavigationThrottles is not assigned to throttles_ directly because it
// would overwrite any throttle previously added with
// RegisterThrottleForTesting.
+
clamy 2016/12/09 17:14:01 nit: no need for empty line here.
ScopedVector<NavigationThrottle> throttles_to_register =
GetDelegate()->CreateThrottlesForNavigation(this);
std::unique_ptr<NavigationThrottle> devtools_throttle =
@@ -787,6 +796,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());

Powered by Google App Engine
This is Rietveld 408576698