Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(751)

Unified Diff: chrome/browser/android/service_tab_launcher.h

Issue 904453002: Feed back to the ServiceTabLauncher when the tab has been created. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@a-open-window
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698