Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/ActivityDelegate.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/ActivityDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/ActivityDelegate.java |
index 6e335747cf499238449c29497abb19af9f6028e1..b6d91af77f9f66e7444e9f26206dc38c924e560a 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/ActivityDelegate.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/ActivityDelegate.java |
@@ -16,6 +16,7 @@ import android.os.Build; |
import android.text.TextUtils; |
import org.chromium.base.ApplicationStatus; |
+import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.Tab; |
import org.chromium.chrome.browser.UrlConstants; |
import org.chromium.chrome.browser.document.DocumentActivity; |
@@ -204,4 +205,19 @@ public class ActivityDelegate { |
} |
return false; |
} |
-} |
+ |
+ /** @return Running Activity that owns the given Tab, null if the Activity couldn't be found. */ |
+ public static Activity getActivityForTabId(int id) { |
+ if (id == Tab.INVALID_TAB_ID) return null; |
+ |
+ for (WeakReference<Activity> ref : ApplicationStatus.getRunningActivities()) { |
+ if (!(ref.get() instanceof ChromeActivity)) continue; |
+ |
+ ChromeActivity activity = (ChromeActivity) ref.get(); |
+ if (activity == null) continue; |
+ |
+ if (activity.getTabModelSelector().getTabById(id) != null) return activity; |
+ } |
+ return null; |
+ } |
+} |