| Index: content/renderer/render_frame_proxy.cc
|
| diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
|
| index 0b550b90874b74b6cd89dccea9a1fd1ca36a5890..5d3ec1de97c41e6e226cc347c4f420fe764859c7 100644
|
| --- a/content/renderer/render_frame_proxy.cc
|
| +++ b/content/renderer/render_frame_proxy.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/command_line.h"
|
| #include "base/lazy_instance.h"
|
| #include "content/child/webmessageportchannel_impl.h"
|
| +#include "content/common/content_security_policy_header.h"
|
| #include "content/common/frame_messages.h"
|
| #include "content/common/frame_replication_state.h"
|
| #include "content/common/input_messages.h"
|
| @@ -224,6 +225,10 @@ void RenderFrameProxy::SetReplicatedState(const FrameReplicationState& state) {
|
| state.should_enforce_strict_mixed_content_checking);
|
| web_frame_->setReplicatedPotentiallyTrustworthyUniqueOrigin(
|
| state.has_potentially_trustworthy_unique_origin);
|
| +
|
| + web_frame_->resetReplicatedContentSecurityPolicy();
|
| + for (const auto& header : state.accumulated_csp_headers)
|
| + OnAddContentSecurityPolicy(header);
|
| }
|
|
|
| // Update the proxy's SecurityContext and FrameOwner with new sandbox flags
|
| @@ -267,6 +272,10 @@ bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(FrameMsg_DidUpdateSandboxFlags, OnDidUpdateSandboxFlags)
|
| IPC_MESSAGE_HANDLER(FrameMsg_DispatchLoad, OnDispatchLoad)
|
| IPC_MESSAGE_HANDLER(FrameMsg_DidUpdateName, OnDidUpdateName)
|
| + IPC_MESSAGE_HANDLER(FrameMsg_AddContentSecurityPolicy,
|
| + OnAddContentSecurityPolicy)
|
| + IPC_MESSAGE_HANDLER(FrameMsg_ResetContentSecurityPolicy,
|
| + OnResetContentSecurityPolicy)
|
| IPC_MESSAGE_HANDLER(FrameMsg_EnforceStrictMixedContentChecking,
|
| OnEnforceStrictMixedContentChecking)
|
| IPC_MESSAGE_HANDLER(FrameMsg_DidUpdateOrigin, OnDidUpdateOrigin)
|
| @@ -337,6 +346,17 @@ void RenderFrameProxy::OnDidUpdateName(const std::string& name,
|
| blink::WebString::fromUTF8(unique_name));
|
| }
|
|
|
| +void RenderFrameProxy::OnAddContentSecurityPolicy(
|
| + const ContentSecurityPolicyHeader& header) {
|
| + web_frame_->addReplicatedContentSecurityPolicyHeader(
|
| + blink::WebString::fromUTF8(header.header_value), header.type,
|
| + header.source);
|
| +}
|
| +
|
| +void RenderFrameProxy::OnResetContentSecurityPolicy() {
|
| + web_frame_->resetReplicatedContentSecurityPolicy();
|
| +}
|
| +
|
| void RenderFrameProxy::OnEnforceStrictMixedContentChecking(
|
| bool should_enforce) {
|
| web_frame_->setReplicatedShouldEnforceStrictMixedContentChecking(
|
|
|