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

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

Issue 2190183002: Forward CSP violation reporting from RenderFrameProxy to RenderFrameImpl. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tweak protection against navigation race. Created 4 years, 4 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
« no previous file with comments | « content/browser/frame_host/render_frame_proxy_host.h ('k') | content/common/content_param_traits_macros.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/frame_host/render_frame_proxy_host.cc
diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
index 7d79501b10298b3e1037d26cfd1962540fb94178..2b6224ed387baf1c892a390b1de11ef03296b7fd 100644
--- a/content/browser/frame_host/render_frame_proxy_host.cc
+++ b/content/browser/frame_host/render_frame_proxy_host.cc
@@ -135,6 +135,8 @@ bool RenderFrameProxyHost::OnMessageReceived(const IPC::Message& msg) {
IPC_BEGIN_MESSAGE_MAP(RenderFrameProxyHost, msg)
IPC_MESSAGE_HANDLER(FrameHostMsg_Detach, OnDetach)
IPC_MESSAGE_HANDLER(FrameHostMsg_OpenURL, OnOpenURL)
+ IPC_MESSAGE_HANDLER(FrameHostMsg_ForwardContentSecurityPolicyViolation,
+ OnForwardContentSecurityPolicyViolation)
IPC_MESSAGE_HANDLER(FrameHostMsg_RouteMessageEvent, OnRouteMessageEvent)
IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeOpener, OnDidChangeOpener)
IPC_MESSAGE_HANDLER(FrameHostMsg_AdvanceFocus, OnAdvanceFocus)
@@ -268,6 +270,25 @@ void RenderFrameProxyHost::OnOpenURL(
params.resource_request_body);
}
+void RenderFrameProxyHost::OnForwardContentSecurityPolicyViolation(
+ const url::Origin& origin_declaring_violated_csp,
+ const ContentSecurityPolicyViolation& violation) {
+ RenderFrameHostImpl* current_rfh = frame_tree_node_->current_frame_host();
+
+ // Verify that the CSP violation will be reported in the same frame
Charlie Reis 2016/08/11 20:40:26 "same frame": Did you mean to say "same document?"
Łukasz Anforowicz 2016/08/12 18:55:04 Good point. Done.
+ // as the one that declared the violated CSP (or at least in a frame
+ // with the same origin). This check protects against a race when
+ // ForwardContentSecurityPolicyViolation IPC races with navigation
+ // of the frame the IPC is sent to.
+ if (!origin_declaring_violated_csp.IsSameOriginWith(
+ current_rfh->GetLastCommittedOrigin()))
Charlie Reis 2016/08/11 20:40:26 I'm wondering if there's something better we can d
Łukasz Anforowicz 2016/08/12 18:55:04 Ack. Things are a bit improved by your suggestion
Charlie Reis 2016/08/12 20:47:30 I don't see any comments there, so I'll avoid digg
+ return;
+
+ // Forward CSP violation report to the frame that declared the CSP.
+ current_rfh->Send(new FrameMsg_ReportContentSecurityPolicyViolation(
+ current_rfh->GetRoutingID(), violation));
+}
+
void RenderFrameProxyHost::OnRouteMessageEvent(
const FrameMsg_PostMessage_Params& params) {
RenderFrameHostImpl* target_rfh = frame_tree_node()->current_frame_host();
« no previous file with comments | « content/browser/frame_host/render_frame_proxy_host.h ('k') | content/common/content_param_traits_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698