Chromium Code Reviews| 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 3e9fb233170f7fb2a258a66ec6ea7bb2d9f9c06c..dce07a0610959b92088e02b9b41337cf1734b3ff 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, |
| - const base::Callback<void(content::WebContents*)>& callback); |
| + const 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_; |
|
mlamouri (slow - plz ping)
2015/02/19 14:51:17
Could you use an IDMap? It will prevent having to
Bernhard Bauer
2015/02/19 15:03:05
FTR: Copies of callbacks are cheap, as they just c
Peter Beverloo
2015/02/19 16:03:07
Done.
|
| + int last_request_id_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ServiceTabLauncher); |
| }; |