Index: chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
index c8356b73ffd55880f02a18bf3581ac97bab3d0c8..d553ad54af76b082f8bc5aaae274b8e6fb3e938d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
@@ -4,7 +4,6 @@ |
package org.chromium.chrome.browser; |
-import android.annotation.SuppressLint; |
import android.app.ActivityManager; |
import android.content.Context; |
import android.content.Intent; |
@@ -12,7 +11,6 @@ import android.content.pm.ApplicationInfo; |
import android.content.pm.PackageInfo; |
import android.content.pm.PackageManager; |
import android.content.pm.PackageManager.NameNotFoundException; |
-import android.content.pm.ResolveInfo; |
import android.graphics.Bitmap; |
import android.graphics.BitmapFactory; |
import android.graphics.Canvas; |
@@ -35,6 +33,7 @@ import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.blink_public.platform.WebDisplayMode; |
import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.webapps.ChromeShortcutManager; |
import org.chromium.chrome.browser.webapps.ChromeWebApkHost; |
import org.chromium.chrome.browser.webapps.WebApkInfo; |
import org.chromium.chrome.browser.webapps.WebappActivity; |
@@ -89,11 +88,11 @@ public class ShortcutHelper { |
// This value is equal to kInvalidOrMissingColor in the C++ content::Manifest struct. |
public static final long MANIFEST_COLOR_INVALID_OR_MISSING = ((long) Integer.MAX_VALUE) + 1; |
- private static final String TAG = "ShortcutHelper"; |
- |
// There is no public string defining this intent so if Home changes the value, we |
// have to update this string. |
- private static final String INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; |
+ public static final String INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; |
+ |
+ private static final String TAG = "ShortcutHelper"; |
dominickn
2017/02/13 05:18:02
You moved this TAG - perhaps put it back again?
Marti Wong
2017/02/14 02:42:47
This TAG is moved to ChromeShortcutManager
|
// The activity class used for launching a WebApk. |
private static final String WEBAPK_MAIN_ACTIVITY = "org.chromium.webapk.shell_apk.MainActivity"; |
@@ -113,8 +112,8 @@ public class ShortcutHelper { |
* @param context The Context to use. |
* @param intent The intent to broadcast. |
*/ |
- public void sendBroadcast(Context context, Intent intent) { |
- context.sendBroadcast(intent); |
+ public void requestPinShortcut(final Context context, final Intent intent) { |
dominickn
2017/02/13 05:18:02
Perhaps call this method addShortcutToHomescreen?
Marti Wong
2017/02/14 02:42:47
Done.
|
+ ChromeShortcutManager.getInstance(context).addShortcutToHomeScreen(context, intent); |
} |
/** |
@@ -166,7 +165,7 @@ public class ShortcutHelper { |
@Override |
protected void onPostExecute(final Intent resultIntent) { |
Context context = ContextUtils.getApplicationContext(); |
- sDelegate.sendBroadcast( |
+ sDelegate.requestPinShortcut( |
context, createAddToHomeIntent(userTitle, icon, resultIntent)); |
// Store the webapp data so that it is accessible without the intent. Once this |
@@ -180,8 +179,10 @@ public class ShortcutHelper { |
nativeOnWebappDataStored(callbackPointer); |
} |
}); |
- |
- showAddedToHomescreenToast(userTitle); |
+ if (ChromeShortcutManager.getInstance(context).canShowAddedToHomescreenToast( |
+ context)) { |
+ showAddedToHomescreenToast(userTitle); |
+ } |
} |
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
} |
@@ -209,14 +210,18 @@ public class ShortcutHelper { |
*/ |
@SuppressWarnings("unused") |
@CalledByNative |
- private static void addShortcut(String url, String userTitle, Bitmap icon, int source) { |
+ private static void addShortcut( |
+ String id, String url, String userTitle, Bitmap icon, int source) { |
Context context = ContextUtils.getApplicationContext(); |
final Intent shortcutIntent = createShortcutIntent(url); |
+ shortcutIntent.putExtra(EXTRA_ID, id); |
shortcutIntent.putExtra(EXTRA_SOURCE, source); |
shortcutIntent.setPackage(context.getPackageName()); |
- sDelegate.sendBroadcast( |
+ sDelegate.requestPinShortcut( |
context, createAddToHomeIntent(userTitle, icon, shortcutIntent)); |
- showAddedToHomescreenToast(userTitle); |
+ if (ChromeShortcutManager.getInstance(context).canShowAddedToHomescreenToast(context)) { |
+ showAddedToHomescreenToast(userTitle); |
+ } |
} |
/** |
@@ -361,14 +366,9 @@ public class ShortcutHelper { |
* @param context Context used to get the package manager. |
* @return if a shortcut can be added to the home screen under the current profile. |
*/ |
- // TODO(crbug.com/635567): Fix this properly. |
- @SuppressLint("WrongConstant") |
public static boolean isAddToHomeIntentSupported(Context context) { |
- PackageManager pm = context.getPackageManager(); |
- Intent i = new Intent(INSTALL_SHORTCUT); |
- List<ResolveInfo> receivers = pm.queryBroadcastReceivers( |
- i, PackageManager.GET_INTENT_FILTERS); |
- return !receivers.isEmpty(); |
+ return ChromeShortcutManager.getInstance(context).isAddShortcutToHomeScreenSupported( |
+ context); |
} |
/** |