Index: chrome/browser/android/service_tab_launcher.h |
diff --git a/chrome/browser/android/service_tab_launcher.h b/chrome/browser/android/service_tab_launcher.h |
index b2fe5cd17c20bd2c178411c5a21555682335b1ec..5d1fbfec7732c80bfa4b1a7d7f879efd693e8161 100644 |
--- a/chrome/browser/android/service_tab_launcher.h |
+++ b/chrome/browser/android/service_tab_launcher.h |
@@ -5,6 +5,8 @@ |
#ifndef CHROME_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_ |
#define CHROME_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_ |
+#include <map> |
+ |
#include "base/android/jni_android.h" |
#include "base/callback_forward.h" |
#include "base/memory/singleton.h" |
@@ -19,8 +21,12 @@ namespace chrome { |
namespace android { |
// Launcher for creating new tabs on Android from a background service, where |
-// there may not necessarily be an Activity or a tab model at all. |
+// there may not necessarily be an Activity or a tab model at all. When the |
+// tab has been launched, the user of this class will be informed with the |
+// content::WebContents instance associated with the tab. |
class ServiceTabLauncher { |
+ using TabLaunchedCallback = base::Callback<void(content::WebContents*)>; |
+ |
public: |
// Returns the singleton instance of the service tab launcher. |
static ServiceTabLauncher* GetInstance(); |
@@ -30,7 +36,12 @@ class ServiceTabLauncher { |
// the tab is avialable. This method must only be called from the UI thread. |
void LaunchTab(content::BrowserContext* browser_context, |
const content::OpenURLParams& params, |
- base::Callback<void(content::WebContents*)> callback); |
+ TabLaunchedCallback callback); |
+ |
+ // To be called when the tab for |request_id| has launched, with the |
+ // associated |web_contents|. The WebContents must not yet have started |
+ // the provisional load for the main frame of the navigation. |
+ void OnTabLaunched(int request_id, content::WebContents* web_contents); |
static bool RegisterServiceTabLauncher(JNIEnv* env); |
@@ -42,6 +53,9 @@ class ServiceTabLauncher { |
base::android::ScopedJavaGlobalRef<jobject> java_object_; |
+ std::map<int, TabLaunchedCallback> tab_launched_callbacks_; |
+ int last_request_id_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ServiceTabLauncher); |
}; |