| 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;
 | 
| 
 |