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 e6baddc7d35f1ff5d1b0efcf65ba65ddca6405d2..cdc1381ae2d8b97c0b4900fae02cb38a03ad9278 100644 |
--- a/content/browser/browser_plugin/browser_plugin_guest.cc |
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc |
@@ -147,6 +147,8 @@ int BrowserPluginGuest::GetGuestProxyRoutingID() { |
// create a RenderFrameProxyHost for the reverse path, or implement |
// MimeHandlerViewGuest using OOPIF (https://crbug.com/659750). |
SiteInstance* owner_site_instance = delegate_->GetOwnerSiteInstance(); |
+ if (!owner_site_instance) |
+ return MSG_ROUTING_NONE; |
int proxy_routing_id = GetWebContents() |
->GetFrameTree() |
->root() |
@@ -178,8 +180,12 @@ void BrowserPluginGuest::SizeContents(const gfx::Size& new_size) { |
void BrowserPluginGuest::WillDestroy() { |
is_in_destruction_ = true; |
- owner_web_contents_ = nullptr; |
+ |
+ // It is important that the WebContents is notified before detaching. |
+ GetWebContents()->BrowserPluginGuestWillDetach(); |
+ |
attached_ = false; |
+ owner_web_contents_ = nullptr; |
} |
RenderWidgetHostImpl* BrowserPluginGuest::GetOwnerRenderWidgetHost() const { |
@@ -430,17 +436,6 @@ void BrowserPluginGuest::OnRequireSequence( |
GetSurfaceManager()->RequireSequence(id, sequence); |
} |
-bool BrowserPluginGuest::HandleFindForEmbedder( |
- int request_id, |
- const base::string16& search_text, |
- const blink::WebFindOptions& options) { |
- return delegate_->HandleFindForEmbedder(request_id, search_text, options); |
-} |
- |
-bool BrowserPluginGuest::HandleStopFindingForEmbedder(StopFindAction action) { |
- return delegate_->HandleStopFindingForEmbedder(action); |
-} |
- |
void BrowserPluginGuest::ResendEventToEmbedder( |
const blink::WebInputEvent& event) { |
if (!attached() || !owner_web_contents_) |
@@ -823,6 +818,9 @@ void BrowserPluginGuest::OnDetach(int browser_plugin_instance_id) { |
if (!attached()) |
return; |
+ // It is important that the WebContents is notified before detaching. |
+ GetWebContents()->BrowserPluginGuestWillDetach(); |
+ |
// This tells BrowserPluginGuest to queue up all IPCs to BrowserPlugin until |
// it's attached again. |
attached_ = false; |