Bug 1356517 - Handle deep link to show bookmark list. r?sebastian draft
authorNevin Chen <cnevinchen@gmail.com>
Mon, 24 Apr 2017 16:18:50 +0800
changeset 567022 ab9104a8a7adabd6e5740c7ac1238dff5f40de9c
parent 566915 ef8a4d00b0d89e19abafb5feb16fde77e51bda0d
child 567023 6309341ac45b74eadfc00fae2ccfbef69508841e
push id55414
push userbmo:cnevinchen@gmail.com
push dateMon, 24 Apr 2017 09:54:19 +0000
reviewerssebastian
bugs1356517
milestone55.0a1
Bug 1356517 - Handle deep link to show bookmark list. r?sebastian MozReview-Commit-ID: 7lbuVseKPoY
mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
mobile/android/base/java/org/mozilla/gecko/LauncherActivity.java
mobile/android/base/java/org/mozilla/gecko/Tabs.java
--- 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);