21
21
import android .content .pm .PackageManager .NameNotFoundException ;
22
22
import android .content .pm .Signature ;
23
23
import android .os .AsyncTask ;
24
+ import android .os .Build ;
24
25
import android .os .Trace ;
25
26
import android .os .UserHandle ;
26
27
import android .util .Slog ;
65
66
*/
66
67
class WebViewUpdateServiceImpl {
67
68
private static final String TAG = WebViewUpdateServiceImpl .class .getSimpleName ();
69
+ private static final boolean DEBUG = Build .IS_DEBUGGABLE ;
68
70
69
71
private static class WebViewPackageMissingException extends Exception {
70
72
WebViewPackageMissingException (String message ) {
@@ -389,13 +391,17 @@ private static class ProviderAndPackageInfo {
389
391
390
392
private ProviderAndPackageInfo [] getValidWebViewPackagesAndInfos () {
391
393
WebViewProviderInfo [] allProviders = mSystemInterface .getWebViewPackages ();
394
+ if (DEBUG ) Slog .d (TAG , "getValidWebViewPackagesAndInfos: allProviders.length=" + allProviders .length );
392
395
List <ProviderAndPackageInfo > providers = new ArrayList <>();
393
396
for (int n = 0 ; n < allProviders .length ; n ++) {
394
397
try {
395
398
PackageInfo packageInfo =
396
399
mSystemInterface .getPackageInfoForProvider (allProviders [n ]);
397
- if (validityResult (allProviders [n ], packageInfo ) == VALIDITY_OK ) {
400
+ int validity = validityResult (allProviders [n ], packageInfo );
401
+ if (validity == VALIDITY_OK ) {
398
402
providers .add (new ProviderAndPackageInfo (allProviders [n ], packageInfo ));
403
+ } else {
404
+ Slog .e (TAG , "WebView provider failed validityResult: name=" + packageInfo .packageName + " cause= " + getInvalidityReason (validity ));
399
405
}
400
406
} catch (NameNotFoundException e ) {
401
407
// Don't add non-existent packages
@@ -412,8 +418,10 @@ private ProviderAndPackageInfo[] getValidWebViewPackagesAndInfos() {
412
418
*/
413
419
private PackageInfo findPreferredWebViewPackage () throws WebViewPackageMissingException {
414
420
ProviderAndPackageInfo [] providers = getValidWebViewPackagesAndInfos ();
421
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: providers.length=" + providers .length );
415
422
416
423
String userChosenProvider = mSystemInterface .getUserChosenWebViewProvider (mContext );
424
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: userChosenProvider=" + userChosenProvider );
417
425
418
426
// If the user has chosen provider, use that (if it's installed and enabled for all
419
427
// users).
@@ -429,18 +437,26 @@ private PackageInfo findPreferredWebViewPackage() throws WebViewPackageMissingEx
429
437
}
430
438
}
431
439
440
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: userChosenProvider did not pan out" );
441
+
432
442
// User did not choose, or the choice failed; use the most stable provider that is
433
443
// installed and enabled for all users, and available by default (not through
434
444
// user choice).
435
445
for (ProviderAndPackageInfo providerAndPackage : providers ) {
446
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: providerAndPackage.packageInfo.packageName=" + providerAndPackage .packageInfo .packageName );
436
447
if (providerAndPackage .provider .availableByDefault ) {
437
448
// userPackages can contain null objects.
438
449
List <UserPackage > userPackages =
439
450
mSystemInterface .getPackageInfoForProviderAllUsers (mContext ,
440
451
providerAndPackage .provider );
452
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: userPackages=" + userPackages );
441
453
if (isInstalledAndEnabledForAllUsers (userPackages )) {
442
454
return providerAndPackage .packageInfo ;
455
+ } else {
456
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: isInstalledAndEnabledForAllUsers=false" );
443
457
}
458
+ } else {
459
+ if (DEBUG ) Slog .d (TAG , "findPreferredWebViewPackage: not available by default providerAndPackage.packageInfo.packageName=" + providerAndPackage .packageInfo .packageName );
444
460
}
445
461
}
446
462
0 commit comments