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

Side by Side Diff: chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkValidator.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.webapk.lib.client; 5 package org.chromium.webapk.lib.client;
6 6
7 import static org.chromium.webapk.lib.common.WebApkConstants.WEBAPK_PACKAGE_PREF IX; 7 import static org.chromium.webapk.lib.common.WebApkConstants.WEBAPK_PACKAGE_PREF IX;
8 8
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.Intent; 10 import android.content.Intent;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 /** 63 /**
64 * @param context The context to use to check whether WebAPK is valid. 64 * @param context The context to use to check whether WebAPK is valid.
65 * @param infos The ResolveInfos to search. 65 * @param infos The ResolveInfos to search.
66 * @return Package name of the ResolveInfo which corresponds to a WebAPK. Nu ll if none of the 66 * @return Package name of the ResolveInfo which corresponds to a WebAPK. Nu ll if none of the
67 * ResolveInfos corresponds to a WebAPK. 67 * ResolveInfos corresponds to a WebAPK.
68 */ 68 */
69 public static String findWebApkPackage(Context context, List<ResolveInfo> in fos) { 69 public static String findWebApkPackage(Context context, List<ResolveInfo> in fos) {
70 for (ResolveInfo info : infos) { 70 for (ResolveInfo info : infos) {
71 if (info.activityInfo != null 71 if (info.activityInfo != null
72 && info.activityInfo.packageName.startsWith(WEBAPK_PACKAGE_P REFIX)
73 && isValidWebApk(context, info.activityInfo.packageName)) { 72 && isValidWebApk(context, info.activityInfo.packageName)) {
74 return info.activityInfo.packageName; 73 return info.activityInfo.packageName;
75 } 74 }
76 } 75 }
77 return null; 76 return null;
78 } 77 }
79 78
80 /** 79 /**
81 * Returns whether the provided WebAPK is installed and passes signature che cks. 80 * Returns whether the provided WebAPK is installed and passes signature che cks.
82 * @param context A context 81 * @param context A context
83 * @param webappPackageName The package name to check 82 * @param webappPackageName The package name to check
84 * @return true iff the WebAPK is installed and passes security checks 83 * @return true iff the WebAPK is installed and passes security checks
85 */ 84 */
86 private static boolean isValidWebApk(Context context, String webappPackageNa me) { 85 public static boolean isValidWebApk(Context context, String webappPackageNam e) {
87 if (sExpectedSignature == null) { 86 if (sExpectedSignature == null) {
88 Log.wtf(TAG, "WebApk validation failure - expected signature not set ." 87 Log.wtf(TAG, "WebApk validation failure - expected signature not set ."
89 + "missing call to WebApkValidator.initWithBrowserHostSignat ure"); 88 + "missing call to WebApkValidator.initWithBrowserHostSignat ure");
90 } 89 }
90 if (!webappPackageName.startsWith(WEBAPK_PACKAGE_PREFIX)) {
91 return false;
92 }
91 // check signature 93 // check signature
92 PackageInfo packageInfo = null; 94 PackageInfo packageInfo = null;
93 try { 95 try {
94 packageInfo = context.getPackageManager().getPackageInfo(webappPacka geName, 96 packageInfo = context.getPackageManager().getPackageInfo(webappPacka geName,
95 PackageManager.GET_SIGNATURES); 97 PackageManager.GET_SIGNATURES);
96 } catch (NameNotFoundException e) { 98 } catch (NameNotFoundException e) {
97 e.printStackTrace(); 99 e.printStackTrace();
98 Log.d(TAG, "WebApk not found"); 100 Log.d(TAG, "WebApk not found");
99 return false; 101 return false;
100 } 102 }
(...skipping 16 matching lines...) Expand all
117 * with for the current host. 119 * with for the current host.
118 * @param expectedSignature 120 * @param expectedSignature
119 */ 121 */
120 public static void initWithBrowserHostSignature(byte[] expectedSignature) { 122 public static void initWithBrowserHostSignature(byte[] expectedSignature) {
121 if (sExpectedSignature != null) { 123 if (sExpectedSignature != null) {
122 return; 124 return;
123 } 125 }
124 sExpectedSignature = Arrays.copyOf(expectedSignature, expectedSignature. length); 126 sExpectedSignature = Arrays.copyOf(expectedSignature, expectedSignature. length);
125 } 127 }
126 } 128 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInfo.java ('k') | chrome/browser/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698