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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.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/OfflinePageUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
index defccbaba0c589b82898792f57de786b44f1e83c..ce62888720fc6e65a2f6b22b702d2f4fc512ea87 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
@@ -12,8 +12,10 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.snackbar.Snackbar;
+import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.components.offlinepages.FeatureMode;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.net.NetworkChangeNotifier;
@@ -126,7 +128,7 @@ public class OfflinePageUtils {
* Whenever we reload an offline page, if we are online, load the online version of the page
* instead, on the theory that the user prefers the online version of the page.
*/
- public static void preferOnlineVersion(ChromeActivity activity, Tab tab, String newUrl) {
+ public static void preferOnlineVersion(Tab tab, String newUrl) {
// If we are reloading an offline page, but are online, get the online version.
if (newUrl.equals(tab.getUrl()) && isConnected()) {
Log.i(TAG, "Refreshing to the online version of an offline page, since we are online");
@@ -160,18 +162,22 @@ public class OfflinePageUtils {
* @param tab The current tab.
*/
public static void showOfflineSnackbarIfNecessary(ChromeActivity activity, Tab tab) {
- showOfflineSnackbarIfNecessary(activity, tab, null);
+ SnackbarController snackbarController =
+ createSnackbarController(activity.getTabModelSelector(), tab.getId());
+ showOfflineSnackbarIfNecessary(
+ activity.getBaseContext(), activity.getSnackbarManager(), tab, snackbarController);
}
/**
* Shows the snackbar for the current tab to provide offline specific information if needed.
* This method is used by testing for dependency injecting a snackbar controller.
- * @param activity The activity owning the tab.
+ * @param context android context
+ * @param snackbarManager The snackbar manager to show and dismiss snackbars.
* @param tab The current tab.
- * @param snackbarController Class to show the snackbar.
+ * @param snackbarController The snackbar controller to control snackbar behavior.
*/
- public static void showOfflineSnackbarIfNecessary(
- ChromeActivity activity, Tab tab, SnackbarController snackbarController) {
+ static void showOfflineSnackbarIfNecessary(Context context, SnackbarManager snackbarManager,
+ Tab tab, SnackbarController snackbarController) {
Log.d(TAG, "showOfflineSnackbarIfNecessary, controller is " + snackbarController);
if (tab == null || tab.isFrozen()) return;
@@ -180,11 +186,6 @@ public class OfflinePageUtils {
// We only show a snackbar if we are seeing an offline page.
if (!tab.isOfflinePage()) return;
- // Get a snackbar controller if we need one.
- if (snackbarController == null) {
- snackbarController = getSnackbarController(activity, tab);
- }
-
final boolean connected = isConnected();
Log.d(TAG, "showOfflineSnackbarIfNecessary called, tabId " + tab.getId() + ", hidden "
@@ -195,12 +196,13 @@ public class OfflinePageUtils {
// page, offer to reload it now.
if (!tab.isHidden() && connected) {
Log.d(TAG, "Offering to reload page, controller " + snackbarController);
- showReloadSnackbar(activity, snackbarController);
+ showReloadSnackbar(context, snackbarManager, snackbarController);
return;
}
// Set up the tab observer to watch for the tab being unhidden or connectivity.
- OfflinePageTabObserver.addObserverForTab(activity, tab, connected, snackbarController);
+ OfflinePageTabObserver.addObserverForTab(
+ context, snackbarManager, tab, connected, snackbarController);
return;
}
@@ -209,25 +211,24 @@ public class OfflinePageUtils {
* @param activity The activity owning the tab.
* @param snackbarController Class to show the snackbar.
*/
- public static void showReloadSnackbar(final ChromeActivity activity,
+ public static void showReloadSnackbar(Context context, SnackbarManager snackbarManager,
final SnackbarController snackbarController) {
Log.d(TAG, "showReloadSnackbar called with controller " + snackbarController);
- Context context = activity.getBaseContext();
final int snackbarTextId = getStringId(R.string.offline_pages_viewing_offline_page);
Snackbar snackbar = Snackbar.make(context.getString(snackbarTextId), snackbarController,
Snackbar.TYPE_ACTION)
.setAction(context.getString(R.string.reload), RELOAD_BUTTON);
- Log.d(TAG, "made snackbar with controller " + snackbarController);
snackbar.setDuration(SNACKBAR_DURATION);
- activity.getSnackbarManager().showSnackbar(snackbar);
+ snackbarManager.showSnackbar(snackbar);
}
/**
* Gets a snackbar controller that we can use to show our snackbar.
+ * @param tabModelSelector used to retrieve a tab by ID
+ * @param tabId an ID of a tab that shows the snackbar
*/
- private static SnackbarController getSnackbarController(
- final ChromeActivity activity, final Tab tab) {
- final int tabId = tab.getId();
+ private static SnackbarController createSnackbarController(
+ final TabModelSelector tabModelSelector, final int tabId) {
Log.d(TAG, "building snackbar controller");
return new SnackbarController() {
@@ -235,7 +236,7 @@ public class OfflinePageUtils {
public void onAction(Object actionData) {
assert RELOAD_BUTTON == (int) actionData;
RecordUserAction.record("OfflinePages.ReloadButtonClicked");
- Tab foundTab = activity.getTabModelSelector().getTabById(tabId);
+ Tab foundTab = tabModelSelector.getTabById(tabId);
if (foundTab == null) return;
LoadUrlParams params = new LoadUrlParams(

Powered by Google App Engine
This is Rietveld 408576698