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

Commit 008163e7 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Moved AppWarnings handling to ActivityTaskManagerService (15/n)

Also removed CompatModeDialog since it has been disabled for more than
5 years now.

Test: Existing tests pass
Bug: 80414790
Change-Id: Ide697f9f6e6ed176c54bfcc1b800d4dba59c1d06
parent 906f9c62
Loading
Loading
Loading
Loading
+2 −59
Original line number Diff line number Diff line
@@ -568,8 +568,6 @@ public class ActivityManagerService extends IActivityManager.Stub
    final AppErrors mAppErrors;
    final AppWarnings mAppWarnings;
    /**
     * Dump of the activity state at the time of the last ANR. Cleared after
     * {@link WindowManagerService#LAST_ANR_LIFETIME_DURATION_MSECS}
@@ -1451,7 +1449,6 @@ public class ActivityManagerService extends IActivityManager.Stub
    static final int CHECK_EXCESSIVE_POWER_USE_MSG = 27;
    static final int CLEAR_DNS_CACHE_MSG = 28;
    static final int UPDATE_HTTP_PROXY_MSG = 29;
    static final int SHOW_COMPAT_MODE_DIALOG_UI_MSG = 30;
    static final int DISPATCH_PROCESSES_CHANGED_UI_MSG = 31;
    static final int DISPATCH_PROCESS_DIED_UI_MSG = 32;
    static final int REPORT_MEM_USAGE_MSG = 33;
@@ -1482,7 +1479,6 @@ public class ActivityManagerService extends IActivityManager.Stub
    static ServiceThread sKillThread = null;
    static KillHandler sKillHandler = null;
    CompatModeDialog mCompatModeDialog;
    long mLastMemUsageReportTime = 0;
    /**
@@ -1613,34 +1609,6 @@ public class ActivityManagerService extends IActivityManager.Stub
                    }
                }
            } break;
            case SHOW_COMPAT_MODE_DIALOG_UI_MSG: {
                synchronized (ActivityManagerService.this) {
                    ActivityRecord ar = (ActivityRecord) msg.obj;
                    if (mCompatModeDialog != null) {
                        if (mCompatModeDialog.mAppInfo.packageName.equals(
                                ar.info.applicationInfo.packageName)) {
                            return;
                        }
                        mCompatModeDialog.dismiss();
                        mCompatModeDialog = null;
                    }
                    if (ar != null && false) {
                        if (mCompatModePackages.getPackageAskCompatModeLocked(
                                ar.packageName)) {
                            int mode = mCompatModePackages.computeCompatModeLocked(
                                    ar.info.applicationInfo);
                            if (mode == ActivityManager.COMPAT_MODE_DISABLED
                                    || mode == ActivityManager.COMPAT_MODE_ENABLED) {
                                mCompatModeDialog = new CompatModeDialog(
                                        ActivityManagerService.this, mUiContext,
                                        ar.info.applicationInfo);
                                mCompatModeDialog.show();
                            }
                        }
                    }
                }
                break;
            }
            case DISPATCH_PROCESSES_CHANGED_UI_MSG: {
                dispatchProcessesChanged();
                break;
@@ -2459,7 +2427,6 @@ public class ActivityManagerService extends IActivityManager.Stub
        mUiContext = null;
        GL_ES_VERSION = 0;
        mAppErrors = null;
        mAppWarnings = null;
        mAppOpsService = mInjector.getAppOpsService(null, null);
        mBatteryStatsService = null;
        mCompatModePackages = null;
@@ -2526,8 +2493,6 @@ public class ActivityManagerService extends IActivityManager.Stub
        final File systemDir = SystemServiceManager.ensureSystemDir();
        mAppWarnings = new AppWarnings(this, mUiContext, mHandler, mUiHandler, systemDir);
        // TODO: Move creation of battery stats service outside of activity manager service.
        mBatteryStatsService = new BatteryStatsService(systemContext, systemDir, mHandler);
        mBatteryStatsService.getActiveStatistics().readLocked();
@@ -2917,28 +2882,6 @@ public class ActivityManagerService extends IActivityManager.Stub
        mActivityTaskManager.unregisterTaskStackListener(listener);
    }
    final void showAskCompatModeDialogLocked(ActivityRecord r) {
        Message msg = Message.obtain();
        msg.what = SHOW_COMPAT_MODE_DIALOG_UI_MSG;
        msg.obj = r.getTask().askedCompatMode ? null : r;
        mUiHandler.sendMessage(msg);
    }
    final AppWarnings getAppWarningsLocked() {
        return mAppWarnings;
    }
    /**
     * Shows app warning dialogs, if necessary.
     *
     * @param r activity record for which the warnings may be displayed
     */
    final void showAppWarningsIfNeededLocked(ActivityRecord r) {
        mAppWarnings.showUnsupportedCompileSdkDialogIfNeeded(r);
        mAppWarnings.showUnsupportedDisplaySizeDialogIfNeeded(r);
        mAppWarnings.showDeprecatedTargetDialogIfNeeded(r);
    }
    private int updateLruProcessInternalLocked(ProcessRecord app, long now, int index,
            String what, Object obj, ProcessRecord srcApp) {
        app.lastActivityTime = now;
@@ -16373,7 +16316,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                                        mActivityTaskManager.getRecentTasks().removeTasksByPackageName(ssp, userId);
                                        mServices.forceStopPackageLocked(ssp, userId);
                                        mAppWarnings.onPackageUninstalled(ssp);
                                        mAtmInternal.onPackageUninstalled(ssp);
                                        mCompatModePackages.handlePackageUninstalledLocked(ssp);
                                        mBatteryStatsService.notePackageUninstalled(ssp);
                                    }
