| 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 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 // static | 489 // static |
| 490 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { | 490 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { |
| 491 RoutingIDFrameMap::iterator iter = | 491 RoutingIDFrameMap::iterator iter = |
| 492 g_routing_id_frame_map.Get().find(routing_id); | 492 g_routing_id_frame_map.Get().find(routing_id); |
| 493 if (iter != g_routing_id_frame_map.Get().end()) | 493 if (iter != g_routing_id_frame_map.Get().end()) |
| 494 return iter->second; | 494 return iter->second; |
| 495 return NULL; | 495 return NULL; |
| 496 } | 496 } |
| 497 | 497 |
| 498 // static | 498 // static |
| 499 void RenderFrameImpl::CreateFrame(int routing_id, int parent_routing_id) { | 499 void RenderFrameImpl::CreateFrame(int routing_id, |
| 500 int parent_routing_id, |
| 501 int proxy_routing_id) { |
| 500 // TODO(nasko): For now, this message is only sent for subframes, as the | 502 // TODO(nasko): For now, this message is only sent for subframes, as the |
| 501 // top level frame is created when the RenderView is created through the | 503 // top level frame is created when the RenderView is created through the |
| 502 // ViewMsg_New IPC. | 504 // ViewMsg_New IPC. |
| 503 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); | 505 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); |
| 504 | 506 |
| 505 RenderFrameProxy* proxy = RenderFrameProxy::FromRoutingID(parent_routing_id); | 507 blink::WebLocalFrame* web_frame; |
| 508 RenderFrameImpl* render_frame; |
| 509 if (proxy_routing_id == MSG_ROUTING_NONE) { |
| 510 RenderFrameProxy* parent_proxy = |
| 511 RenderFrameProxy::FromRoutingID(parent_routing_id); |
| 512 // If the browser is sending a valid parent routing id, it should already |
| 513 // be created and registered. |
| 514 CHECK(parent_proxy); |
| 515 blink::WebRemoteFrame* parent_web_frame = parent_proxy->web_frame(); |
| 506 | 516 |
| 507 // If the browser is sending a valid parent routing id, it should already be | 517 // Create the RenderFrame and WebLocalFrame, linking the two. |
| 508 // created and registered. | 518 render_frame = |
| 509 CHECK(proxy); | 519 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); |
| 510 blink::WebRemoteFrame* parent_web_frame = proxy->web_frame(); | 520 web_frame = parent_web_frame->createLocalChild("", render_frame); |
| 511 | 521 } else { |
| 512 // Create the RenderFrame and WebLocalFrame, linking the two. | 522 RenderFrameProxy* proxy = |
| 513 RenderFrameImpl* render_frame = | 523 RenderFrameProxy::FromRoutingID(proxy_routing_id); |
| 514 RenderFrameImpl::Create(proxy->render_view(), routing_id); | 524 CHECK(proxy); |
| 515 blink::WebLocalFrame* web_frame = | 525 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); |
| 516 parent_web_frame->createLocalChild("", render_frame); | 526 web_frame = blink::WebLocalFrame::create(render_frame); |
| 527 render_frame->proxy_routing_id_ = proxy_routing_id; |
| 528 web_frame->initializeToReplaceRemoteFrame(proxy->web_frame()); |
| 529 } |
| 517 render_frame->SetWebFrame(web_frame); | 530 render_frame->SetWebFrame(web_frame); |
| 518 render_frame->Initialize(); | 531 render_frame->Initialize(); |
| 519 } | 532 } |
| 520 | 533 |
| 521 // static | 534 // static |
| 522 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { | 535 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { |
| 523 return RenderFrameImpl::FromWebFrame(web_frame); | 536 return RenderFrameImpl::FromWebFrame(web_frame); |
| 524 } | 537 } |
| 525 | 538 |
| 526 // static | 539 // static |
| (...skipping 12 matching lines...) Expand all Loading... |
| 539 } | 552 } |
| 540 | 553 |
| 541 // RenderFrameImpl ---------------------------------------------------------- | 554 // RenderFrameImpl ---------------------------------------------------------- |
| 542 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) | 555 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) |
| 543 : frame_(NULL), | 556 : frame_(NULL), |
| 544 render_view_(render_view->AsWeakPtr()), | 557 render_view_(render_view->AsWeakPtr()), |
| 545 routing_id_(routing_id), | 558 routing_id_(routing_id), |
| 546 is_swapped_out_(false), | 559 is_swapped_out_(false), |
| 547 render_frame_proxy_(NULL), | 560 render_frame_proxy_(NULL), |
| 548 is_detaching_(false), | 561 is_detaching_(false), |
| 562 proxy_routing_id_(MSG_ROUTING_NONE), |
| 549 cookie_jar_(this), | 563 cookie_jar_(this), |
| 550 selection_text_offset_(0), | 564 selection_text_offset_(0), |
| 551 selection_range_(gfx::Range::InvalidRange()), | 565 selection_range_(gfx::Range::InvalidRange()), |
| 552 handling_select_range_(false), | 566 handling_select_range_(false), |
| 553 notification_permission_dispatcher_(NULL), | 567 notification_permission_dispatcher_(NULL), |
| 554 notification_provider_(NULL), | 568 notification_provider_(NULL), |
| 555 web_user_media_client_(NULL), | 569 web_user_media_client_(NULL), |
| 556 midi_dispatcher_(NULL), | 570 midi_dispatcher_(NULL), |
| 557 #if defined(OS_ANDROID) | 571 #if defined(OS_ANDROID) |
| 558 media_player_manager_(NULL), | 572 media_player_manager_(NULL), |
| (...skipping 1653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2212 const blink::WebHistoryItem& item, | 2226 const blink::WebHistoryItem& item, |
| 2213 blink::WebHistoryCommitType commit_type) { | 2227 blink::WebHistoryCommitType commit_type) { |
| 2214 TRACE_EVENT2("navigation", "RenderFrameImpl::didCommitProvisionalLoad", | 2228 TRACE_EVENT2("navigation", "RenderFrameImpl::didCommitProvisionalLoad", |
| 2215 "id", routing_id_, | 2229 "id", routing_id_, |
| 2216 "url", GetLoadingUrl().possibly_invalid_spec()); | 2230 "url", GetLoadingUrl().possibly_invalid_spec()); |
| 2217 DCHECK(!frame_ || frame_ == frame); | 2231 DCHECK(!frame_ || frame_ == frame); |
| 2218 DocumentState* document_state = | 2232 DocumentState* document_state = |
| 2219 DocumentState::FromDataSource(frame->dataSource()); | 2233 DocumentState::FromDataSource(frame->dataSource()); |
| 2220 NavigationState* navigation_state = document_state->navigation_state(); | 2234 NavigationState* navigation_state = document_state->navigation_state(); |
| 2221 | 2235 |
| 2236 if (proxy_routing_id_ != MSG_ROUTING_NONE) { |
| 2237 RenderFrameProxy* proxy = |
| 2238 RenderFrameProxy::FromRoutingID(proxy_routing_id_); |
| 2239 CHECK(proxy); |
| 2240 proxy->web_frame()->swap(frame_); |
| 2241 proxy_routing_id_ = MSG_ROUTING_NONE; |
| 2242 } |
| 2243 |
| 2222 // When we perform a new navigation, we need to update the last committed | 2244 // When we perform a new navigation, we need to update the last committed |
| 2223 // session history entry with state for the page we are leaving. Do this | 2245 // session history entry with state for the page we are leaving. Do this |
| 2224 // before updating the HistoryController state. | 2246 // before updating the HistoryController state. |
| 2225 render_view_->UpdateSessionHistory(frame); | 2247 render_view_->UpdateSessionHistory(frame); |
| 2226 | 2248 |
| 2227 render_view_->history_controller()->UpdateForCommit(this, item, commit_type, | 2249 render_view_->history_controller()->UpdateForCommit(this, item, commit_type, |
| 2228 navigation_state->was_within_same_page()); | 2250 navigation_state->was_within_same_page()); |
| 2229 | 2251 |
| 2230 InternalDocumentStateData* internal_data = | 2252 InternalDocumentStateData* internal_data = |
| 2231 InternalDocumentStateData::FromDocumentState(document_state); | 2253 InternalDocumentStateData::FromDocumentState(document_state); |
| (...skipping 1875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4107 | 4129 |
| 4108 #if defined(ENABLE_BROWSER_CDMS) | 4130 #if defined(ENABLE_BROWSER_CDMS) |
| 4109 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 4131 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
| 4110 if (!cdm_manager_) | 4132 if (!cdm_manager_) |
| 4111 cdm_manager_ = new RendererCdmManager(this); | 4133 cdm_manager_ = new RendererCdmManager(this); |
| 4112 return cdm_manager_; | 4134 return cdm_manager_; |
| 4113 } | 4135 } |
| 4114 #endif // defined(ENABLE_BROWSER_CDMS) | 4136 #endif // defined(ENABLE_BROWSER_CDMS) |
| 4115 | 4137 |
| 4116 } // namespace content | 4138 } // namespace content |
| OLD | NEW |