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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java

Issue 1812103004: [Offline pages] Minimizing exposure to ChromeActivity in offline pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing bookmark id from offline page tab observer Created 4 years, 9 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/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java
index 929109c91af23ea966816eb47eec433f86d96037..16c95854140136747d91bb5a29c339554ede0351 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageTabObserver.java
@@ -4,8 +4,10 @@
package org.chromium.chrome.browser.offlinepages;
+import android.content.Context;
+
import org.chromium.base.Log;
-import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
@@ -21,8 +23,8 @@ import java.util.WeakHashMap;
*/
public class OfflinePageTabObserver extends EmptyTabObserver {
private static final String TAG = "OfflinePageTO";
- private ChromeActivity mActivity;
- private long mBookmarkId;
+ private Context mContext;
+ private SnackbarManager mSnackbarManager;
private boolean mConnected;
private SnackbarController mSnackbarController;
private boolean mWasHidden;
@@ -33,19 +35,22 @@ public class OfflinePageTabObserver extends EmptyTabObserver {
/**
* Create and attach a tab observer if we don't already have one, otherwise update it.
- * @param activity The ChromeActivity we are associated with.
+ * @param context Android context.
+ * @param snackbarManager The snackbar manager to show and dismiss snackbars.
* @param tab The tab we are adding an observer for.
- * @param conneted True if we were connected when this call was made.
+ * @param connected True if we were connected when this call was made.
+ * @param snackbarController The snackbar controller to control snackbar behavior.
*/
- public static void addObserverForTab(ChromeActivity activity, Tab tab, boolean connected,
- SnackbarController snackbarController) {
+ public static void addObserverForTab(Context context, SnackbarManager snackbarManager, Tab tab,
+ boolean connected, SnackbarController snackbarController) {
// See if we already have an observer for this tab.
int tabId = tab.getId();
OfflinePageTabObserver observer = sTabObservers.get(tabId);
if (observer == null) {
// If we don't have an observer, build one and attach it to the tab.
- observer = new OfflinePageTabObserver(activity, tab, connected, snackbarController);
+ observer = new OfflinePageTabObserver(
+ context, snackbarManager, tab, connected, snackbarController);
sTabObservers.put(tabId, observer);
tab.addObserver(observer);
} else {
@@ -63,62 +68,36 @@ public class OfflinePageTabObserver extends EmptyTabObserver {
}
/**
- * Removes tab observer for a given bookmark.
- * @param bookmarkId The bookmarkId we are removing an observer for.
- */
- public static void removeObserverForBookmark(long bookmarkId) {
- // Find any observer, if we have one.
- int tabId = findTabIdByObserverBookmarkId(bookmarkId);
- Log.d(TAG, "removeObserver called, tabId " + tabId + ", bookmarkId " + bookmarkId);
- if (tabId == Tab.INVALID_TAB_ID) return;
-
- removeObserverForTab(tabId);
- }
-
- /**
* Removes the observer for a tab with the specified tabId.
- * @param tabId The Id of the tab to remove an observer for.
+ * @param tab The tab to remove an observer for.
*/
- private static void removeObserverForTab(int tabId) {
- OfflinePageTabObserver observer = sTabObservers.get(tabId);
- sTabObservers.remove(tabId);
+ private static void removeObserverForTab(Tab tab) {
+ OfflinePageTabObserver observer = sTabObservers.get(tab.getId());
if (observer != null) {
- Tab tab = observer.mActivity.getTabModelSelector().getTabById(tabId);
tab.removeObserver(observer);
}
- }
- /**
- * Finds the tab ID of the observer with the specified bookmark ID, if it exists. Returns an
- * invalid tab ID if none found.
- * @param bookmarkId The bookmark ID on the observer on the searched for tab.
- * @return ID of the tab associated with this bookmark, or Tab.INVALID_TAB_ID if none found.
- */
- private static int findTabIdByObserverBookmarkId(long bookmarkId) {
- // Iterate over the whole map looking for a bookmark ID that matches.
- for (Map.Entry<Integer, OfflinePageTabObserver> entry : sTabObservers.entrySet()) {
- OfflinePageTabObserver value = (OfflinePageTabObserver) entry.getValue();
- if (value != null && value.mBookmarkId == bookmarkId) return entry.getKey();
- }
- return Tab.INVALID_TAB_ID;
+ sTabObservers.remove(tab.getId());
}
/**
* Builds a new OfflinePageTabObserver.
- * @param activity The ChromeActivity of this instance of the browser.
+ * @param context Android context.
+ * @param snackbarManager The snackbar manager to show and dismiss snackbars.
+ * @param tab The tab we are adding an observer for.
* @param connected True if the phone is connected when the observer is created.
- * @param bookmarkId Id of the bookmark (offline page) that is associated with this observer.
* @param snackbarController Controller to use to build the snackbar.
*/
- public OfflinePageTabObserver(ChromeActivity activity, Tab tab, boolean connected,
- SnackbarController snackbarController) {
- mActivity = activity;
- mBookmarkId = tab.getBookmarkId();
+ OfflinePageTabObserver(Context context, SnackbarManager snackbarManager, Tab tab,
+ boolean connected, SnackbarController snackbarController) {
+ mContext = context;
+ mSnackbarManager = snackbarManager;
mConnected = connected;
// Remember if the tab was hidden when we started, so we can show the snackbar when
// the tab becomes visible.
mWasHidden = tab.isHidden();
- mListener = new OfflinePageConnectivityListener(activity, tab, snackbarController);
+ mListener = new OfflinePageConnectivityListener(
+ context, snackbarManager, tab, snackbarController);
mSnackbarController = snackbarController;
}
@@ -139,7 +118,8 @@ public class OfflinePageTabObserver extends EmptyTabObserver {
if (mWasHidden) {
if (mConnected) {
- OfflinePageUtils.showReloadSnackbar(mActivity, mSnackbarController);
+ OfflinePageUtils.showReloadSnackbar(
+ mContext, mSnackbarManager, mSnackbarController);
}
mWasHidden = false;
@@ -151,12 +131,12 @@ public class OfflinePageTabObserver extends EmptyTabObserver {
public void onHidden(Tab hiddenTab) {
mWasHidden = true;
// In case any snackbars are showing, dismiss them before we switch tabs.
- mActivity.getSnackbarManager().dismissSnackbars(mSnackbarController);
+ mSnackbarManager.dismissSnackbars(mSnackbarController);
}
@Override
public void onPageLoadStarted(Tab tab, String newUrl) {
- OfflinePageUtils.preferOnlineVersion(mActivity, tab, newUrl);
+ OfflinePageUtils.preferOnlineVersion(tab, newUrl);
}
@Override
@@ -173,9 +153,9 @@ public class OfflinePageTabObserver extends EmptyTabObserver {
// Unregister this tab for OS connectivity notifications.
mListener.disable();
Log.d(TAG, "onUrlUpdated");
- removeObserverForTab(reloadingTab.getId());
+ removeObserverForTab(reloadingTab);
// In case any snackbars are showing, dismiss them before we navigate away.
- mActivity.getSnackbarManager().dismissSnackbars(mSnackbarController);
+ mSnackbarManager.dismissSnackbars(mSnackbarController);
}
/**

Powered by Google App Engine
This is Rietveld 408576698