From bd06fa760b9f286e0accba91b5b080ef9ef24fb3 Mon Sep 17 00:00:00 2001 From: Grigory Kruglov Date: Mon, 26 Sep 2016 13:53:52 -0700 Subject: [PATCH] Bug 1304914 - Don't show "offline version" notifications on error pages r=ahunt MozReview-Commit-ID: BE6GPLCAU3h --HG-- extra : rebase_source : 4fd79c95f202b6ed550968acdaf31dc9efae56e5 --- .../gecko/delegates/OfflineTabStatusDelegate.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/delegates/OfflineTabStatusDelegate.java b/mobile/android/base/java/org/mozilla/gecko/delegates/OfflineTabStatusDelegate.java index 3a2c671bd78d..5f3aa9c597b0 100644 --- a/mobile/android/base/java/org/mozilla/gecko/delegates/OfflineTabStatusDelegate.java +++ b/mobile/android/base/java/org/mozilla/gecko/delegates/OfflineTabStatusDelegate.java @@ -63,9 +63,19 @@ public class OfflineTabStatusDelegate extends TabsTrayVisibilityAwareDelegate im return; } + // We only want to show these notifications for tabs that were loaded successfully. + if (tab.getState() != Tab.STATE_SUCCESS) { + return; + } + switch (event) { - // Show offline notification if tab is visible, or queue it for display later. - case PAGE_SHOW: + // We listen specifically for the STOP event (as opposed to PAGE_SHOW), because we need + // to know if page load actually succeeded. When STOP is triggered, tab.getState() + // will return definitive STATE_SUCCESS or STATE_ERROR. When PAGE_SHOW is triggered, + // tab.getState() will return STATE_LOADING, which is ambiguous for our purposes. + // We don't want to show these notifications for 404 pages, for example. See Bug 1304914. + case STOP: + // Show offline notification if tab is visible, or queue it for display later. if (!isTabsTrayVisible() && Tabs.getInstance().isSelectedTab(tab)) { showLoadedOfflineSnackbar(activityReference.get()); } else {