| 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);
|
| }
|
|
|
|
|