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

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

Issue 2529433002: [Offline pages] Addressing several reload snackbar issues (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d6fb4f81fca480119539a80e42e7469bdc3206b2..84c78e51fc1e9bb12bebf8abd99cf34ce785cef6 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
@@ -63,7 +63,11 @@ public class OfflinePageTabObserver
private static OfflinePageTabObserver sInstance;
static void init(Context context, SnackbarManager manager, SnackbarController controller) {
- sInstance = new OfflinePageTabObserver(context, manager, controller);
+ if (sInstance == null) {
+ sInstance = new OfflinePageTabObserver(context, manager, controller);
+ return;
+ }
+ sInstance.reinitialize(context, manager, controller);
}
static OfflinePageTabObserver getInstance() {
@@ -93,9 +97,7 @@ public class OfflinePageTabObserver
*/
OfflinePageTabObserver(Context context, SnackbarManager snackbarManager,
SnackbarController snackbarController) {
- mContext = context;
- mSnackbarManager = snackbarManager;
- mSnackbarController = snackbarController;
+ reinitialize(context, snackbarManager, snackbarController);
// The first time observer is created snackbar has net yet been shown.
mIsObservingNetworkChanges = false;
@@ -191,6 +193,16 @@ public class OfflinePageTabObserver
Log.d(TAG, "Got connectivity event, connectionType: " + connectionType + ", is connected: "
+ isConnected() + ", controller: " + mSnackbarController);
maybeShowReloadSnackbar(mCurrentTab, true);
+
+ // Since we are loosing the connection, next time we connect, we still want to show a
+ // snackbar. This works in event that onConnectionTypeChanged happens, while Chrome is not
+ // visible. Making it visible after that would not trigger the snackbar, even though
+ // connection state changed. See http://crbug.com/651410
+ if (!isConnected()) {
+ for (TabState tabState : mObservedTabs.values()) {
+ tabState.wasSnackbarSeen = false;
+ }
+ }
}
@VisibleForTesting
@@ -251,4 +263,16 @@ public class OfflinePageTabObserver
void stopObservingNetworkChanges() {
NetworkChangeNotifier.removeConnectionTypeObserver(this);
}
+
+ boolean isCurrentContext(Context context) {
+ return mContext == context;
+ }
+
+ void reinitialize(Context context, SnackbarManager manager, SnackbarController controller) {
+ // TODO(fgorski): Work out if we need to also update network changes observer with the
+ // context change.
+ mContext = context;
+ mSnackbarManager = manager;
+ mSnackbarController = controller;
+ }
}
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698