@@ -16454,7 +16397,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                    String ssp;
                    if (data != null && (ssp = data.getSchemeSpecificPart()) != null) {
                        mCompatModePackages.handlePackageDataClearedLocked(ssp);
                        mAppWarnings.onPackageDataCleared(ssp);
                        mAtmInternal.onPackageDataCleared(ssp);
                    }
                    break;
                }
+5 −3
Original line number Diff line number Diff line
@@ -2817,10 +2817,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
            }
            results = null;
            newIntents = null;
            service.mAm.getAppWarningsLocked().onResumeActivity(this);
            service.mAm.showAskCompatModeDialogLocked(this);
            service.getAppWarningsLocked().onResumeActivity(this);
        } else {
            service.mAm.mHandler.removeMessages(PAUSE_TIMEOUT_MSG, this);
            final ActivityStack stack = getStack();
            if (stack != null) {
                stack.mHandler.removeMessages(PAUSE_TIMEOUT_MSG, this);
            }
            setState(PAUSED, "relaunchActivityLocked");
        }

+1 −2
Original line number Diff line number Diff line
@@ -2722,8 +2722,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
                            next.shortComponentName);

                    next.sleeping = false;
                    mService.mAm.getAppWarningsLocked().onResumeActivity(next);
                    mService.mAm.showAskCompatModeDialogLocked(next);
                    mService.getAppWarningsLocked().onResumeActivity(next);
                    next.app.setPendingUiCleanAndForceProcessStateUpTo(mService.mTopProcessState);
                    next.clearOptionsLocked();
                    transaction.setLifecycleStateRequest(
+1 −2
Original line number Diff line number Diff line
@@ -1523,8 +1523,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
                        PackageManager.NOTIFY_PACKAGE_USE_ACTIVITY);
                r.sleeping = false;
                r.forceNewConfig = false;
                mService.mAm.getAppWarningsLocked().onStartActivity(r);
                mService.mAm.showAskCompatModeDialogLocked(r);
                mService.getAppWarningsLocked().onStartActivity(r);
                r.compat = mService.mAm.compatibilityInfoForPackageLocked(r.info.applicationInfo);
                ProfilerInfo profilerInfo = null;
                if (mService.mAm.mProfileApp != null && mService.mAm.mProfileApp.equals(app.processName)) {
+25 −2
Original line number Diff line number Diff line
@@ -132,6 +132,7 @@ import android.view.WindowManager;
import com.android.internal.R;
import com.android.internal.app.IAppOpsService;
import com.android.server.AppOpsService;
import com.android.server.SystemServiceManager;
import com.android.server.pm.UserManagerService;
import com.android.server.uri.UriGrantsManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -471,6 +472,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    /** If non-null, we are tracking the time the user spends in the currently focused app. */
    AppTimeTracker mCurAppTimeTracker;

    private AppWarnings mAppWarnings;

    private FontScaleSettingObserver mFontScaleSettingObserver;

    private final class FontScaleSettingObserver extends ContentObserver {
@@ -600,6 +603,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        mGlobalLock = mAm;
        mH = new H(mAm.mHandlerThread.getLooper());
        mUiHandler = new UiHandler();
        mAppWarnings = new AppWarnings(
                this, mUiContext, mH, mUiHandler, SystemServiceManager.ensureSystemDir());

        mTempConfig.setToDefaults();
        mTempConfig.setLocales(LocaleList.getDefault());
@@ -4013,7 +4018,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        synchronized (mGlobalLock) {
            final long origId = Binder.clearCallingIdentity();
            try {
                mAm.mAppWarnings.alwaysShowUnsupportedCompileSdkWarning(activity);
                mAppWarnings.alwaysShowUnsupportedCompileSdkWarning(activity);
            } finally {
                Binder.restoreCallingIdentity(origId);
            }
@@ -4498,7 +4503,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {

            final boolean isDensityChange = (changes & ActivityInfo.CONFIG_DENSITY) != 0;
            if (isDensityChange && displayId == DEFAULT_DISPLAY) {
                mAm.mAppWarnings.onDensityChanged();
                mAppWarnings.onDensityChanged();

                mAm.killAllBackgroundProcessesExcept(N,
                        ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
@@ -4883,6 +4888,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        return mPmInternal;
    }

    AppWarnings getAppWarningsLocked() {
        return mAppWarnings;
    }

    void logAppTooSlow(WindowProcessController app, long startTime, String msg) {
        if (true || Build.IS_USER) {
            return;
@@ -5353,5 +5362,19 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                mPidMap.remove(pid);
            }
        }

        @Override
        public void onPackageDataCleared(String name) {
            synchronized (mGlobalLock) {
                mAppWarnings.onPackageDataCleared(name);
            }
        }

        @Override
        public void onPackageUninstalled(String name) {
            synchronized (mGlobalLock) {
                mAppWarnings.onPackageUninstalled(name);
            }
        }
    }
}
Loading