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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 web_frame_(nullptr), | 159 web_frame_(nullptr), |
160 render_view_(nullptr), | 160 render_view_(nullptr), |
161 render_widget_(nullptr) { | 161 render_widget_(nullptr) { |
162 std::pair<RoutingIDProxyMap::iterator, bool> result = | 162 std::pair<RoutingIDProxyMap::iterator, bool> result = |
163 g_routing_id_proxy_map.Get().insert(std::make_pair(routing_id_, this)); | 163 g_routing_id_proxy_map.Get().insert(std::make_pair(routing_id_, this)); |
164 CHECK(result.second) << "Inserting a duplicate item."; | 164 CHECK(result.second) << "Inserting a duplicate item."; |
165 RenderThread::Get()->AddRoute(routing_id_, this); | 165 RenderThread::Get()->AddRoute(routing_id_, this); |
166 } | 166 } |
167 | 167 |
168 RenderFrameProxy::~RenderFrameProxy() { | 168 RenderFrameProxy::~RenderFrameProxy() { |
169 // TODO(nasko): Set the render_frame_proxy to null to avoid a double deletion | |
170 // when detaching the main frame. This can be removed once RenderFrameImpl and | |
171 // RenderFrameProxy have been completely decoupled. See | |
172 // https://crbug.com/357747. | |
173 RenderFrameImpl* render_frame = | |
174 RenderFrameImpl::FromRoutingID(frame_routing_id_); | |
175 if (render_frame) | |
176 render_frame->set_render_frame_proxy(nullptr); | |
177 | |
178 render_widget_->UnregisterRenderFrameProxy(this); | 169 render_widget_->UnregisterRenderFrameProxy(this); |
179 | 170 |
180 CHECK(!web_frame_); | 171 CHECK(!web_frame_); |
181 RenderThread::Get()->RemoveRoute(routing_id_); | 172 RenderThread::Get()->RemoveRoute(routing_id_); |
182 g_routing_id_proxy_map.Get().erase(routing_id_); | 173 g_routing_id_proxy_map.Get().erase(routing_id_); |
183 } | 174 } |
184 | 175 |
185 void RenderFrameProxy::Init(blink::WebRemoteFrame* web_frame, | 176 void RenderFrameProxy::Init(blink::WebRemoteFrame* web_frame, |
186 RenderViewImpl* render_view, | 177 RenderViewImpl* render_view, |
187 RenderWidget* render_widget) { | 178 RenderWidget* render_widget) { |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 FrameMap::iterator it = g_frame_map.Get().find(web_frame_); | 368 FrameMap::iterator it = g_frame_map.Get().find(web_frame_); |
378 CHECK(it != g_frame_map.Get().end()); | 369 CHECK(it != g_frame_map.Get().end()); |
379 CHECK_EQ(it->second, this); | 370 CHECK_EQ(it->second, this); |
380 g_frame_map.Get().erase(it); | 371 g_frame_map.Get().erase(it); |
381 | 372 |
382 web_frame_ = nullptr; | 373 web_frame_ = nullptr; |
383 | 374 |
384 delete this; | 375 delete this; |
385 } | 376 } |
386 | 377 |
387 void RenderFrameProxy::postMessageEvent( | 378 void RenderFrameProxy::forwardPostMessage( |
388 blink::WebLocalFrame* source_frame, | 379 blink::WebLocalFrame* source_frame, |
389 blink::WebRemoteFrame* target_frame, | 380 blink::WebRemoteFrame* target_frame, |
390 blink::WebSecurityOrigin target_origin, | 381 blink::WebSecurityOrigin target_origin, |
391 blink::WebDOMMessageEvent event) { | 382 blink::WebDOMMessageEvent event) { |
392 DCHECK(!web_frame_ || web_frame_ == target_frame); | 383 DCHECK(!web_frame_ || web_frame_ == target_frame); |
393 | 384 |
394 FrameMsg_PostMessage_Params params; | 385 FrameMsg_PostMessage_Params params; |
395 params.is_data_raw_string = false; | 386 params.is_data_raw_string = false; |
396 params.data = event.data().toString(); | 387 params.data = event.data().toString(); |
397 params.source_origin = event.origin(); | 388 params.source_origin = event.origin(); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 blink::WebLocalFrame* source) { | 460 blink::WebLocalFrame* source) { |
470 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); | 461 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); |
471 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); | 462 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); |
472 } | 463 } |
473 | 464 |
474 void RenderFrameProxy::frameFocused() { | 465 void RenderFrameProxy::frameFocused() { |
475 Send(new FrameHostMsg_FrameFocused(routing_id_)); | 466 Send(new FrameHostMsg_FrameFocused(routing_id_)); |
476 } | 467 } |
477 | 468 |
478 } // namespace | 469 } // namespace |
OLD | NEW |