diff options
14 files changed, 67 insertions, 67 deletions
| diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b6f4d7f5e94e..88558b48b2e5 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 @@ public class ActivityManagerService extends IActivityManager.Stub      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 @@ public class ActivityManagerService extends IActivityManager.Stub          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 cf727380ae6b..4f2a254f080f 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 @@ public class ActivityTaskManagerDebugConfig {      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 4ae9856e091c..5b0a4a9b0596 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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          }      } -    boolean isControllerAMonkey() { +    public boolean isControllerAMonkey() {          synchronized (mGlobalLock) {              return mController != null && mControllerIsAMonkey;          } @@ -2895,7 +2905,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          });      } -    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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {          }      } -    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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {                          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 dee59cc4403d..44f69b1693e9 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 @@ class AppErrors {                  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 @@ class AppErrors {                      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 @@ class AppErrors {              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 85ee7e65ffe7..2c4b33864ea3 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 @@ import java.util.regex.Pattern;  /**   * 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 @@ final class MemoryStatUtil {       * 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 @@ final class MemoryStatUtil {          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 805b979b4bb7..652d39b19a1d 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 @@ public final class ProcessList {              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 21259f4c98c2..683754cd9a35 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 @@ final class ProcessRecord implements WindowProcessListener {      }      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 @@ final class ProcessRecord implements WindowProcessListener {          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 @@ final class ProcessRecord implements WindowProcessListener {          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 32d19aaa58c8..1dd8c52f8207 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 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio      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 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio          mAtm = atm;          mLastReportedConfiguration = new Configuration();          mDisplayId = INVALID_DISPLAY; -        if (config != null) { -            onConfigurationChanged(config); +        if (atm != null) { +            onConfigurationChanged(atm.getGlobalConfiguration());          }      } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java index d652d95bd304..b011da60b210 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java @@ -469,4 +469,5 @@ public abstract class ActivityTaskManagerInternal {      public abstract void clearLockedTasks(String reason);      public abstract void updateUserConfiguration(); +    public abstract boolean canShowErrorDialogs();  } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java index 349c0a37a4c1..060c55d41bea 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java @@ -260,7 +260,7 @@ public class ActivityManagerServiceTest {          uidRec.hasInternetPermission = true;          mAms.mActiveUids.put(uid, uidRec); -        final ProcessRecord appRec = new ProcessRecord(mAms, new ApplicationInfo(), TAG, uid, null); +        final ProcessRecord appRec = new ProcessRecord(mAms, new ApplicationInfo(), TAG, uid);          appRec.thread = Mockito.mock(IApplicationThread.class);          mAms.mProcessList.mLruProcesses.add(appRec); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStartControllerTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStartControllerTests.java index 9192d6b84fee..e1ebbcf8f653 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStartControllerTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStartControllerTests.java @@ -83,7 +83,7 @@ public class ActivityStartControllerTests extends ActivityTestsBase {          final WindowProcessController wpc = new WindowProcessController(mService,                  mService.mContext.getApplicationInfo(), "name", 12345,                  UserHandle.getUserId(12345), mock(Object.class), -                mock(WindowProcessListener.class), null); +                mock(WindowProcessListener.class));          wpc.setThread(mock(IApplicationThread.class));          mController.addPendingActivityLaunch( diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java index ba64b51c9e84..fb11a04ece50 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java @@ -211,7 +211,7 @@ public class ActivityStarterTests extends ActivityTestsBase {          final WindowProcessController wpc =                  containsConditions(preconditions, PRECONDITION_NO_CALLER_APP)                  ? null : new WindowProcessController( -                        service, mock(ApplicationInfo.class),null, 0, -1, null, null, null); +                        service, mock(ApplicationInfo.class),null, 0, -1, null, null);          doReturn(wpc).when(service).getProcessController(anyObject());          final Intent intent = new Intent(); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java index 01d51e44146c..094241e98a8d 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java @@ -286,7 +286,7 @@ public class ActivityTestsBase {              final WindowProcessController wpc = new WindowProcessController(mService,                      mService.mContext.getApplicationInfo(), "name", 12345,                      UserHandle.getUserId(12345), mock(Object.class), -                    mock(WindowProcessListener.class), null); +                    mock(WindowProcessListener.class));              wpc.setThread(mock(IApplicationThread.class));              activity.setProcess(wpc);              return activity; @@ -536,11 +536,6 @@ public class ActivityTestsBase {              mUgmInternal = mock(UriGrantsManagerInternal.class);          } -        @Override -        Configuration getGlobalConfiguration() { -            return mContext.getResources().getConfiguration(); -        } -          ActivityManagerInternal getLocalService() {              if (mInternal == null) {                  mInternal = new LocalService(); diff --git a/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java b/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java index 06d41f1919c8..3a7a24d2e103 100644 --- a/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java +++ b/services/tests/servicestests/src/com/android/server/am/AppErrorDialogTest.java @@ -69,7 +69,7 @@ public class AppErrorDialogTest {      @UiThreadTest      public void testCreateWorks() throws Exception {          AppErrorDialog.Data data = new AppErrorDialog.Data(); -        data.proc = new ProcessRecord(null, mContext.getApplicationInfo(), "name", 12345, null); +        data.proc = new ProcessRecord(null, mContext.getApplicationInfo(), "name", 12345);          data.result = new AppErrorResult();          AppErrorDialog dialog = new AppErrorDialog(mContext, mService, data); |