Skip to content

Commit 852e4fc

Browse files
USA-RedDragonsagarshah1729
authored andcommitted
fwb: webview: Add appropriate logging
By default, validity errors with webview packages aren't floated to the logs, making webview silently fail and diagnosis a pain. Fix it Change-Id: Icbd7954bca3240a35bb72d7155e6732ad5e6b9f8
1 parent 707586d commit 852e4fc

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

services/core/java/com/android/server/webkit/SystemImpl.java

+6
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
* @hide
5050
*/
5151
public class SystemImpl implements SystemInterface {
52+
private static final boolean DEBUG = Build.IS_DEBUGGABLE;
5253
private static final String TAG = SystemImpl.class.getSimpleName();
5354
private static final String TAG_START = "webviewproviders";
5455
private static final String TAG_WEBVIEW_PROVIDER = "webviewprovider";
@@ -78,6 +79,7 @@ private SystemImpl() {
7879
try {
7980
parser = AppGlobals.getInitialApplication().getResources().getXml(
8081
com.android.internal.R.xml.config_webview_packages);
82+
if (DEBUG) Log.d(TAG, "Opening webview packages config");
8183
XmlUtils.beginDocument(parser, TAG_START);
8284
while(true) {
8385
XmlUtils.nextElement(parser);
@@ -86,6 +88,7 @@ private SystemImpl() {
8688
break;
8789
}
8890
if (element.equals(TAG_WEBVIEW_PROVIDER)) {
91+
if (DEBUG) Log.d(TAG, "Found webview provider tag");
8992
String packageName = parser.getAttributeValue(null, TAG_PACKAGE_NAME);
9093
if (packageName == null) {
9194
throw new AndroidRuntimeException(
@@ -100,6 +103,7 @@ private SystemImpl() {
100103
parser.getAttributeValue(null, TAG_AVAILABILITY));
101104
boolean isFallback = "true".equals(
102105
parser.getAttributeValue(null, TAG_FALLBACK));
106+
if (DEBUG) Log.d(TAG, "webview provider: packageName=" + packageName + " availableByDefault=" + availableByDefault);
103107
WebViewProviderInfo currentProvider = new WebViewProviderInfo(
104108
packageName, description, availableByDefault, isFallback,
105109
readSignatures(parser));
@@ -117,6 +121,7 @@ private SystemImpl() {
117121
if (currentProvider.availableByDefault) {
118122
numAvailableByDefaultPackages++;
119123
}
124+
if (DEBUG) Log.d(TAG, "adding webview provider to list: " + packageName);
120125
webViewProviders.add(currentProvider);
121126
}
122127
else {
@@ -134,6 +139,7 @@ private SystemImpl() {
134139
}
135140
mWebViewProviderPackages =
136141
webViewProviders.toArray(new WebViewProviderInfo[webViewProviders.size()]);
142+
if (DEBUG) Log.d(TAG, "webview provider iteration finished, found: " + mWebViewProviderPackages);
137143
}
138144
/**
139145
* Returns all packages declared in the framework resources as potential WebView providers.

services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.content.pm.PackageManager.NameNotFoundException;
2222
import android.content.pm.Signature;
2323
import android.os.AsyncTask;
24+
import android.os.Build;
2425
import android.os.Trace;
2526
import android.os.UserHandle;
2627
import android.util.Slog;
@@ -65,6 +66,7 @@
6566
*/
6667
class WebViewUpdateServiceImpl {
6768
private static final String TAG = WebViewUpdateServiceImpl.class.getSimpleName();
69+
private static final boolean DEBUG = Build.IS_DEBUGGABLE;
6870

6971
private static class WebViewPackageMissingException extends Exception {
7072
WebViewPackageMissingException(String message) {
@@ -389,13 +391,17 @@ private static class ProviderAndPackageInfo {
389391

390392
private ProviderAndPackageInfo[] getValidWebViewPackagesAndInfos() {
391393
WebViewProviderInfo[] allProviders = mSystemInterface.getWebViewPackages();
394+
if (DEBUG) Slog.d(TAG, "getValidWebViewPackagesAndInfos: allProviders.length=" + allProviders.length);
392395
List<ProviderAndPackageInfo> providers = new ArrayList<>();
393396
for (int n = 0; n < allProviders.length; n++) {
394397
try {
395398
PackageInfo packageInfo =
396399
mSystemInterface.getPackageInfoForProvider(allProviders[n]);
397-
if (validityResult(allProviders[n], packageInfo) == VALIDITY_OK) {
400+
int validity = validityResult(allProviders[n], packageInfo);
401+
if (validity == VALIDITY_OK) {
398402
providers.add(new ProviderAndPackageInfo(allProviders[n], packageInfo));
403+
} else {
404+
Slog.e(TAG, "WebView provider failed validityResult: name=" + packageInfo.packageName + " cause= " + getInvalidityReason(validity));
399405
}
400406
} catch (NameNotFoundException e) {
401407
// Don't add non-existent packages
@@ -412,8 +418,10 @@ private ProviderAndPackageInfo[] getValidWebViewPackagesAndInfos() {
412418
*/
413419
private PackageInfo findPreferredWebViewPackage() throws WebViewPackageMissingException {
414420
ProviderAndPackageInfo[] providers = getValidWebViewPackagesAndInfos();
421+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: providers.length=" + providers.length);
415422

416423
String userChosenProvider = mSystemInterface.getUserChosenWebViewProvider(mContext);
424+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: userChosenProvider=" + userChosenProvider);
417425

418426
// If the user has chosen provider, use that (if it's installed and enabled for all
419427
// users).
@@ -429,18 +437,26 @@ private PackageInfo findPreferredWebViewPackage() throws WebViewPackageMissingEx
429437
}
430438
}
431439

440+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: userChosenProvider did not pan out");
441+
432442
// User did not choose, or the choice failed; use the most stable provider that is
433443
// installed and enabled for all users, and available by default (not through
434444
// user choice).
435445
for (ProviderAndPackageInfo providerAndPackage : providers) {
446+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: providerAndPackage.packageInfo.packageName=" + providerAndPackage.packageInfo.packageName);
436447
if (providerAndPackage.provider.availableByDefault) {
437448
// userPackages can contain null objects.
438449
List<UserPackage> userPackages =
439450
mSystemInterface.getPackageInfoForProviderAllUsers(mContext,
440451
providerAndPackage.provider);
452+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: userPackages=" + userPackages);
441453
if (isInstalledAndEnabledForAllUsers(userPackages)) {
442454
return providerAndPackage.packageInfo;
455+
} else {
456+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: isInstalledAndEnabledForAllUsers=false");
443457
}
458+
} else {
459+
if (DEBUG) Slog.d(TAG, "findPreferredWebViewPackage: not available by default providerAndPackage.packageInfo.packageName=" + providerAndPackage.packageInfo.packageName);
444460
}
445461
}
446462

0 commit comments

Comments
 (0)