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 de8463a3fe749a9cafbc6b2c690ab08c41108a35..ad2e1f3beca21f9d28cfb03c99bf91b1361668ef 100644 |
--- a/content/browser/browser_plugin/browser_plugin_guest.cc |
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc |
@@ -98,8 +98,20 @@ class BrowserPluginGuest::NewWindowRequest : public PermissionRequest { |
const std::string& user_input) OVERRIDE { |
int embedder_render_process_id = |
guest_->embedder_web_contents()->GetRenderProcessHost()->GetID(); |
- BrowserPluginGuest* guest = guest_->GetBrowserPluginGuestManager()-> |
- GetGuestByInstanceID(instance_id_, embedder_render_process_id); |
+ guest_->GetBrowserPluginGuestManager()-> |
+ MaybeGetGuestByInstanceIDOrKill( |
+ instance_id_, |
+ embedder_render_process_id, |
+ base::Bind(&BrowserPluginGuest::NewWindowRequest::RespondInternal, |
+ base::Unretained(this), |
+ should_allow)); |
+ } |
+ |
+ private: |
+ virtual ~NewWindowRequest() {} |
+ |
+ void RespondInternal(bool should_allow, |
+ BrowserPluginGuest* guest) { |
if (!guest) { |
VLOG(0) << "Guest not found. Instance ID: " << instance_id_; |
return; |
@@ -110,8 +122,6 @@ class BrowserPluginGuest::NewWindowRequest : public PermissionRequest { |
guest->Destroy(); |
} |
- private: |
- virtual ~NewWindowRequest() {} |
int instance_id_; |
}; |