| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/renderer/render_frame_proxy.h" | 5 #include "content/renderer/render_frame_proxy.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "content/common/site_isolation_policy.h" | 22 #include "content/common/site_isolation_policy.h" |
| 23 #include "content/common/swapped_out_messages.h" | 23 #include "content/common/swapped_out_messages.h" |
| 24 #include "content/common/view_messages.h" | 24 #include "content/common/view_messages.h" |
| 25 #include "content/renderer/child_frame_compositing_helper.h" | 25 #include "content/renderer/child_frame_compositing_helper.h" |
| 26 #include "content/renderer/render_frame_impl.h" | 26 #include "content/renderer/render_frame_impl.h" |
| 27 #include "content/renderer/render_thread_impl.h" | 27 #include "content/renderer/render_thread_impl.h" |
| 28 #include "content/renderer/render_view_impl.h" | 28 #include "content/renderer/render_view_impl.h" |
| 29 #include "content/renderer/render_widget.h" | 29 #include "content/renderer/render_widget.h" |
| 30 #include "ipc/ipc_message_macros.h" | 30 #include "ipc/ipc_message_macros.h" |
| 31 #include "third_party/WebKit/public/platform/URLConversion.h" | 31 #include "third_party/WebKit/public/platform/URLConversion.h" |
| 32 #include "third_party/WebKit/public/platform/WebFeaturePolicy.h" |
| 32 #include "third_party/WebKit/public/platform/WebString.h" | 33 #include "third_party/WebKit/public/platform/WebString.h" |
| 33 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 34 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
| 34 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" | 35 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" |
| 35 #include "third_party/WebKit/public/web/WebView.h" | 36 #include "third_party/WebKit/public/web/WebView.h" |
| 36 | 37 |
| 37 namespace content { | 38 namespace content { |
| 38 | 39 |
| 39 namespace { | 40 namespace { |
| 40 | 41 |
| 41 // Facilitates lookup of RenderFrameProxy by routing_id. | 42 // Facilitates lookup of RenderFrameProxy by routing_id. |
| 42 typedef std::map<int, RenderFrameProxy*> RoutingIDProxyMap; | 43 typedef std::map<int, RenderFrameProxy*> RoutingIDProxyMap; |
| 43 static base::LazyInstance<RoutingIDProxyMap> g_routing_id_proxy_map = | 44 static base::LazyInstance<RoutingIDProxyMap> g_routing_id_proxy_map = |
| 44 LAZY_INSTANCE_INITIALIZER; | 45 LAZY_INSTANCE_INITIALIZER; |
| 45 | 46 |
| 46 // Facilitates lookup of RenderFrameProxy by WebFrame. | 47 // Facilitates lookup of RenderFrameProxy by WebFrame. |
| 47 typedef std::map<blink::WebFrame*, RenderFrameProxy*> FrameMap; | 48 typedef std::map<blink::WebFrame*, RenderFrameProxy*> FrameMap; |
| 48 base::LazyInstance<FrameMap> g_frame_map = LAZY_INSTANCE_INITIALIZER; | 49 base::LazyInstance<FrameMap> g_frame_map = LAZY_INSTANCE_INITIALIZER; |
| 49 | 50 |
| 51 blink::WebParsedFeaturePolicy ToWebParsedFeaturePolicy( |
| 52 const ParsedFeaturePolicy& parsed_whitelists) { |
| 53 std::vector<blink::WebFeaturePolicy::ParsedWhitelist> result; |
| 54 for (const FeaturePolicyParsedWhitelist& whitelist : parsed_whitelists) { |
| 55 blink::WebFeaturePolicy::ParsedWhitelist web_whitelist; |
| 56 web_whitelist.featureName = |
| 57 blink::WebString::fromUTF8(whitelist.feature_name); |
| 58 web_whitelist.matchesAllOrigins = whitelist.matches_all_origins; |
| 59 std::vector<blink::WebSecurityOrigin> web_origins; |
| 60 for (const url::Origin& origin : whitelist.origins) |
| 61 web_origins.push_back(origin); |
| 62 result.push_back(web_whitelist); |
| 63 } |
| 64 return result; |
| 65 } |
| 66 |
| 50 } // namespace | 67 } // namespace |
| 51 | 68 |
| 52 // static | 69 // static |
| 53 RenderFrameProxy* RenderFrameProxy::CreateProxyToReplaceFrame( | 70 RenderFrameProxy* RenderFrameProxy::CreateProxyToReplaceFrame( |
| 54 RenderFrameImpl* frame_to_replace, | 71 RenderFrameImpl* frame_to_replace, |
| 55 int routing_id, | 72 int routing_id, |
| 56 blink::WebTreeScopeType scope) { | 73 blink::WebTreeScopeType scope) { |
| 57 CHECK_NE(routing_id, MSG_ROUTING_NONE); | 74 CHECK_NE(routing_id, MSG_ROUTING_NONE); |
| 58 | 75 |
| 59 std::unique_ptr<RenderFrameProxy> proxy( | 76 std::unique_ptr<RenderFrameProxy> proxy( |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 void RenderFrameProxy::SetReplicatedState(const FrameReplicationState& state) { | 234 void RenderFrameProxy::SetReplicatedState(const FrameReplicationState& state) { |
| 218 DCHECK(web_frame_); | 235 DCHECK(web_frame_); |
| 219 web_frame_->setReplicatedOrigin(state.origin); | 236 web_frame_->setReplicatedOrigin(state.origin); |
| 220 web_frame_->setReplicatedSandboxFlags(state.sandbox_flags); | 237 web_frame_->setReplicatedSandboxFlags(state.sandbox_flags); |
| 221 web_frame_->setReplicatedName(blink::WebString::fromUTF8(state.name), | 238 web_frame_->setReplicatedName(blink::WebString::fromUTF8(state.name), |
| 222 blink::WebString::fromUTF8(state.unique_name)); | 239 blink::WebString::fromUTF8(state.unique_name)); |
| 223 web_frame_->setReplicatedInsecureRequestPolicy(state.insecure_request_policy); | 240 web_frame_->setReplicatedInsecureRequestPolicy(state.insecure_request_policy); |
| 224 web_frame_->setReplicatedPotentiallyTrustworthyUniqueOrigin( | 241 web_frame_->setReplicatedPotentiallyTrustworthyUniqueOrigin( |
| 225 state.has_potentially_trustworthy_unique_origin); | 242 state.has_potentially_trustworthy_unique_origin); |
| 226 web_frame_->setReplicatedFeaturePolicyHeader( | 243 web_frame_->setReplicatedFeaturePolicyHeader( |
| 227 blink::WebString::fromUTF8(state.feature_policy_header)); | 244 ToWebParsedFeaturePolicy(state.feature_policy_header)); |
| 228 | 245 |
| 229 web_frame_->resetReplicatedContentSecurityPolicy(); | 246 web_frame_->resetReplicatedContentSecurityPolicy(); |
| 230 for (const auto& header : state.accumulated_csp_headers) | 247 for (const auto& header : state.accumulated_csp_headers) |
| 231 OnAddContentSecurityPolicy(header); | 248 OnAddContentSecurityPolicy(header); |
| 232 } | 249 } |
| 233 | 250 |
| 234 // Update the proxy's SecurityContext and FrameOwner with new sandbox flags | 251 // Update the proxy's SecurityContext and FrameOwner with new sandbox flags |
| 235 // that were set by its parent in another process. | 252 // that were set by its parent in another process. |
| 236 // | 253 // |
| 237 // Normally, when a frame's sandbox attribute is changed dynamically, the | 254 // Normally, when a frame's sandbox attribute is changed dynamically, the |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 blink::WebLocalFrame* source) { | 522 blink::WebLocalFrame* source) { |
| 506 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); | 523 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); |
| 507 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); | 524 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); |
| 508 } | 525 } |
| 509 | 526 |
| 510 void RenderFrameProxy::frameFocused() { | 527 void RenderFrameProxy::frameFocused() { |
| 511 Send(new FrameHostMsg_FrameFocused(routing_id_)); | 528 Send(new FrameHostMsg_FrameFocused(routing_id_)); |
| 512 } | 529 } |
| 513 | 530 |
| 514 } // namespace | 531 } // namespace |
| OLD | NEW |