Index: content/browser/service_worker/service_worker_version.cc |
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc |
index 4da0c87085a4d50d6b5e0d8603ae7c82fa457652..352c33d7e7072c77468e88eb0f5054f286bcf823 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -219,6 +219,13 @@ class WindowOpenedObserver : public WebContentsObserver { |
DISALLOW_COPY_AND_ASSIGN(WindowOpenedObserver); |
}; |
+void DidOpenURL(const WindowOpenedCallback& callback, |
+ WebContents* web_contents) { |
+ DCHECK(web_contents); |
+ |
+ new WindowOpenedObserver(web_contents, callback); |
+} |
+ |
void OpenWindowOnUI( |
const GURL& url, |
const GURL& script_url, |
@@ -250,11 +257,9 @@ void OpenWindowOnUI( |
NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
true /* is_renderer_initiated */); |
- WebContents* web_contents = |
- GetContentClient()->browser()->OpenURL(browser_context, params); |
- DCHECK(web_contents); |
- |
- new WindowOpenedObserver(web_contents, callback); |
+ GetContentClient()->browser()->OpenURL( |
+ browser_context, params, |
+ base::Bind(&DidOpenURL, callback)); |
} |
void KillEmbeddedWorkerProcess(int process_id, ResultCode code) { |