Made a few ATMS methods public that can be accessed from AMS (35/n)
With this CL we should the mostly ready to move ATMS and company to the
WM package.
Bug: 80414790
Test: Existing tests pass
Change-Id: Ie37efb48b7a843ef14397d88452da0cf7cb35f80
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b6f4d7f..88558b4 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1361,14 +1361,6 @@
private static String sTheRealBuildSerial = Build.UNKNOWN;
- /**
- * Current global configuration information. Contains general settings for the entire system,
- * also corresponds to the merged configuration of the default display.
- */
- Configuration getGlobalConfiguration() {
- return mActivityTaskManager.getGlobalConfiguration();
- }
-
final class UiHandler extends Handler {
public UiHandler() {
super(com.android.server.UiThread.get().getLooper(), null, true);
@@ -10401,7 +10393,7 @@
return mProviderMap.dumpProviderProto(fd, pw, name, args);
}
- static class ItemMatcher {
+ public static class ItemMatcher {
ArrayList<ComponentName> components;
ArrayList<String> strings;
ArrayList<Integer> objects;
diff --git a/services/core/java/com/android/server/am/ActivityTaskManagerDebugConfig.java b/services/core/java/com/android/server/am/ActivityTaskManagerDebugConfig.java
index cf72738..4f2a254 100644
--- a/services/core/java/com/android/server/am/ActivityTaskManagerDebugConfig.java
+++ b/services/core/java/com/android/server/am/ActivityTaskManagerDebugConfig.java
@@ -69,6 +69,7 @@
static final boolean DEBUG_METRICS = DEBUG_ALL || false;
static final String POSTFIX_APP = APPEND_CATEGORY_NAME ? "_App" : "";
+ static final String POSTFIX_CLEANUP = (APPEND_CATEGORY_NAME) ? "_Cleanup" : "";
static final String POSTFIX_IDLE = APPEND_CATEGORY_NAME ? "_Idle" : "";
static final String POSTFIX_RELEASE = APPEND_CATEGORY_NAME ? "_Release" : "";
static final String POSTFIX_USER_LEAVING = APPEND_CATEGORY_NAME ? "_UserLeaving" : "";
diff --git a/services/core/java/com/android/server/am/ActivityTaskManagerService.java b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
index 4ae9856..5b0a4a9 100644
--- a/services/core/java/com/android/server/am/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
@@ -612,23 +612,27 @@
GL_ES_VERSION = SystemProperties.getInt("ro.opengles.version", GL_ES_VERSION_UNDEFINED);
}
- void onSystemReady() {
- mHasHeavyWeightFeature = mContext.getPackageManager().hasSystemFeature(
- PackageManager.FEATURE_CANT_SAVE_STATE);
- mAssistUtils = new AssistUtils(mContext);
- mVrController.onSystemReady();
- mRecentTasks.onSystemReadyLocked();
+ public void onSystemReady() {
+ synchronized (mGlobalLock) {
+ mHasHeavyWeightFeature = mContext.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_CANT_SAVE_STATE);
+ mAssistUtils = new AssistUtils(mContext);
+ mVrController.onSystemReady();
+ mRecentTasks.onSystemReadyLocked();
+ }
}
- void onInitPowerManagement() {
- mStackSupervisor.initPowerManagement();
- final PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
- mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
- mVoiceWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*voice*");
- mVoiceWakeLock.setReferenceCounted(false);
+ public void onInitPowerManagement() {
+ synchronized (mGlobalLock) {
+ mStackSupervisor.initPowerManagement();
+ final PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
+ mVoiceWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*voice*");
+ mVoiceWakeLock.setReferenceCounted(false);
+ }
}
- void installSystemProviders() {
+ public void installSystemProviders() {
mFontScaleSettingObserver = new FontScaleSettingObserver();
}
@@ -737,9 +741,11 @@
mKeyguardController = mStackSupervisor.getKeyguardController();
}
- void onActivityManagerInternalAdded() {
- mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
- mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class);
+ public void onActivityManagerInternalAdded() {
+ synchronized (mGlobalLock) {
+ mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
+ mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class);
+ }
}
int increaseConfigurationSeqLocked() {
@@ -753,14 +759,18 @@
return supervisor;
}
- void setWindowManager(WindowManagerService wm) {
- mWindowManager = wm;
- mLockTaskController.setWindowManager(wm);
- mStackSupervisor.setWindowManager(wm);
+ public void setWindowManager(WindowManagerService wm) {
+ synchronized (mGlobalLock) {
+ mWindowManager = wm;
+ mLockTaskController.setWindowManager(wm);
+ mStackSupervisor.setWindowManager(wm);
+ }
}
- void setUsageStatsManager(UsageStatsManagerInternal usageStatsManager) {
- mUsageStatsInternal = usageStatsManager;
+ public void setUsageStatsManager(UsageStatsManagerInternal usageStatsManager) {
+ synchronized (mGlobalLock) {
+ mUsageStatsInternal = usageStatsManager;
+ }
}
UserManagerService getUserManager() {
@@ -2136,7 +2146,7 @@
}
}
- boolean isControllerAMonkey() {
+ public boolean isControllerAMonkey() {
synchronized (mGlobalLock) {
return mController != null && mControllerIsAMonkey;
}
@@ -2895,7 +2905,7 @@
});
}
- void onScreenAwakeChanged(boolean isAwake) {
+ public void onScreenAwakeChanged(boolean isAwake) {
mH.post(() -> {
for (int i = mScreenObservers.size() - 1; i >= 0; i--) {
mScreenObservers.get(i).onAwakeStateChanged(isAwake);
@@ -4905,15 +4915,6 @@
}
}
- boolean canShowErrorDialogs() {
- return mShowDialogs && !mSleeping && !mShuttingDown
- && !mKeyguardController.isKeyguardOrAodShowing(DEFAULT_DISPLAY)
- && !hasUserRestriction(UserManager.DISALLOW_SYSTEM_ERROR_DIALOGS,
- mAmInternal.getCurrentUserId())
- && !(UserManager.isDeviceInDemoMode(mContext)
- && mAmInternal.getCurrentUser().isDemo());
- }
-
static long getInputDispatchingTimeoutLocked(ActivityRecord r) {
if (r == null || !r.hasProcess()) {
return KEY_DISPATCHING_TIMEOUT_MS;
@@ -6791,5 +6792,17 @@
false /* deferResume */);
}
}
+
+ @Override
+ public boolean canShowErrorDialogs() {
+ synchronized (mGlobalLock) {
+ return mShowDialogs && !mSleeping && !mShuttingDown
+ && !mKeyguardController.isKeyguardOrAodShowing(DEFAULT_DISPLAY)
+ && !hasUserRestriction(UserManager.DISALLOW_SYSTEM_ERROR_DIALOGS,
+ mAmInternal.getCurrentUserId())
+ && !(UserManager.isDeviceInDemoMode(mContext)
+ && mAmInternal.getCurrentUser().isDemo());
+ }
+ }
}
}
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index dee59cc..44f69b1 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -474,7 +474,7 @@
mService.mProcessList.removeProcessLocked(r, false, true, "crash");
if (taskId != INVALID_TASK_ID) {
try {
- mService.mActivityTaskManager.startActivityFromRecents(taskId,
+ mService.startActivityFromRecents(taskId,
ActivityOptions.makeBasic().toBundle());
} catch (IllegalArgumentException e) {
// Hmm...that didn't work. Task should either be in recents or associated
@@ -794,7 +794,7 @@
mService.mUserController.getCurrentUserId()) != 0;
final boolean crashSilenced = mAppsNotReportingCrashes != null &&
mAppsNotReportingCrashes.contains(proc.info.packageName);
- if ((mService.mActivityTaskManager.canShowErrorDialogs() || showBackground)
+ if ((mService.mAtmInternal.canShowErrorDialogs() || showBackground)
&& !crashSilenced
&& (showFirstCrash || showFirstCrashDevOption || data.repeating)) {
proc.crashDialog = dialogToShow = new AppErrorDialog(mContext, mService, data);
@@ -847,7 +847,7 @@
boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
- if (mService.mActivityTaskManager.canShowErrorDialogs() || showBackground) {
+ if (mService.mAtmInternal.canShowErrorDialogs() || showBackground) {
dialogToShow = new AppNotRespondingDialog(mService, mContext, data);
proc.anrDialog = dialogToShow;
} else {
diff --git a/services/core/java/com/android/server/am/MemoryStatUtil.java b/services/core/java/com/android/server/am/MemoryStatUtil.java
index 85ee7e6..2c4b338 100644
--- a/services/core/java/com/android/server/am/MemoryStatUtil.java
+++ b/services/core/java/com/android/server/am/MemoryStatUtil.java
@@ -36,7 +36,7 @@
/**
* Static utility methods related to {@link MemoryStat}.
*/
-final class MemoryStatUtil {
+public final class MemoryStatUtil {
/**
* Which native processes to create {@link MemoryStat} for.
*
@@ -114,7 +114,7 @@
* Returns null if no stats can be read.
*/
@Nullable
- static MemoryStat readMemoryStatFromFilesystem(int uid, int pid) {
+ public static MemoryStat readMemoryStatFromFilesystem(int uid, int pid) {
return hasMemcg() ? readMemoryStatFromMemcg(uid, pid) : readMemoryStatFromProcfs(pid);
}
@@ -266,7 +266,7 @@
return DEVICE_HAS_PER_APP_MEMCG;
}
- static final class MemoryStat {
+ public static final class MemoryStat {
/** Number of page faults */
long pgfault;
/** Number of major page faults */
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 805b979b..652d39b 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -1982,8 +1982,7 @@
StatsLog.write(StatsLog.ISOLATED_UID_CHANGED, info.uid, uid,
StatsLog.ISOLATED_UID_CHANGED__EVENT__CREATED);
}
- final ProcessRecord r = new ProcessRecord(mService, info, proc, uid,
- mService.getGlobalConfiguration());
+ final ProcessRecord r = new ProcessRecord(mService, info, proc, uid);
if (!mService.mBooted && !mService.mBooting
&& userId == UserHandle.USER_SYSTEM
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index 21259f4c..683754c 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -535,7 +535,7 @@
}
ProcessRecord(ActivityManagerService _service, ApplicationInfo _info, String _processName,
- int _uid, Configuration config) {
+ int _uid) {
mService = _service;
info = _info;
isolated = _info.uid != _uid;
@@ -549,7 +549,7 @@
removed = false;
lastStateTime = lastPssTime = nextPssTime = SystemClock.uptimeMillis();
mWindowProcessController = new WindowProcessController(
- mService.mActivityTaskManager, info, processName, uid, userId, this, this, config);
+ mService.mActivityTaskManager, info, processName, uid, userId, this, this);
pkgList.put(_info.packageName, new ProcessStats.ProcessStateHolder(_info.longVersionCode));
}
@@ -1259,7 +1259,7 @@
synchronized (mService) {
// PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down.
- if (mService.mActivityTaskManager.mShuttingDown) {
+ if (mService.mAtmInternal.isShuttingDown()) {
Slog.i(TAG, "During shutdown skipping ANR: " + this + " " + annotation);
return;
} else if (isNotResponding()) {
diff --git a/services/core/java/com/android/server/am/WindowProcessController.java b/services/core/java/com/android/server/am/WindowProcessController.java
index 32d19aa..1dd8c52 100644
--- a/services/core/java/com/android/server/am/WindowProcessController.java
+++ b/services/core/java/com/android/server/am/WindowProcessController.java
@@ -157,8 +157,7 @@
private int mDisplayId;
WindowProcessController(ActivityTaskManagerService atm, ApplicationInfo info, String name,
- int uid, int userId, Object owner, WindowProcessListener listener,
- Configuration config) {
+ int uid, int userId, Object owner, WindowProcessListener listener) {
mInfo = info;
mName = name;
mUid = uid;
@@ -168,8 +167,8 @@
mAtm = atm;
mLastReportedConfiguration = new Configuration();
mDisplayId = INVALID_DISPLAY;
- if (config != null) {
- onConfigurationChanged(config);
+ if (atm != null) {
+ onConfigurationChanged(atm.getGlobalConfiguration());
}
}