Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: content/browser/browser_plugin/browser_plugin_guest.cc

Issue 299753011: Move allocate instance id to chrome/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/browser_plugin/browser_plugin_guest.h" 5 #include "content/browser/browser_plugin/browser_plugin_guest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility) 167 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility)
168 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck) 168 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck)
169 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) 169 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry)
170 IPC_MESSAGE_UNHANDLED(handled = false) 170 IPC_MESSAGE_UNHANDLED(handled = false)
171 IPC_END_MESSAGE_MAP() 171 IPC_END_MESSAGE_MAP()
172 return handled; 172 return handled;
173 } 173 }
174 174
175 void BrowserPluginGuest::Initialize( 175 void BrowserPluginGuest::Initialize(
176 const BrowserPluginHostMsg_Attach_Params& params, 176 const BrowserPluginHostMsg_Attach_Params& params,
177 WebContentsImpl* embedder_web_contents) { 177 WebContentsImpl* embedder_web_contents,
178 const base::DictionaryValue& extra_params) {
179 printf("BPG::Initialize()\n");
178 focused_ = params.focused; 180 focused_ = params.focused;
179 guest_visible_ = params.visible; 181 guest_visible_ = params.visible;
180 guest_opaque_ = params.opaque; 182 guest_opaque_ = params.opaque;
181 guest_window_rect_ = params.resize_guest_params.view_rect; 183 guest_window_rect_ = params.resize_guest_params.view_rect;
182 184
183 auto_size_enabled_ = params.auto_size_params.enable; 185 auto_size_enabled_ = params.auto_size_params.enable;
184 max_auto_size_ = params.auto_size_params.max_size; 186 max_auto_size_ = params.auto_size_params.max_size;
185 min_auto_size_ = params.auto_size_params.min_size; 187 min_auto_size_ = params.auto_size_params.min_size;
186 188
187 // Once a BrowserPluginGuest has an embedder WebContents, it's considered to 189 // Once a BrowserPluginGuest has an embedder WebContents, it's considered to
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 222
221 // Create a swapped out RenderView for the guest in the embedder render 223 // Create a swapped out RenderView for the guest in the embedder render
222 // process, so that the embedder can access the guest's window object. 224 // process, so that the embedder can access the guest's window object.
223 int guest_routing_id = 225 int guest_routing_id =
224 GetWebContents()->CreateSwappedOutRenderView( 226 GetWebContents()->CreateSwappedOutRenderView(
225 embedder_web_contents_->GetSiteInstance()); 227 embedder_web_contents_->GetSiteInstance());
226 SendMessageToEmbedder( 228 SendMessageToEmbedder(
227 new BrowserPluginMsg_GuestContentWindowReady(instance_id_, 229 new BrowserPluginMsg_GuestContentWindowReady(instance_id_,
228 guest_routing_id)); 230 guest_routing_id));
229 231
230 if (!params.src.empty()) {
231 // params.src will be validated in BrowserPluginGuest::OnNavigateGuest.
232 OnNavigateGuest(instance_id_, params.src);
Fady Samuel 2014/05/29 20:35:23 We probably get rid of the IPC message and the met
lazyboy 2014/05/30 05:48:21 Done.
233 has_render_view_ = true;
234 }
235
236 WebPreferences prefs = GetWebContents()->GetWebkitPrefs(); 232 WebPreferences prefs = GetWebContents()->GetWebkitPrefs();
237 prefs.navigate_on_drag_drop = false; 233 prefs.navigate_on_drag_drop = false;
238 GetWebContents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs); 234 GetWebContents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs);
239 235
240 // Enable input method for guest if it's enabled for the embedder. 236 // Enable input method for guest if it's enabled for the embedder.
241 if (static_cast<RenderViewHostImpl*>( 237 if (static_cast<RenderViewHostImpl*>(
242 embedder_web_contents_->GetRenderViewHost())->input_method_active()) { 238 embedder_web_contents_->GetRenderViewHost())->input_method_active()) {
243 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 239 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
244 GetWebContents()->GetRenderViewHost()); 240 GetWebContents()->GetRenderViewHost());
245 guest_rvh->SetInputMethodActive(true); 241 guest_rvh->SetInputMethodActive(true);
246 } 242 }
247 243
248 // Inform the embedder of the guest's information. 244 // Inform the embedder of the guest's information.
Fady Samuel 2014/05/29 20:35:23 We can get rid of the parameters on Attach_ACK.
lazyboy 2014/05/30 05:48:21 Done.
249 // We pull the partition information from the site's URL, which is of the form 245 // We pull the partition information from the site's URL, which is of the form
250 // guest://site/{persist}?{partition_name}. 246 // guest://site/{persist}?{partition_name}.
251 const GURL& site_url = GetWebContents()->GetSiteInstance()->GetSiteURL(); 247 const GURL& site_url = GetWebContents()->GetSiteInstance()->GetSiteURL();
252 BrowserPluginMsg_Attach_ACK_Params ack_params; 248 BrowserPluginMsg_Attach_ACK_Params ack_params;
253 ack_params.storage_partition_id = site_url.query(); 249 ack_params.storage_partition_id = site_url.query();
254 ack_params.persist_storage = 250 ack_params.persist_storage =
255 site_url.path().find("persist") != std::string::npos; 251 site_url.path().find("persist") != std::string::npos;
256 SendMessageToEmbedder( 252 SendMessageToEmbedder(
257 new BrowserPluginMsg_Attach_ACK(instance_id_, ack_params)); 253 new BrowserPluginMsg_Attach_ACK(instance_id_, ack_params));
258 254
259 if (delegate_) 255 if (delegate_) {
260 delegate_->DidAttach(); 256 delegate_->DidAttach(extra_params);
257 // TODO(lazyboy): Should not set this if src is empty.
Fady Samuel 2014/05/29 20:35:23 In theory it should always be the case that we've
lazyboy 2014/05/30 05:48:21 Removed TODO.
258 has_render_view_ = true;
259 }
261 } 260 }
262 261
263 BrowserPluginGuest::~BrowserPluginGuest() { 262 BrowserPluginGuest::~BrowserPluginGuest() {
264 while (!pending_messages_.empty()) { 263 while (!pending_messages_.empty()) {
265 delete pending_messages_.front(); 264 delete pending_messages_.front();
266 pending_messages_.pop(); 265 pending_messages_.pop();
267 } 266 }
268 } 267 }
269 268
270 // static 269 // static
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 #endif 540 #endif
542 IPC_MESSAGE_HANDLER(ViewHostMsg_UnlockMouse, OnUnlockMouse) 541 IPC_MESSAGE_HANDLER(ViewHostMsg_UnlockMouse, OnUnlockMouse)
543 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect) 542 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect)
544 IPC_MESSAGE_UNHANDLED(handled = false) 543 IPC_MESSAGE_UNHANDLED(handled = false)
545 IPC_END_MESSAGE_MAP() 544 IPC_END_MESSAGE_MAP()
546 return handled; 545 return handled;
547 } 546 }
548 547
549 void BrowserPluginGuest::Attach( 548 void BrowserPluginGuest::Attach(
550 WebContentsImpl* embedder_web_contents, 549 WebContentsImpl* embedder_web_contents,
551 BrowserPluginHostMsg_Attach_Params params, 550 BrowserPluginHostMsg_Attach_Params params,
Fady Samuel 2014/05/29 20:35:23 If we're not modifying the attach params now, this
lazyboy 2014/05/30 05:48:21 Done.
552 const base::DictionaryValue& extra_params) { 551 const base::DictionaryValue& extra_params) {
553 if (attached()) 552 if (attached())
554 return; 553 return;
555 554
556 // Clear parameters that get inherited from the opener.
557 params.storage_partition_id.clear();
558 params.persist_storage = false;
559 params.src.clear();
560
561 // If a RenderView has already been created for this new window, then we need 555 // If a RenderView has already been created for this new window, then we need
562 // to initialize the browser-side state now so that the RenderFrameHostManager 556 // to initialize the browser-side state now so that the RenderFrameHostManager
563 // does not create a new RenderView on navigation. 557 // does not create a new RenderView on navigation.
564 if (has_render_view_) { 558 if (has_render_view_) {
565 static_cast<RenderViewHostImpl*>( 559 static_cast<RenderViewHostImpl*>(
566 GetWebContents()->GetRenderViewHost())->Init(); 560 GetWebContents()->GetRenderViewHost())->Init();
567 WebContentsViewGuest* new_view = 561 WebContentsViewGuest* new_view =
568 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView()); 562 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
569 new_view->CreateViewForWidget(web_contents()->GetRenderViewHost()); 563 new_view->CreateViewForWidget(web_contents()->GetRenderViewHost());
570 } 564 }
571 565
572 Initialize(params, embedder_web_contents); 566 Initialize(params, embedder_web_contents, extra_params);
573 567
574 SendQueuedMessages(); 568 SendQueuedMessages();
Fady Samuel 2014/05/29 20:35:23 I don't think we need a separate BrowserPluginGues
lazyboy 2014/05/30 05:48:21 I've made BPEmbedder always call Attach, and made
575 569
576 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached")); 570 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached"));
577 } 571 }
578 572
579 void BrowserPluginGuest::OnCompositorFrameSwappedACK( 573 void BrowserPluginGuest::OnCompositorFrameSwappedACK(
580 int instance_id, 574 int instance_id,
581 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) { 575 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) {
582 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id, 576 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id,
583 params.output_surface_id, 577 params.output_surface_id,
584 params.producing_host_id, 578 params.producing_host_id,
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 void BrowserPluginGuest::OnImeCompositionRangeChanged( 965 void BrowserPluginGuest::OnImeCompositionRangeChanged(
972 const gfx::Range& range, 966 const gfx::Range& range,
973 const std::vector<gfx::Rect>& character_bounds) { 967 const std::vector<gfx::Rect>& character_bounds) {
974 static_cast<RenderWidgetHostViewBase*>( 968 static_cast<RenderWidgetHostViewBase*>(
975 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged( 969 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged(
976 range, character_bounds); 970 range, character_bounds);
977 } 971 }
978 #endif 972 #endif
979 973
980 } // namespace content 974 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698