Bug 1356517 - Handle deep link to show bookmark list. r?sebastian
MozReview-Commit-ID: 7lbuVseKPoY
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -268,16 +268,18 @@ public class BrowserApp extends GeckoApp
// link to a SUMO page but on new Android versions we can link to the default app settings where
// the user can actually set a default browser (Bug 1312686).
final Intent changeDefaultApps = new Intent("android.settings.MANAGE_DEFAULT_APPS_SETTINGS");
getContext().startActivity(changeDefaultApps);
} else {
Tabs.getInstance().loadUrlInTab(getString(R.string.pref_default_browser_link));
}
+ } else if (action.getType() == DeepLinkAction.TYPE.BOOKMARK_LIST) {
+ Tabs.showBookmark();
}
}
private static class MenuItemInfo {
public int id;
public String label;
public boolean checkable;
@@ -863,16 +865,17 @@ public class BrowserApp extends GeckoApp
for (final BrowserAppDelegate delegate : delegates) {
delegate.onCreate(this, savedInstanceState);
}
// We want to get an understanding of how our user base is spread (bug 1221646).
final String installerPackageName = getPackageManager().getInstallerPackageName(getPackageName());
Telemetry.sendUIEvent(TelemetryContract.Event.LAUNCH, TelemetryContract.Method.SYSTEM, "installer_" + installerPackageName);
DeepLinkStore.register(DeepLinkAction.TYPE.DEFAULT_BROWSER, this);
+ DeepLinkStore.register(DeepLinkAction.TYPE.BOOKMARK_LIST, this);
}
/**
* Initializes the default Switchboard URLs the first time.
* @param intent
*/
private static void initSwitchboard(final Context context, final SafeIntent intent, final boolean isInAutomation) {
if (isInAutomation) {
@@ -3677,18 +3680,17 @@ public class BrowserApp extends GeckoApp
if (itemId == R.id.forward) {
tab = Tabs.getInstance().getSelectedTab();
if (tab != null)
tab.doForward();
return true;
}
if (itemId == R.id.bookmarks_list) {
- final String url = AboutPages.getURLForBuiltinPanelType(PanelType.BOOKMARKS);
- Tabs.getInstance().loadUrl(url);
+ Tabs.showBookmark();
return true;
}
if (itemId == R.id.history_list) {
final String url = AboutPages.getURLForBuiltinPanelType(PanelType.COMBINED_HISTORY);
Tabs.getInstance().loadUrl(url);
return true;
}
--- a/mobile/android/base/java/org/mozilla/gecko/LauncherActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/LauncherActivity.java
@@ -147,13 +147,16 @@ public class LauncherActivity extends Ac
if (deepLink == null) {
return false;
}
if (deepLink.equalsIgnoreCase(DeepLinkAction.TYPE.DEFAULT_BROWSER.name())) {
DeepLinkStore.dispatch(new DeepLinkAction(DeepLinkAction.TYPE.DEFAULT_BROWSER, deepLink));
return true;
+ } else if (deepLink.equalsIgnoreCase(DeepLinkAction.TYPE.BOOKMARK_LIST.name())) {
+ DeepLinkStore.dispatch(new DeepLinkAction(DeepLinkAction.TYPE.BOOKMARK_LIST, deepLink));
+ return true;
}
return false;
}
}
--- a/mobile/android/base/java/org/mozilla/gecko/Tabs.java
+++ b/mobile/android/base/java/org/mozilla/gecko/Tabs.java
@@ -16,16 +16,17 @@ import android.content.SharedPreferences
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.mozilla.gecko.annotation.JNITarget;
import org.mozilla.gecko.annotation.RobocopTarget;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.distribution.PartnerBrowserCustomizationsClient;
import org.mozilla.gecko.gfx.LayerView;
+import org.mozilla.gecko.home.HomeConfig;
import org.mozilla.gecko.mozglue.SafeIntent;
import org.mozilla.gecko.notifications.WhatsNewReceiver;
import org.mozilla.gecko.preferences.GeckoPreferences;
import org.mozilla.gecko.reader.ReaderModeUtils;
import org.mozilla.gecko.util.BundleEventListener;
import org.mozilla.gecko.util.EventCallback;
import org.mozilla.gecko.util.GeckoBundle;
import org.mozilla.gecko.util.JavaUtil;
@@ -99,16 +100,21 @@ public class Tabs implements BundleEvent
private int mPrivateClearColor;
public void closeAll() {
for (final Tab tab : mOrder) {
Tabs.getInstance().closeTab(tab, false);
}
}
+ public static void showBookmark() {
+ final String url = AboutPages.getURLForBuiltinPanelType(HomeConfig.PanelType.BOOKMARKS);
+ Tabs.TabsInstanceHolder.INSTANCE.loadUrl(url);
+ }
+
private static class PersistTabsRunnable implements Runnable {
private final BrowserDB db;
private final Context context;
private final Iterable<Tab> tabs;
public PersistTabsRunnable(final Context context, Iterable<Tab> tabsInOrder) {
this.context = context;
this.db = BrowserDB.from(context);