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

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: refactor one method, 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/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility) 192 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility)
193 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck) 193 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck)
194 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) 194 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry)
195 IPC_MESSAGE_UNHANDLED(handled = false) 195 IPC_MESSAGE_UNHANDLED(handled = false)
196 IPC_END_MESSAGE_MAP() 196 IPC_END_MESSAGE_MAP()
197 return handled; 197 return handled;
198 } 198 }
199 199
200 void BrowserPluginGuest::Initialize( 200 void BrowserPluginGuest::Initialize(
201 const BrowserPluginHostMsg_Attach_Params& params, 201 const BrowserPluginHostMsg_Attach_Params& params,
202 WebContentsImpl* embedder_web_contents) { 202 WebContentsImpl* embedder_web_contents,
203 const base::DictionaryValue& extra_params) {
204 printf("BPG::Initialize()\n");
203 focused_ = params.focused; 205 focused_ = params.focused;
204 guest_visible_ = params.visible; 206 guest_visible_ = params.visible;
205 guest_opaque_ = params.opaque; 207 guest_opaque_ = params.opaque;
206 guest_window_rect_ = params.resize_guest_params.view_rect; 208 guest_window_rect_ = params.resize_guest_params.view_rect;
207 209
208 auto_size_enabled_ = params.auto_size_params.enable; 210 auto_size_enabled_ = params.auto_size_params.enable;
209 max_auto_size_ = params.auto_size_params.max_size; 211 max_auto_size_ = params.auto_size_params.max_size;
210 min_auto_size_ = params.auto_size_params.min_size; 212 min_auto_size_ = params.auto_size_params.min_size;
211 213
212 // Once a BrowserPluginGuest has an embedder WebContents, it's considered to 214 // Once a BrowserPluginGuest has an embedder WebContents, it's considered to
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 247
246 // Create a swapped out RenderView for the guest in the embedder render 248 // Create a swapped out RenderView for the guest in the embedder render
247 // process, so that the embedder can access the guest's window object. 249 // process, so that the embedder can access the guest's window object.
248 int guest_routing_id = 250 int guest_routing_id =
249 GetWebContents()->CreateSwappedOutRenderView( 251 GetWebContents()->CreateSwappedOutRenderView(
250 embedder_web_contents_->GetSiteInstance()); 252 embedder_web_contents_->GetSiteInstance());
251 SendMessageToEmbedder( 253 SendMessageToEmbedder(
252 new BrowserPluginMsg_GuestContentWindowReady(instance_id_, 254 new BrowserPluginMsg_GuestContentWindowReady(instance_id_,
253 guest_routing_id)); 255 guest_routing_id));
254 256
255 if (!params.src.empty()) {
256 // params.src will be validated in BrowserPluginGuest::OnNavigateGuest.
257 OnNavigateGuest(instance_id_, params.src);
258 has_render_view_ = true;
259 }
260
261 WebPreferences prefs = GetWebContents()->GetWebkitPrefs(); 257 WebPreferences prefs = GetWebContents()->GetWebkitPrefs();
262 prefs.navigate_on_drag_drop = false; 258 prefs.navigate_on_drag_drop = false;
263 GetWebContents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs); 259 GetWebContents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs);
264 260
265 // Enable input method for guest if it's enabled for the embedder. 261 // Enable input method for guest if it's enabled for the embedder.
266 if (static_cast<RenderViewHostImpl*>( 262 if (static_cast<RenderViewHostImpl*>(
267 embedder_web_contents_->GetRenderViewHost())->input_method_active()) { 263 embedder_web_contents_->GetRenderViewHost())->input_method_active()) {
268 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 264 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
269 GetWebContents()->GetRenderViewHost()); 265 GetWebContents()->GetRenderViewHost());
270 guest_rvh->SetInputMethodActive(true); 266 guest_rvh->SetInputMethodActive(true);
271 } 267 }
272 268
273 // Inform the embedder of the guest's information. 269 // Inform the embedder of the guest's information.
274 // We pull the partition information from the site's URL, which is of the form 270 // We pull the partition information from the site's URL, which is of the form
275 // guest://site/{persist}?{partition_name}. 271 // guest://site/{persist}?{partition_name}.
276 const GURL& site_url = GetWebContents()->GetSiteInstance()->GetSiteURL(); 272 const GURL& site_url = GetWebContents()->GetSiteInstance()->GetSiteURL();
277 BrowserPluginMsg_Attach_ACK_Params ack_params; 273 BrowserPluginMsg_Attach_ACK_Params ack_params;
278 ack_params.storage_partition_id = site_url.query(); 274 ack_params.storage_partition_id = site_url.query();
279 ack_params.persist_storage = 275 ack_params.persist_storage =
280 site_url.path().find("persist") != std::string::npos; 276 site_url.path().find("persist") != std::string::npos;
281 SendMessageToEmbedder( 277 SendMessageToEmbedder(
282 new BrowserPluginMsg_Attach_ACK(instance_id_, ack_params)); 278 new BrowserPluginMsg_Attach_ACK(instance_id_, ack_params));
283 279
284 if (delegate_) 280 if (delegate_) {
285 delegate_->DidAttach(); 281 delegate_->DidAttach(extra_params);
282 // TODO(lazyboy): Should not set this if src is empty.
283 has_render_view_ = true;
Fady Samuel 2014/05/27 14:19:06 This flag only makes sense for a new window with a
lazyboy 2014/05/27 20:43:00 So what change is required to get that info here t
284 }
286 } 285 }
287 286
288 BrowserPluginGuest::~BrowserPluginGuest() { 287 BrowserPluginGuest::~BrowserPluginGuest() {
289 while (!pending_messages_.empty()) { 288 while (!pending_messages_.empty()) {
290 delete pending_messages_.front(); 289 delete pending_messages_.front();
291 pending_messages_.pop(); 290 pending_messages_.pop();
292 } 291 }
293 } 292 }
294 293
295 // static 294 // static
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 ColorChooser* BrowserPluginGuest::OpenColorChooser( 415 ColorChooser* BrowserPluginGuest::OpenColorChooser(
417 WebContents* web_contents, 416 WebContents* web_contents,
418 SkColor color, 417 SkColor color,
419 const std::vector<ColorSuggestion>& suggestions) { 418 const std::vector<ColorSuggestion>& suggestions) {
420 if (!delegate_) 419 if (!delegate_)
421 return NULL; 420 return NULL;
422 return delegate_->OpenColorChooser(web_contents, color, suggestions); 421 return delegate_->OpenColorChooser(web_contents, color, suggestions);
423 } 422 }
424 423
425 bool BrowserPluginGuest::HandleContextMenu(const ContextMenuParams& params) { 424 bool BrowserPluginGuest::HandleContextMenu(const ContextMenuParams& params) {
425 printf("+++ %s\n", __PRETTY_FUNCTION__);
426 if (delegate_) { 426 if (delegate_) {
427 WebContentsViewGuest* view_guest = 427 WebContentsViewGuest* view_guest =
428 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView()); 428 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
429 ContextMenuParams context_menu_params = 429 ContextMenuParams context_menu_params =
430 view_guest->ConvertContextMenuParams(params); 430 view_guest->ConvertContextMenuParams(params);
431 431
432 printf("To delegate_\n");
432 return delegate_->HandleContextMenu(context_menu_params); 433 return delegate_->HandleContextMenu(context_menu_params);
433 } 434 }
435 printf("To WebContentsViewGuest\n");
434 436
435 // Will be handled by WebContentsViewGuest. 437 // Will be handled by WebContentsViewGuest.
436 return false; 438 return false;
437 } 439 }
438 440
439 void BrowserPluginGuest::HandleKeyboardEvent( 441 void BrowserPluginGuest::HandleKeyboardEvent(
440 WebContents* source, 442 WebContents* source,
441 const NativeWebKeyboardEvent& event) { 443 const NativeWebKeyboardEvent& event) {
442 if (!delegate_) 444 if (!delegate_)
443 return; 445 return;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 return handled; 702 return handled;
701 } 703 }
702 704
703 void BrowserPluginGuest::Attach( 705 void BrowserPluginGuest::Attach(
704 WebContentsImpl* embedder_web_contents, 706 WebContentsImpl* embedder_web_contents,
705 BrowserPluginHostMsg_Attach_Params params, 707 BrowserPluginHostMsg_Attach_Params params,
706 const base::DictionaryValue& extra_params) { 708 const base::DictionaryValue& extra_params) {
707 if (attached()) 709 if (attached())
708 return; 710 return;
709 711
710 // Clear parameters that get inherited from the opener.
711 params.storage_partition_id.clear();
712 params.persist_storage = false;
713 params.src.clear();
714
715 // If a RenderView has already been created for this new window, then we need 712 // If a RenderView has already been created for this new window, then we need
716 // to initialize the browser-side state now so that the RenderFrameHostManager 713 // to initialize the browser-side state now so that the RenderFrameHostManager
717 // does not create a new RenderView on navigation. 714 // does not create a new RenderView on navigation.
718 if (has_render_view_) { 715 if (has_render_view_) {
719 static_cast<RenderViewHostImpl*>( 716 static_cast<RenderViewHostImpl*>(
720 GetWebContents()->GetRenderViewHost())->Init(); 717 GetWebContents()->GetRenderViewHost())->Init();
721 WebContentsViewGuest* new_view = 718 WebContentsViewGuest* new_view =
722 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView()); 719 static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
723 new_view->CreateViewForWidget(web_contents()->GetRenderViewHost()); 720 new_view->CreateViewForWidget(web_contents()->GetRenderViewHost());
724 } 721 }
725 722
726 Initialize(params, embedder_web_contents); 723 Initialize(params, embedder_web_contents, extra_params);
727 724
728 SendQueuedMessages(); 725 SendQueuedMessages();
729 726
730 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached")); 727 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached"));
731 } 728 }
732 729
733 void BrowserPluginGuest::OnCompositorFrameSwappedACK( 730 void BrowserPluginGuest::OnCompositorFrameSwappedACK(
734 int instance_id, 731 int instance_id,
735 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) { 732 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) {
736 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id, 733 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id,
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 void BrowserPluginGuest::OnImeCompositionRangeChanged( 1144 void BrowserPluginGuest::OnImeCompositionRangeChanged(
1148 const gfx::Range& range, 1145 const gfx::Range& range,
1149 const std::vector<gfx::Rect>& character_bounds) { 1146 const std::vector<gfx::Rect>& character_bounds) {
1150 static_cast<RenderWidgetHostViewBase*>( 1147 static_cast<RenderWidgetHostViewBase*>(
1151 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged( 1148 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged(
1152 range, character_bounds); 1149 range, character_bounds);
1153 } 1150 }
1154 #endif 1151 #endif
1155 1152
1156 } // namespace content 1153 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698