Bug 1393188 - Go back in history when back button pressed if able in PWA r=droeh draft
authorJames Willcox <snorp@snorp.net>
Wed, 23 Aug 2017 14:42:27 -0500
changeset 651468 e737b60f9f4d414ab2ac7e40af15e3bf7d934009
parent 651467 de210cbdc7bbccb2f87faa2b6f4f930113734fb8
child 727731 14f293b9a8bc2fa85268fac0fcdc22b223c72a84
push id75748
push userbmo:snorp@snorp.net
push dateWed, 23 Aug 2017 19:44:53 +0000
reviewersdroeh
bugs1393188
milestone57.0a1
Bug 1393188 - Go back in history when back button pressed if able in PWA r=droeh MozReview-Commit-ID: 3iyOTEIKe46
mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
--- a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
@@ -55,16 +55,17 @@ public class WebAppActivity extends AppC
     private static final String SAVED_INTENT = "savedIntent";
 
     private GeckoView mGeckoView;
     private PromptService mPromptService;
     private DoorHangerPopup mDoorHangerPopup;
 
     private boolean mIsFullScreenMode;
     private boolean mIsFullScreenContent;
+    private boolean mCanGoBack;
     private Uri mScope;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0 &&
             savedInstanceState != null) {
             // Even though we're a single task activity, Android's task switcher has the
             // annoying habit of never updating its stored intent after our initial creation,
@@ -140,16 +141,18 @@ public class WebAppActivity extends AppC
             updateFullScreen();
         }
     }
 
     @Override
     public void onBackPressed() {
         if (mIsFullScreenContent) {
             mGeckoView.exitFullScreen();
+        } else if (mCanGoBack) {
+            mGeckoView.goBack();
         } else {
             super.onBackPressed();
         }
     }
 
     private void loadManifest(String manifestPath) {
         if (TextUtils.isEmpty(manifestPath)) {
             Log.e(LOGTAG, "Missing manifest");
@@ -314,16 +317,17 @@ public class WebAppActivity extends AppC
 
     /* GeckoView.NavigationListener */
     @Override
     public void onLocationChange(GeckoView view, String url) {
     }
 
     @Override
     public void onCanGoBack(GeckoView view, boolean canGoBack) {
+        mCanGoBack = canGoBack;
     }
 
     @Override
     public void onCanGoForward(GeckoView view, boolean canGoForward) {
     }
 
     @Override
     public boolean onLoadUri(final GeckoView view, final String uri,