Bug 1366993 - With "Don't keep activities" on, search activity's 'New tab' doesn't work draft
authorfriedger <friedger@gmail.com>
Thu, 08 Jun 2017 15:12:10 +0200
changeset 590999 593a8fac367a2bb2b36110e2c27472d08bc9ab2e
parent 590795 7efda263a842e60cd0cc00b3c4a7058c65590702
child 632385 e9b8a2df02eb7fce5edaf556324df58a869e5566
push id62914
push userbmo:mail@friedger.de
push dateThu, 08 Jun 2017 13:13:20 +0000
bugs1366993
milestone55.0a1
Bug 1366993 - With "Don't keep activities" on, search activity's 'New tab' doesn't work add handling of about:home in intent.data explicitly. MozReview-Commit-ID: D46VVQaR0Z1
mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
@@ -1770,17 +1770,18 @@ public abstract class GeckoApp extends G
 
         mWasFirstTabShownAfterActivityUnhidden = true; // Reset since we'll be loading a tab.
 
         final SafeIntent intent = new SafeIntent(getIntent());
         final String action = intent.getAction();
 
         final String passedUri = getIntentURI(intent);
 
-        final boolean isExternalURL = invokedWithExternalURL(passedUri);
+        final boolean isExternalURL = passedUri != null;
+        final boolean isAboutHomeURL = isExternalURL && AboutPages.isAboutHome(passedUri);
 
         // Start migrating as early as possible, can do this in
         // parallel with Gecko load.
         checkMigrateProfile();
 
         initializeChrome();
 
         // We need to wait here because mShouldRestore can revert back to
@@ -1794,27 +1795,32 @@ public abstract class GeckoApp extends G
                     // Ignore and wait again.
                 }
             }
         }
 
         if (mIsRestoringActivity && hasGeckoTab(intent)) {
             Tabs.getInstance().notifyListeners(null, Tabs.TabEvents.RESTORED);
             handleSelectTabIntent(intent);
-        // External URLs should always be loaded regardless of whether Gecko is
+        // External URLs and new tab from widget should always be loaded regardless of whether Gecko is
         // already running.
         } else if (isExternalURL) {
             // Restore tabs before opening an external URL so that the new tab
             // is animated properly.
             Tabs.getInstance().notifyListeners(null, Tabs.TabEvents.RESTORED);
             processActionViewIntent(new Runnable() {
                 @Override
                 public void run() {
-                    final int flags = getNewTabFlags();
-                    loadStartupTab(passedUri, intent, flags);
+                    if (isAboutHomeURL) {
+                        // respect the user preferences for about:home from external intent calls
+                        loadStartupTab(Tabs.LOADURL_NEW_TAB, action);
+                    } else {
+                        final int flags = getNewTabFlags();
+                        loadStartupTab(passedUri, intent, flags);
+                    }
                 }
             });
         } else {
             if (!mIsRestoringActivity) {
                 loadStartupTab(Tabs.LOADURL_NEW_TAB, action);
             }
 
             Tabs.getInstance().notifyListeners(null, Tabs.TabEvents.RESTORED);