Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 819c5af8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE in AppWidgetServiceImpl#maskWidgetsViewsLocked" into main

parents 74c025c7 0b3f96ff
Loading
Loading
Loading
Loading
+22 −5
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import android.graphics.Point;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -172,6 +173,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
    private static final String TAG = "AppWidgetServiceImpl";

    private static final boolean DEBUG = false;
    private static final boolean DEBUG_NULL_PROVIDER_INFO = Build.IS_DEBUGGABLE;

    private static final String OLD_KEYGUARD_HOST_PACKAGE = "android";
    private static final String NEW_KEYGUARD_HOST_PACKAGE = "com.android.keyguard";
@@ -736,7 +738,10 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
        }
        RemoteViews views = new RemoteViews(mContext.getPackageName(),
                R.layout.work_widget_mask_view);
        ApplicationInfo appInfo = provider.info.providerInfo.applicationInfo;
        final ActivityInfo activityInfo = provider.info.providerInfo;
        final ApplicationInfo appInfo = activityInfo != null ? activityInfo.applicationInfo : null;
        final String packageName = appInfo != null
                ? appInfo.packageName : provider.id.componentName.getPackageName();
        final int appUserId = provider.getUserId();
        boolean showBadge = false;

@@ -750,7 +755,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
            } else if (provider.maskedBySuspendedPackage) {
                showBadge = mUserManager.hasBadge(appUserId);
                final UserPackage suspendingPackage = mPackageManagerInternal.getSuspendingPackage(
                        appInfo.packageName, appUserId);
                        packageName, appUserId);
                // TODO(b/281839596): don't rely on platform always meaning suspended by admin.
                if (suspendingPackage != null
                        && PLATFORM_PACKAGE_NAME.equals(suspendingPackage.packageName)) {
@@ -759,11 +764,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
                } else {
                    final SuspendDialogInfo dialogInfo =
                            mPackageManagerInternal.getSuspendedDialogInfo(
                                    appInfo.packageName, suspendingPackage, appUserId);
                                    packageName, suspendingPackage, appUserId);
                    // onUnsuspend is null because we don't want to start any activity on
                    // unsuspending from a suspended widget.
                    onClickIntent = SuspendedAppActivity.createSuspendedAppInterceptIntent(
                            appInfo.packageName, suspendingPackage, dialogInfo, null, null,
                            packageName, suspendingPackage, dialogInfo, null, null,
                            appUserId);
                }
            } else if (provider.maskedByLockedProfile) {
@@ -778,7 +783,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
                showBadge = mUserManager.hasBadge(appUserId);
            }

            Icon icon = appInfo.icon != 0
            Icon icon = (appInfo != null && appInfo.icon != 0)
                    ? Icon.createWithResource(appInfo.packageName, appInfo.icon)
                    : Icon.createWithResource(mContext, android.R.drawable.sym_def_app_icon);
            views.setImageViewIcon(R.id.work_widget_app_icon, icon);
@@ -2955,6 +2960,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
            AppWidgetProviderInfo info = new AppWidgetProviderInfo();
            info.provider = providerId.componentName;
            info.providerInfo = ri.activityInfo;
            if (DEBUG_NULL_PROVIDER_INFO) {
                Objects.requireNonNull(ri.activityInfo);
            }
            return info;
        }
        return null;
@@ -2989,6 +2997,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
            AppWidgetProviderInfo info = new AppWidgetProviderInfo();
            info.provider = providerId.componentName;
            info.providerInfo = activityInfo;
            if (DEBUG_NULL_PROVIDER_INFO) {
                Objects.requireNonNull(activityInfo);
            }

            final Resources resources;
            final long identity = Binder.clearCallingIdentity();
@@ -3564,6 +3575,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
                            AppWidgetProviderInfo info = new AppWidgetProviderInfo();
                            info.provider = providerId.componentName;
                            info.providerInfo = providerInfo;
                            if (DEBUG_NULL_PROVIDER_INFO) {
                                Objects.requireNonNull(providerInfo);
                            }

                            provider = new Provider();
                            provider.setPartialInfoLocked(info);
@@ -3580,6 +3594,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
                            if (info != null) {
                                info.provider = providerId.componentName;
                                info.providerInfo = providerInfo;
                                if (DEBUG_NULL_PROVIDER_INFO) {
                                    Objects.requireNonNull(providerInfo);
                                }
                                provider.setInfoLocked(info);
                            }
                        }