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

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

Issue 2629573004: Add a chrome://webapks page. (Closed)
Patch Set: Adds an about:webapks page with information about all installed Web APKs on the device Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.app.ActivityManager; 8 import android.app.ActivityManager;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.Intent; 10 import android.content.Intent;
11 import android.content.pm.ApplicationInfo; 11 import android.content.pm.ApplicationInfo;
12 import android.content.pm.PackageInfo;
12 import android.content.pm.PackageManager; 13 import android.content.pm.PackageManager;
13 import android.content.pm.PackageManager.NameNotFoundException; 14 import android.content.pm.PackageManager.NameNotFoundException;
14 import android.content.pm.ResolveInfo; 15 import android.content.pm.ResolveInfo;
15 import android.graphics.Bitmap; 16 import android.graphics.Bitmap;
16 import android.graphics.BitmapFactory; 17 import android.graphics.BitmapFactory;
17 import android.graphics.Canvas; 18 import android.graphics.Canvas;
18 import android.graphics.Color; 19 import android.graphics.Color;
19 import android.graphics.Paint; 20 import android.graphics.Paint;
20 import android.graphics.Rect; 21 import android.graphics.Rect;
21 import android.graphics.drawable.BitmapDrawable; 22 import android.graphics.drawable.BitmapDrawable;
22 import android.graphics.drawable.Drawable; 23 import android.graphics.drawable.Drawable;
23 import android.net.Uri; 24 import android.net.Uri;
24 import android.os.AsyncTask; 25 import android.os.AsyncTask;
26 import android.support.annotation.NonNull;
25 import android.text.TextUtils; 27 import android.text.TextUtils;
26 import android.util.Base64; 28 import android.util.Base64;
27 29
28 import org.chromium.base.ApiCompatibilityUtils; 30 import org.chromium.base.ApiCompatibilityUtils;
29 import org.chromium.base.ContextUtils; 31 import org.chromium.base.ContextUtils;
30 import org.chromium.base.Log; 32 import org.chromium.base.Log;
31 import org.chromium.base.ThreadUtils; 33 import org.chromium.base.ThreadUtils;
32 import org.chromium.base.VisibleForTesting; 34 import org.chromium.base.VisibleForTesting;
33 import org.chromium.base.annotations.CalledByNative; 35 import org.chromium.base.annotations.CalledByNative;
34 import org.chromium.blink_public.platform.WebDisplayMode; 36 import org.chromium.blink_public.platform.WebDisplayMode;
35 import org.chromium.chrome.R; 37 import org.chromium.chrome.R;
36 import org.chromium.chrome.browser.webapps.ChromeWebApkHost; 38 import org.chromium.chrome.browser.webapps.ChromeWebApkHost;
39 import org.chromium.chrome.browser.webapps.WebApkInfo;
37 import org.chromium.chrome.browser.webapps.WebappActivity; 40 import org.chromium.chrome.browser.webapps.WebappActivity;
38 import org.chromium.chrome.browser.webapps.WebappAuthenticator; 41 import org.chromium.chrome.browser.webapps.WebappAuthenticator;
39 import org.chromium.chrome.browser.webapps.WebappDataStorage; 42 import org.chromium.chrome.browser.webapps.WebappDataStorage;
40 import org.chromium.chrome.browser.webapps.WebappLauncherActivity; 43 import org.chromium.chrome.browser.webapps.WebappLauncherActivity;
41 import org.chromium.chrome.browser.webapps.WebappRegistry; 44 import org.chromium.chrome.browser.webapps.WebappRegistry;
42 import org.chromium.chrome.browser.widget.RoundedIconGenerator; 45 import org.chromium.chrome.browser.widget.RoundedIconGenerator;
43 import org.chromium.content_public.common.ScreenOrientationConstants; 46 import org.chromium.content_public.common.ScreenOrientationConstants;
44 import org.chromium.ui.widget.Toast; 47 import org.chromium.ui.widget.Toast;
45 import org.chromium.webapk.lib.client.WebApkValidator; 48 import org.chromium.webapk.lib.client.WebApkValidator;
46 49
47 import java.io.ByteArrayOutputStream; 50 import java.io.ByteArrayOutputStream;
51 import java.util.ArrayList;
48 import java.util.List; 52 import java.util.List;
49 53
50 /** 54 /**
51 * This class contains functions related to adding shortcuts to the Android Home 55 * This class contains functions related to adding shortcuts to the Android Home
52 * screen. These shortcuts are used to either open a page in the main browser 56 * screen. These shortcuts are used to either open a page in the main browser
53 * or open a web app. 57 * or open a web app.
54 */ 58 */
55 public class ShortcutHelper { 59 public class ShortcutHelper {
56 public static final String EXTRA_ICON = "org.chromium.chrome.browser.webapp_ icon"; 60 public static final String EXTRA_ICON = "org.chromium.chrome.browser.webapp_ icon";
57 public static final String EXTRA_ID = "org.chromium.chrome.browser.webapp_id "; 61 public static final String EXTRA_ID = "org.chromium.chrome.browser.webapp_id ";
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 context.getResources(), id, density); 645 context.getResources(), id, density);
642 646
643 if (drawable instanceof BitmapDrawable) { 647 if (drawable instanceof BitmapDrawable) {
644 BitmapDrawable bd = (BitmapDrawable) drawable; 648 BitmapDrawable bd = (BitmapDrawable) drawable;
645 return bd.getBitmap(); 649 return bd.getBitmap();
646 } 650 }
647 assert false : "The drawable was not a bitmap drawable as expected"; 651 assert false : "The drawable was not a bitmap drawable as expected";
648 return null; 652 return null;
649 } 653 }
650 654
655 /**
656 * Fetches the information of all WebAPKs installed and returns them to the caller using a
dominickn 2017/01/23 00:48:07 "Calls the native |callbackPointer| with lists of
gonzalon 2017/01/23 16:58:50 Done.
657 * callback.
658 *
659 * @param callbackPointer Callback to call with the information on the WebAP Ks found.
660 */
661 @CalledByNative
662 public static void listWebApks(long callbackPointer) {
dominickn 2017/01/23 00:48:07 Call this method "retrieveWebApks" - "listWebApks"
gonzalon 2017/01/23 16:58:50 Done.
663 List<String> shortNames = new ArrayList<>();
664 List<String> packageNames = new ArrayList<>();
665 List<Integer> shellApkVersions = new ArrayList<>();
666 List<Integer> versionCodes = new ArrayList<>();
667
668 PackageManager packageManager = ContextUtils.getApplicationContext().get PackageManager();
dominickn 2017/01/23 00:48:07 Since you're reusing the context a lot, stick it i
gonzalon 2017/01/23 16:58:50 Done.
669 for (PackageInfo packageInfo : packageManager.getInstalledPackages(0)) {
670 if (WebApkValidator.isValidWebApk(
671 ContextUtils.getApplicationContext(), packageInfo.packag eName)) {
672 // Pass non-null URL parameter so that {@link WebApkInfo#create( )}
673 // return value is non-null
674 WebApkInfo webApkInfo =
675 WebApkInfo.create(packageInfo.packageName, "", ShortcutS ource.UNKNOWN);
676 if (webApkInfo != null) {
677 shortNames.add(webApkInfo.shortName());
678 packageNames.add(webApkInfo.webApkPackageName());
679 shellApkVersions.add(webApkInfo.shellApkVersion());
680 versionCodes.add(packageInfo.versionCode);
681 }
682 }
683 }
684 nativeOnWebApksFound(callbackPointer, shortNames.toArray(new String[0]),
685 packageNames.toArray(new String[0]), integerListToIntArray(shell ApkVersions),
686 integerListToIntArray(versionCodes));
687 }
688
689 private static int[] integerListToIntArray(@NonNull List<Integer> list) {
690 int[] array = new int[list.size()];
691 int i = 0;
692 for (Integer value : list) {
dominickn 2017/01/23 00:48:07 Just do: for (int i = 0; i < list.size(); ++i) {
gonzalon 2017/01/23 16:58:50 Done.
693 array[i++] = value;
694 }
695 return array;
696 }
697
651 private static native void nativeOnWebappDataStored(long callbackPointer); 698 private static native void nativeOnWebappDataStored(long callbackPointer);
699 private static native void nativeOnWebApksFound(long callbackPointer, String [] shortNames,
dominickn 2017/01/23 00:48:07 Call this nativeOnWebApksRetrieved to match retrie
gonzalon 2017/01/23 16:58:50 Done.
700 String[] packageName, int[] shellApkVersions, int[] versionCodes);
652 } 701 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698