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

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

Issue 2629573004: Add a chrome://webapks page. (Closed)
Patch Set: Add a chrome://webapks page. 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 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 * Calls the native |callbackPointer| with lists of information on all insta lled WebAPKs.
657 *
658 * @param callbackPointer Callback to call with the information on the WebAP Ks found.
659 */
660 @CalledByNative
661 public static void retrieveWebApks(long callbackPointer) {
662 List<String> shortNames = new ArrayList<>();
663 List<String> packageNames = new ArrayList<>();
664 List<Integer> shellApkVersions = new ArrayList<>();
665 List<Integer> versionCodes = new ArrayList<>();
666
667 Context context = ContextUtils.getApplicationContext();
668 PackageManager packageManager = context.getPackageManager();
669 for (PackageInfo packageInfo : packageManager.getInstalledPackages(0)) {
670 if (WebApkValidator.isValidWebApk(context, packageInfo.packageName)) {
671 // Pass non-null URL parameter so that {@link WebApkInfo#create( )}
672 // return value is non-null
673 WebApkInfo webApkInfo =
674 WebApkInfo.create(packageInfo.packageName, "", ShortcutS ource.UNKNOWN);
675 if (webApkInfo != null) {
676 shortNames.add(webApkInfo.shortName());
677 packageNames.add(webApkInfo.webApkPackageName());
678 shellApkVersions.add(webApkInfo.shellApkVersion());
679 versionCodes.add(packageInfo.versionCode);
680 }
681 }
682 }
683 nativeOnWebApksRetrieved(callbackPointer, shortNames.toArray(new String[ 0]),
684 packageNames.toArray(new String[0]), integerListToIntArray(shell ApkVersions),
685 integerListToIntArray(versionCodes));
686 }
687
688 private static int[] integerListToIntArray(@NonNull List<Integer> list) {
689 int[] array = new int[list.size()];
690 for (int i = 0; i < list.size(); i++) {
691 array[i] = list.get(i);
692 }
693 return array;
694 }
695
651 private static native void nativeOnWebappDataStored(long callbackPointer); 696 private static native void nativeOnWebappDataStored(long callbackPointer);
697 private static native void nativeOnWebApksRetrieved(long callbackPointer, St ring[] shortNames,
698 String[] packageName, int[] shellApkVersions, int[] versionCodes);
652 } 699 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698