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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/snackbar/LoFiBarPopupController.java

Issue 1558553002: Lo-Fi snackbar should only be shown for the first q=low response of a page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test fix Created 4 years, 11 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/snackbar/LoFiBarPopupController.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/snackbar/LoFiBarPopupController.java b/chrome/android/java/src/org/chromium/chrome/browser/snackbar/LoFiBarPopupController.java
index 3afad9752451f1d638b0cd0fe255eaccff8845e7..7b2c0035877ab2ac398231b49693eea2f3042672 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/snackbar/LoFiBarPopupController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/snackbar/LoFiBarPopupController.java
@@ -11,7 +11,9 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma;
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tab.TabObserver;
/**
* Each time a tab loads with Lo-Fi this controller saves that tab id and title to the stack of
@@ -26,6 +28,7 @@ public class LoFiBarPopupController implements SnackbarManager.SnackbarControlle
private final Context mContext;
private final boolean mDisabled;
private Tab mTab;
+ private boolean mLoFiPopupShownForPageLoad = false;
/**
* Creates an instance of a {@link LoFiBarPopupController}.
@@ -39,9 +42,50 @@ public class LoFiBarPopupController implements SnackbarManager.SnackbarControlle
}
/**
+ * Called on new page loads to indicate that a Lo-Fi snackbar has not been shown yet.
+ */
+ public void resetLoFiPopupShownForPageLoad() {
+ mLoFiPopupShownForPageLoad = false;
+ }
+
+ /**
+ * If a Lo-Fi snackbar has not been shown for the current page load, creates a Lo-Fi snackbar
+ * for the given tab and shows it. If the tab is hidden, waits until it is visible to show the
+ * snackbar.
+ *
+ * @param tab The tab to show the snackbar on.
+ */
+ public void maybeCreateLoFiBar(Tab tab) {
+ if (mLoFiPopupShownForPageLoad) return;
+ mLoFiPopupShownForPageLoad = true;
+ if (tab.isHidden()) {
+ TabObserver tabObserver = new EmptyTabObserver() {
+ @Override
+ public void onShown(Tab tab) {
+ showLoFiBar(tab);
+ tab.removeObserver(this);
+ }
+
+ @Override
+ public void onHidden(Tab tab) {
+ dismissLoFiBar();
+ }
+
+ @Override
+ public void onDestroyed(Tab tab) {
+ dismissLoFiBar();
+ }
+ };
+ tab.addObserver(tabObserver);
+ return;
+ }
+ showLoFiBar(tab);
+ }
+
+ /**
* @param tab The tab. Saved to reload the page.
*/
- public void showLoFiBar(Tab tab) {
+ private void showLoFiBar(Tab tab) {
if (mDisabled) return;
mTab = tab;
mSnackbarManager.showSnackbar(Snackbar.make(
@@ -57,7 +101,7 @@ public class LoFiBarPopupController implements SnackbarManager.SnackbarControlle
/**
* Dismisses the snackbar.
*/
- public void dismissLoFiBar() {
+ private void dismissLoFiBar() {
if (mSnackbarManager.isShowing()) mSnackbarManager.dismissSnackbars(this);
}

Powered by Google App Engine
This is Rietveld 408576698