| OLD | NEW |
| 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 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 context.getResources(), id, density); | 655 context.getResources(), id, density); |
| 652 | 656 |
| 653 if (drawable instanceof BitmapDrawable) { | 657 if (drawable instanceof BitmapDrawable) { |
| 654 BitmapDrawable bd = (BitmapDrawable) drawable; | 658 BitmapDrawable bd = (BitmapDrawable) drawable; |
| 655 return bd.getBitmap(); | 659 return bd.getBitmap(); |
| 656 } | 660 } |
| 657 assert false : "The drawable was not a bitmap drawable as expected"; | 661 assert false : "The drawable was not a bitmap drawable as expected"; |
| 658 return null; | 662 return null; |
| 659 } | 663 } |
| 660 | 664 |
| 665 /** |
| 666 * Calls the native |callbackPointer| with lists of information on all insta
lled WebAPKs. |
| 667 * |
| 668 * @param callbackPointer Callback to call with the information on the WebAP
Ks found. |
| 669 */ |
| 670 @CalledByNative |
| 671 public static void retrieveWebApks(long callbackPointer) { |
| 672 List<String> shortNames = new ArrayList<>(); |
| 673 List<String> packageNames = new ArrayList<>(); |
| 674 List<Integer> shellApkVersions = new ArrayList<>(); |
| 675 List<Integer> versionCodes = new ArrayList<>(); |
| 676 |
| 677 Context context = ContextUtils.getApplicationContext(); |
| 678 PackageManager packageManager = context.getPackageManager(); |
| 679 for (PackageInfo packageInfo : packageManager.getInstalledPackages(0)) { |
| 680 if (WebApkValidator.isValidWebApk(context, packageInfo.packageName))
{ |
| 681 // Pass non-null URL parameter so that {@link WebApkInfo#create(
)} |
| 682 // return value is non-null |
| 683 WebApkInfo webApkInfo = |
| 684 WebApkInfo.create(packageInfo.packageName, "", ShortcutS
ource.UNKNOWN); |
| 685 if (webApkInfo != null) { |
| 686 shortNames.add(webApkInfo.shortName()); |
| 687 packageNames.add(webApkInfo.webApkPackageName()); |
| 688 shellApkVersions.add(webApkInfo.shellApkVersion()); |
| 689 versionCodes.add(packageInfo.versionCode); |
| 690 } |
| 691 } |
| 692 } |
| 693 nativeOnWebApksRetrieved(callbackPointer, shortNames.toArray(new String[
0]), |
| 694 packageNames.toArray(new String[0]), integerListToIntArray(shell
ApkVersions), |
| 695 integerListToIntArray(versionCodes)); |
| 696 } |
| 697 |
| 698 private static int[] integerListToIntArray(@NonNull List<Integer> list) { |
| 699 int[] array = new int[list.size()]; |
| 700 for (int i = 0; i < list.size(); i++) { |
| 701 array[i] = list.get(i); |
| 702 } |
| 703 return array; |
| 704 } |
| 705 |
| 661 private static native void nativeOnWebappDataStored(long callbackPointer); | 706 private static native void nativeOnWebappDataStored(long callbackPointer); |
| 707 private static native void nativeOnWebApksRetrieved(long callbackPointer, St
ring[] shortNames, |
| 708 String[] packageName, int[] shellApkVersions, int[] versionCodes); |
| 662 } | 709 } |
| OLD | NEW |