Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(509)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java

Issue 2689993002: Refactor the INSTALL_SHORTCUT broadcast code into ChromeShortcutManager (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
/**

Powered by Google App Engine
This is Rietveld 408576698