| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_impl.h" | 5 #include "content/renderer/render_frame_impl.h" | 
| 6 | 6 | 
| 7 #include <map> | 7 #include <map> | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <utility> | 9 #include <utility> | 
| 10 #include <vector> | 10 #include <vector> | 
| (...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 864     RenderFrameProxy* previous_sibling_proxy = | 864     RenderFrameProxy* previous_sibling_proxy = | 
| 865         RenderFrameProxy::FromRoutingID(previous_sibling_routing_id); | 865         RenderFrameProxy::FromRoutingID(previous_sibling_routing_id); | 
| 866     if (previous_sibling_proxy) | 866     if (previous_sibling_proxy) | 
| 867       previous_sibling_web_frame = previous_sibling_proxy->web_frame(); | 867       previous_sibling_web_frame = previous_sibling_proxy->web_frame(); | 
| 868 | 868 | 
| 869     // Create the RenderFrame and WebLocalFrame, linking the two. | 869     // Create the RenderFrame and WebLocalFrame, linking the two. | 
| 870     render_frame = | 870     render_frame = | 
| 871         RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); | 871         RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); | 
| 872     web_frame = parent_web_frame->createLocalChild( | 872     web_frame = parent_web_frame->createLocalChild( | 
| 873         replicated_state.scope, WebString::fromUTF8(replicated_state.name), | 873         replicated_state.scope, WebString::fromUTF8(replicated_state.name), | 
|  | 874         WebString::fromUTF8(replicated_state.unique_name), | 
| 874         replicated_state.sandbox_flags, render_frame, | 875         replicated_state.sandbox_flags, render_frame, | 
| 875         previous_sibling_web_frame, frame_owner_properties); | 876         previous_sibling_web_frame, frame_owner_properties); | 
| 876 | 877 | 
| 877     // The RenderFrame is created and inserted into the frame tree in the above | 878     // The RenderFrame is created and inserted into the frame tree in the above | 
| 878     // call to createLocalChild. | 879     // call to createLocalChild. | 
| 879     render_frame->in_frame_tree_ = true; | 880     render_frame->in_frame_tree_ = true; | 
| 880   } else { | 881   } else { | 
| 881     RenderFrameProxy* proxy = | 882     RenderFrameProxy* proxy = | 
| 882         RenderFrameProxy::FromRoutingID(proxy_routing_id); | 883         RenderFrameProxy::FromRoutingID(proxy_routing_id); | 
| 883     // The remote frame could've been detached while the remote-to-local | 884     // The remote frame could've been detached while the remote-to-local | 
| (...skipping 1757 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2641     if (!navigation_state->request_committed()) { | 2642     if (!navigation_state->request_committed()) { | 
| 2642       Send(new FrameHostMsg_DidAccessInitialDocument(routing_id_)); | 2643       Send(new FrameHostMsg_DidAccessInitialDocument(routing_id_)); | 
| 2643     } | 2644     } | 
| 2644   } | 2645   } | 
| 2645 } | 2646 } | 
| 2646 | 2647 | 
| 2647 blink::WebFrame* RenderFrameImpl::createChildFrame( | 2648 blink::WebFrame* RenderFrameImpl::createChildFrame( | 
| 2648     blink::WebLocalFrame* parent, | 2649     blink::WebLocalFrame* parent, | 
| 2649     blink::WebTreeScopeType scope, | 2650     blink::WebTreeScopeType scope, | 
| 2650     const blink::WebString& name, | 2651     const blink::WebString& name, | 
|  | 2652     const blink::WebString& unique_name, | 
| 2651     blink::WebSandboxFlags sandbox_flags, | 2653     blink::WebSandboxFlags sandbox_flags, | 
| 2652     const blink::WebFrameOwnerProperties& frameOwnerProperties) { | 2654     const blink::WebFrameOwnerProperties& frame_owner_properties) { | 
| 2653   // Synchronously notify the browser of a child frame creation to get the | 2655   // Synchronously notify the browser of a child frame creation to get the | 
| 2654   // routing_id for the RenderFrame. | 2656   // routing_id for the RenderFrame. | 
| 2655   int child_routing_id = MSG_ROUTING_NONE; | 2657   int child_routing_id = MSG_ROUTING_NONE; | 
| 2656   Send(new FrameHostMsg_CreateChildFrame( | 2658   FrameHostMsg_CreateChildFrame_Params params; | 
| 2657       routing_id_, scope, base::UTF16ToUTF8(base::StringPiece16(name)), | 2659   params.parent_routing_id = routing_id_; | 
| 2658       sandbox_flags, frameOwnerProperties, &child_routing_id)); | 2660   params.scope = scope; | 
|  | 2661   params.frame_name = base::UTF16ToUTF8(base::StringPiece16(name)); | 
|  | 2662   params.frame_unique_name = | 
|  | 2663       base::UTF16ToUTF8(base::StringPiece16(unique_name)); | 
|  | 2664   params.sandbox_flags = sandbox_flags; | 
|  | 2665   params.frame_owner_properties = frame_owner_properties; | 
|  | 2666   Send(new FrameHostMsg_CreateChildFrame(params, &child_routing_id)); | 
| 2659 | 2667 | 
| 2660   // Allocation of routing id failed, so we can't create a child frame. This can | 2668   // Allocation of routing id failed, so we can't create a child frame. This can | 
| 2661   // happen if this RenderFrameImpl's IPCs are being filtered when in swapped | 2669   // happen if this RenderFrameImpl's IPCs are being filtered when in swapped | 
| 2662   // out state or synchronous IPC message above has failed. | 2670   // out state or synchronous IPC message above has failed. | 
| 2663   if (child_routing_id == MSG_ROUTING_NONE) { | 2671   if (child_routing_id == MSG_ROUTING_NONE) { | 
| 2664     NOTREACHED() << "Failed to allocate routing id for child frame."; | 2672     NOTREACHED() << "Failed to allocate routing id for child frame."; | 
| 2665     return nullptr; | 2673     return nullptr; | 
| 2666   } | 2674   } | 
| 2667 | 2675 | 
| 2668   // This method is always called by local frames, never remote frames. | 2676   // This method is always called by local frames, never remote frames. | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2762 | 2770 | 
| 2763 void RenderFrameImpl::willClose(blink::WebFrame* frame) { | 2771 void RenderFrameImpl::willClose(blink::WebFrame* frame) { | 
| 2764   DCHECK(!frame_ || frame_ == frame); | 2772   DCHECK(!frame_ || frame_ == frame); | 
| 2765 | 2773 | 
| 2766   FOR_EACH_OBSERVER(RenderFrameObserver, observers_, FrameWillClose()); | 2774   FOR_EACH_OBSERVER(RenderFrameObserver, observers_, FrameWillClose()); | 
| 2767   FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 2775   FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 
| 2768                     FrameWillClose(frame)); | 2776                     FrameWillClose(frame)); | 
| 2769 } | 2777 } | 
| 2770 | 2778 | 
| 2771 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, | 2779 void RenderFrameImpl::didChangeName(blink::WebLocalFrame* frame, | 
| 2772                                     const blink::WebString& name) { | 2780                                     const blink::WebString& name, | 
|  | 2781                                     const blink::WebString& unique_name) { | 
| 2773   DCHECK(!frame_ || frame_ == frame); | 2782   DCHECK(!frame_ || frame_ == frame); | 
| 2774 | 2783 | 
| 2775   // TODO(alexmos): According to https://crbug.com/169110, sending window.name | 2784   // TODO(alexmos): According to https://crbug.com/169110, sending window.name | 
| 2776   // updates may have performance implications for benchmarks like SunSpider. | 2785   // updates may have performance implications for benchmarks like SunSpider. | 
| 2777   // For now, send these updates only for --site-per-process, which needs to | 2786   // For now, send these updates only for --site-per-process, which needs to | 
| 2778   // replicate frame names to frame proxies, and when | 2787   // replicate frame names to frame proxies, and when | 
| 2779   // |report_frame_name_changes| is set (used by <webview>).  If needed, this | 2788   // |report_frame_name_changes| is set (used by <webview>).  If needed, this | 
| 2780   // can be optimized further by only sending the update if there are any | 2789   // can be optimized further by only sending the update if there are any | 
| 2781   // remote frames in the frame tree, or delaying and batching up IPCs if | 2790   // remote frames in the frame tree, or delaying and batching up IPCs if | 
| 2782   // updates are happening too frequently. | 2791   // updates are happening too frequently. | 
| 2783   if (SiteIsolationPolicy::AreCrossProcessFramesPossible() || | 2792   if (SiteIsolationPolicy::AreCrossProcessFramesPossible() || | 
| 2784       render_view_->renderer_preferences_.report_frame_name_changes) { | 2793       render_view_->renderer_preferences_.report_frame_name_changes) { | 
| 2785     Send(new FrameHostMsg_DidChangeName( | 2794     Send(new FrameHostMsg_DidChangeName( | 
| 2786         routing_id_, base::UTF16ToUTF8(base::StringPiece16(name)))); | 2795         routing_id_, base::UTF16ToUTF8(base::StringPiece16(name)), | 
|  | 2796         base::UTF16ToUTF8(base::StringPiece16(unique_name)))); | 
| 2787   } | 2797   } | 
| 2788 } | 2798 } | 
| 2789 | 2799 | 
| 2790 void RenderFrameImpl::didEnforceStrictMixedContentChecking() { | 2800 void RenderFrameImpl::didEnforceStrictMixedContentChecking() { | 
| 2791   Send(new FrameHostMsg_EnforceStrictMixedContentChecking(routing_id_)); | 2801   Send(new FrameHostMsg_EnforceStrictMixedContentChecking(routing_id_)); | 
| 2792 } | 2802 } | 
| 2793 | 2803 | 
| 2794 void RenderFrameImpl::didChangeSandboxFlags(blink::WebFrame* child_frame, | 2804 void RenderFrameImpl::didChangeSandboxFlags(blink::WebFrame* child_frame, | 
| 2795                                             blink::WebSandboxFlags flags) { | 2805                                             blink::WebSandboxFlags flags) { | 
| 2796   Send(new FrameHostMsg_DidChangeSandboxFlags( | 2806   Send(new FrameHostMsg_DidChangeSandboxFlags( | 
| (...skipping 3328 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6125                                     int match_count, | 6135                                     int match_count, | 
| 6126                                     int ordinal, | 6136                                     int ordinal, | 
| 6127                                     const WebRect& selection_rect, | 6137                                     const WebRect& selection_rect, | 
| 6128                                     bool final_status_update) { | 6138                                     bool final_status_update) { | 
| 6129   Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, | 6139   Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, | 
| 6130                                    selection_rect, ordinal, | 6140                                    selection_rect, ordinal, | 
| 6131                                    final_status_update)); | 6141                                    final_status_update)); | 
| 6132 } | 6142 } | 
| 6133 | 6143 | 
| 6134 }  // namespace content | 6144 }  // namespace content | 
| OLD | NEW | 
|---|