Index: content/browser/browser_plugin/browser_plugin_guest.cc |
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc |
index 4c754ffab6b20e7b3dda2a5a6e63d07020b9f0a7..0741cd5e8971e9906b359d73ee50c7aeaf1dae7f 100644 |
--- a/content/browser/browser_plugin/browser_plugin_guest.cc |
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc |
@@ -7,6 +7,7 @@ |
#include <algorithm> |
#include "base/message_loop/message_loop.h" |
+#include "base/pickle.h" |
#include "base/strings/utf_string_conversions.h" |
#include "content/browser/browser_plugin/browser_plugin_embedder.h" |
#include "content/browser/browser_thread_impl.h" |
@@ -19,6 +20,7 @@ |
#include "content/browser/renderer_host/render_widget_host_view_base.h" |
#include "content/browser/web_contents/web_contents_impl.h" |
#include "content/browser/web_contents/web_contents_view_guest.h" |
+#include "content/common/browser_plugin/browser_plugin_constants.h" |
#include "content/common/browser_plugin/browser_plugin_messages.h" |
#include "content/common/content_constants_internal.h" |
#include "content/common/drag_messages.h" |
@@ -65,14 +67,12 @@ class BrowserPluginGuest::EmbedderWebContentsObserver |
DISALLOW_COPY_AND_ASSIGN(EmbedderWebContentsObserver); |
}; |
-BrowserPluginGuest::BrowserPluginGuest( |
- int instance_id, |
- bool has_render_view, |
- WebContentsImpl* web_contents, |
- BrowserPluginGuestDelegate* delegate) |
+BrowserPluginGuest::BrowserPluginGuest(bool has_render_view, |
+ WebContentsImpl* web_contents, |
+ BrowserPluginGuestDelegate* delegate) |
: WebContentsObserver(web_contents), |
embedder_web_contents_(NULL), |
- instance_id_(instance_id), |
+ browser_plugin_instance_id_(browser_plugin::kInstanceIDNone), |
guest_device_scale_factor_(1.0f), |
focused_(false), |
mouse_locked_(false), |
@@ -163,9 +163,10 @@ bool BrowserPluginGuest::OnMessageReceivedFromEmbedder( |
} |
void BrowserPluginGuest::Initialize( |
+ int browser_plugin_instance_id, |
const BrowserPluginHostMsg_Attach_Params& params, |
- WebContentsImpl* embedder_web_contents, |
- const base::DictionaryValue& extra_params) { |
+ WebContentsImpl* embedder_web_contents) { |
+ browser_plugin_instance_id_ = browser_plugin_instance_id; |
focused_ = params.focused; |
guest_visible_ = params.visible; |
guest_opaque_ = params.opaque; |
@@ -204,16 +205,13 @@ void BrowserPluginGuest::Initialize( |
embedder_web_contents_observer_.reset(new EmbedderWebContentsObserver(this)); |
- OnResizeGuest(instance_id_, params.resize_guest_params); |
+ OnResizeGuest(browser_plugin_instance_id_, params.resize_guest_params); |
// Create a swapped out RenderView for the guest in the embedder render |
// process, so that the embedder can access the guest's window object. |
int guest_routing_id = |
GetWebContents()->CreateSwappedOutRenderView( |
embedder_web_contents_->GetSiteInstance()); |
- SendMessageToEmbedder( |
- new BrowserPluginMsg_GuestContentWindowReady(instance_id_, |
- guest_routing_id)); |
// TODO(chrishtr): this code is wrong. The navigate_on_drag_drop field will |
// be reset again the next time preferences are updated. |
@@ -231,7 +229,11 @@ void BrowserPluginGuest::Initialize( |
} |
// Inform the embedder of the guest's attachment. |
- SendMessageToEmbedder(new BrowserPluginMsg_Attach_ACK(instance_id_)); |
+ SendMessageToEmbedder( |
+ new BrowserPluginMsg_Attach_ACK(browser_plugin_instance_id_)); |
+ |
+ SendMessageToEmbedder(new BrowserPluginMsg_GuestContentWindowReady( |
+ browser_plugin_instance_id_, guest_routing_id)); |
} |
BrowserPluginGuest::~BrowserPluginGuest() { |
@@ -239,11 +241,10 @@ BrowserPluginGuest::~BrowserPluginGuest() { |
// static |
BrowserPluginGuest* BrowserPluginGuest::Create( |
- int instance_id, |
WebContentsImpl* web_contents, |
BrowserPluginGuestDelegate* delegate) { |
return new BrowserPluginGuest( |
- instance_id, web_contents->opener() != NULL, web_contents, delegate); |
+ web_contents->opener() != NULL, web_contents, delegate); |
} |
// static |
@@ -265,7 +266,7 @@ RenderWidgetHostView* BrowserPluginGuest::GetEmbedderRenderWidgetHostView() { |
} |
void BrowserPluginGuest::UpdateVisibility() { |
- OnSetVisibility(instance_id_, visible()); |
+ OnSetVisibility(browser_plugin_instance_id(), visible()); |
} |
void BrowserPluginGuest::CopyFromCompositingSurface( |
@@ -274,8 +275,11 @@ void BrowserPluginGuest::CopyFromCompositingSurface( |
const base::Callback<void(bool, const SkBitmap&)>& callback) { |
copy_request_callbacks_.insert(std::make_pair(++copy_request_id_, callback)); |
SendMessageToEmbedder( |
- new BrowserPluginMsg_CopyFromCompositingSurface(instance_id(), |
- copy_request_id_, src_subrect, dst_size)); |
+ new BrowserPluginMsg_CopyFromCompositingSurface( |
+ browser_plugin_instance_id(), |
+ copy_request_id_, |
+ src_subrect, |
+ dst_size)); |
} |
BrowserPluginGuestManager* |
@@ -302,7 +306,7 @@ void BrowserPluginGuest::EmbedderVisibilityChanged(bool visible) { |
void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) { |
SendMessageToEmbedder( |
- new BrowserPluginMsg_SetMouseLock(instance_id(), allow)); |
+ new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), allow)); |
} |
WebContentsImpl* BrowserPluginGuest::GetWebContents() const { |
@@ -375,14 +379,15 @@ void BrowserPluginGuest::RenderViewReady() { |
Send(new InputMsg_SetFocus(routing_id(), focused_)); |
UpdateVisibility(); |
- OnSetContentsOpaque(instance_id_, guest_opaque_); |
+ OnSetContentsOpaque(browser_plugin_instance_id(), guest_opaque_); |
RenderWidgetHostImpl::From(rvh)->set_hung_renderer_delay_ms( |
base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)); |
} |
void BrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) { |
- SendMessageToEmbedder(new BrowserPluginMsg_GuestGone(instance_id())); |
+ SendMessageToEmbedder( |
+ new BrowserPluginMsg_GuestGone(browser_plugin_instance_id())); |
switch (status) { |
case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: |
RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Killed")); |
@@ -458,14 +463,13 @@ bool BrowserPluginGuest::OnMessageReceived(const IPC::Message& message) { |
} |
void BrowserPluginGuest::Attach( |
+ int browser_plugin_instance_id, |
WebContentsImpl* embedder_web_contents, |
- const BrowserPluginHostMsg_Attach_Params& params, |
- const base::DictionaryValue& extra_params) { |
+ const BrowserPluginHostMsg_Attach_Params& params) { |
if (attached()) |
return; |
- if (delegate_) |
- delegate_->WillAttach(embedder_web_contents, extra_params); |
+ delegate_->WillAttach(embedder_web_contents); |
// If a RenderView has already been created for this new window, then we need |
// to initialize the browser-side state now so that the RenderFrameHostManager |
@@ -478,18 +482,17 @@ void BrowserPluginGuest::Attach( |
new_view->CreateViewForWidget(web_contents()->GetRenderViewHost()); |
} |
- Initialize(params, embedder_web_contents, extra_params); |
+ Initialize(browser_plugin_instance_id, params, embedder_web_contents); |
SendQueuedMessages(); |
- if (delegate_) |
- delegate_->DidAttach(); |
+ delegate_->DidAttach(); |
RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached")); |
} |
void BrowserPluginGuest::OnCompositorFrameSwappedACK( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const FrameHostMsg_CompositorFrameSwappedACK_Params& params) { |
RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id, |
params.output_surface_id, |
@@ -497,7 +500,7 @@ void BrowserPluginGuest::OnCompositorFrameSwappedACK( |
params.ack); |
} |
-void BrowserPluginGuest::OnDragStatusUpdate(int instance_id, |
+void BrowserPluginGuest::OnDragStatusUpdate(int browser_plugin_instance_id, |
blink::WebDragStatus drag_status, |
const DropData& drop_data, |
blink::WebDragOperationsMask mask, |
@@ -525,13 +528,13 @@ void BrowserPluginGuest::OnDragStatusUpdate(int instance_id, |
} |
} |
-void BrowserPluginGuest::OnExecuteEditCommand(int instance_id, |
+void BrowserPluginGuest::OnExecuteEditCommand(int browser_plugin_instance_id, |
const std::string& name) { |
Send(new InputMsg_ExecuteEditCommand(routing_id(), name, std::string())); |
} |
void BrowserPluginGuest::OnImeSetComposition( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const std::string& text, |
const std::vector<blink::WebCompositionUnderline>& underlines, |
int selection_start, |
@@ -542,7 +545,7 @@ void BrowserPluginGuest::OnImeSetComposition( |
} |
void BrowserPluginGuest::OnImeConfirmComposition( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const std::string& text, |
bool keep_selection) { |
Send(new InputMsg_ImeConfirmComposition(routing_id(), |
@@ -552,7 +555,7 @@ void BrowserPluginGuest::OnImeConfirmComposition( |
} |
void BrowserPluginGuest::OnExtendSelectionAndDelete( |
- int instance_id, |
+ int browser_plugin_instance_id, |
int before, |
int after) { |
RenderFrameHostImpl* rfh = static_cast<RenderFrameHostImpl*>( |
@@ -562,7 +565,7 @@ void BrowserPluginGuest::OnExtendSelectionAndDelete( |
} |
void BrowserPluginGuest::OnReclaimCompositorResources( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const FrameHostMsg_ReclaimCompositorResources_Params& params) { |
RenderWidgetHostImpl::SendReclaimCompositorResources(params.route_id, |
params.output_surface_id, |
@@ -571,7 +574,7 @@ void BrowserPluginGuest::OnReclaimCompositorResources( |
} |
void BrowserPluginGuest::OnHandleInputEvent( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const gfx::Rect& guest_window_rect, |
const blink::WebInputEvent* event) { |
guest_window_rect_ = guest_window_rect; |
@@ -644,19 +647,20 @@ void BrowserPluginGuest::OnLockMouse(bool user_gesture, |
weak_ptr_factory_.GetWeakPtr())); |
} |
-void BrowserPluginGuest::OnLockMouseAck(int instance_id, bool succeeded) { |
+void BrowserPluginGuest::OnLockMouseAck(int browser_plugin_instance_id, |
+ bool succeeded) { |
Send(new ViewMsg_LockMouse_ACK(routing_id(), succeeded)); |
pending_lock_request_ = false; |
if (succeeded) |
mouse_locked_ = true; |
} |
-void BrowserPluginGuest::OnPluginDestroyed(int instance_id) { |
+void BrowserPluginGuest::OnPluginDestroyed(int browser_plugin_instance_id) { |
Destroy(); |
} |
void BrowserPluginGuest::OnResizeGuest( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const BrowserPluginHostMsg_ResizeGuest_Params& params) { |
if (!params.size_changed) |
return; |
@@ -688,7 +692,8 @@ void BrowserPluginGuest::OnResizeGuest( |
Send(new ViewMsg_Repaint(routing_id(), params.view_size)); |
} |
-void BrowserPluginGuest::OnSetFocus(int instance_id, bool focused) { |
+void BrowserPluginGuest::OnSetFocus(int browser_plugin_instance_id, |
+ bool focused) { |
focused_ = focused; |
Send(new InputMsg_SetFocus(routing_id(), focused)); |
if (!focused && mouse_locked_) |
@@ -707,18 +712,20 @@ void BrowserPluginGuest::OnSetFocus(int instance_id, bool focused) { |
} |
void BrowserPluginGuest::OnSetEditCommandsForNextKeyEvent( |
- int instance_id, |
+ int browser_plugin_instance_id, |
const std::vector<EditCommand>& edit_commands) { |
Send(new InputMsg_SetEditCommandsForNextKeyEvent(routing_id(), |
edit_commands)); |
} |
-void BrowserPluginGuest::OnSetContentsOpaque(int instance_id, bool opaque) { |
+void BrowserPluginGuest::OnSetContentsOpaque(int browser_plugin_instance_id, |
+ bool opaque) { |
guest_opaque_ = opaque; |
Send(new ViewMsg_SetBackgroundOpaque(routing_id(), guest_opaque_)); |
} |
-void BrowserPluginGuest::OnSetVisibility(int instance_id, bool visible) { |
+void BrowserPluginGuest::OnSetVisibility(int browser_plugin_instance_id, |
+ bool visible) { |
guest_visible_ = visible; |
if (embedder_visible_ && guest_visible_) |
GetWebContents()->WasShown(); |
@@ -728,10 +735,10 @@ void BrowserPluginGuest::OnSetVisibility(int instance_id, bool visible) { |
void BrowserPluginGuest::OnUnlockMouse() { |
SendMessageToEmbedder( |
- new BrowserPluginMsg_SetMouseLock(instance_id(), false)); |
+ new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), false)); |
} |
-void BrowserPluginGuest::OnUnlockMouseAck(int instance_id) { |
+void BrowserPluginGuest::OnUnlockMouseAck(int browser_plugin_instance_id) { |
// mouse_locked_ could be false here if the lock attempt was cancelled due |
// to window focus, or for various other reasons before the guest was informed |
// of the lock's success. |
@@ -741,7 +748,7 @@ void BrowserPluginGuest::OnUnlockMouseAck(int instance_id) { |
} |
void BrowserPluginGuest::OnCopyFromCompositingSurfaceAck( |
- int instance_id, |
+ int browser_plugin_instance_id, |
int request_id, |
const SkBitmap& bitmap) { |
CHECK(copy_request_callbacks_.count(request_id)); |
@@ -752,7 +759,7 @@ void BrowserPluginGuest::OnCopyFromCompositingSurfaceAck( |
copy_request_callbacks_.erase(request_id); |
} |
-void BrowserPluginGuest::OnUpdateGeometry(int instance_id, |
+void BrowserPluginGuest::OnUpdateGeometry(int browser_plugin_instance_id, |
const gfx::Rect& view_rect) { |
// The plugin has moved within the embedder without resizing or the |
// embedder/container's view rect changing. |
@@ -765,11 +772,13 @@ void BrowserPluginGuest::OnUpdateGeometry(int instance_id, |
void BrowserPluginGuest::OnHasTouchEventHandlers(bool accept) { |
SendMessageToEmbedder( |
- new BrowserPluginMsg_ShouldAcceptTouchEvents(instance_id(), accept)); |
+ new BrowserPluginMsg_ShouldAcceptTouchEvents( |
+ browser_plugin_instance_id(), accept)); |
} |
void BrowserPluginGuest::OnSetCursor(const WebCursor& cursor) { |
- SendMessageToEmbedder(new BrowserPluginMsg_SetCursor(instance_id(), cursor)); |
+ SendMessageToEmbedder( |
+ new BrowserPluginMsg_SetCursor(browser_plugin_instance_id(), cursor)); |
} |
#if defined(OS_MACOSX) |
@@ -797,7 +806,7 @@ void BrowserPluginGuest::OnShowWidget(int route_id, |
void BrowserPluginGuest::OnTakeFocus(bool reverse) { |
SendMessageToEmbedder( |
- new BrowserPluginMsg_AdvanceFocus(instance_id(), reverse)); |
+ new BrowserPluginMsg_AdvanceFocus(browser_plugin_instance_id(), reverse)); |
} |
void BrowserPluginGuest::OnUpdateRect( |
@@ -814,7 +823,8 @@ void BrowserPluginGuest::OnUpdateRect( |
} |
SendMessageToEmbedder( |
- new BrowserPluginMsg_UpdateRect(instance_id(), relay_params)); |
+ new BrowserPluginMsg_UpdateRect(browser_plugin_instance_id(), |
+ relay_params)); |
} |
void BrowserPluginGuest::OnTextInputStateChanged( |