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