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

Unified Diff: content/browser/browser_plugin/browser_plugin_guest.cc

Issue 444813002: Remove BrowserPlugin's -internal-attach method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't crash on tear down Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
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(
« no previous file with comments | « content/browser/browser_plugin/browser_plugin_guest.h ('k') | content/browser/browser_plugin/browser_plugin_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698