diff options
| author | 2019-01-03 19:24:24 -0800 | |
|---|---|---|
| committer | 2019-01-07 12:47:27 -0800 | |
| commit | 98c84e193eaed1d55312ba84795b07585e8c2aab (patch) | |
| tree | 4829262f95fde1157afabe71c10a9b8b7aa9d0a8 | |
| parent | c0203f1268cc1749f796700db8643b5de75903f9 (diff) | |
Moved isAppForeground to ActivityManagerInternal.
Removed isAppForeground from the ActivityManager aidl and added it to
ActivityManagerInternal. Updated all of its references as well.
Bug: 119327603
Test: atest cts.tests.app.src.android.app.cts.ActivityManagerTest#testIsAppForegroundRemoved
Test: atest WifiServiceImplTest
Test: atest WifiLockManagerTest
Change-Id: I5c0fbe41df3cd00e02f8c0e1005fc9cf5832df77
5 files changed, 19 insertions, 19 deletions
diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt index 041fbfaff23d..d0ed28294288 100644 --- a/config/hiddenapi-greylist.txt +++ b/config/hiddenapi-greylist.txt @@ -56,7 +56,6 @@ Landroid/app/IActivityManager$Stub$Proxy;->getConfiguration()Landroid/content/re Landroid/app/IActivityManager$Stub$Proxy;->getLaunchedFromUid(Landroid/os/IBinder;)I Landroid/app/IActivityManager$Stub$Proxy;->getProcessLimit()I Landroid/app/IActivityManager$Stub$Proxy;->getProcessPss([I)[J -Landroid/app/IActivityManager$Stub$Proxy;->isAppForeground(I)Z Landroid/app/IActivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; Landroid/app/IActivityManager$Stub$Proxy;->setActivityController(Landroid/app/IActivityController;Z)V Landroid/app/IActivityManager$Stub$Proxy;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 0b509169010c..9d44e58112c5 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -314,4 +314,7 @@ public abstract class ActivityManagerInternal { /** Returns mount mode for process running with given pid */ public abstract int getStorageMountMode(int pid, int uid); + + /** Returns true if the given uid is the app in the foreground. */ + public abstract boolean isAppForeground(int uid); } diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index fb519b625012..347973ea3387 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -421,7 +421,6 @@ interface IActivityManager { void resizeDockedStack(in Rect dockedBounds, in Rect tempDockedTaskBounds, in Rect tempDockedTaskInsetBounds, in Rect tempOtherTaskBounds, in Rect tempOtherTaskInsetBounds); - boolean isAppForeground(int uid); void removeStack(int stackId); void makePackageIdle(String packageName, int userId); int getMemoryTrimLevel(); diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java index bfaa22117d19..725734a43946 100644 --- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java +++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java @@ -39,6 +39,7 @@ import static com.android.server.backup.internal.BackupHandler.MSG_SCHEDULE_BACK import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; +import android.app.ActivityManagerInternal; import android.app.AlarmManager; import android.app.AppGlobals; import android.app.IActivityManager; @@ -103,6 +104,7 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.Preconditions; import com.android.server.AppWidgetBackupBridge; import com.android.server.EventLogTags; +import com.android.server.LocalServices; import com.android.server.backup.fullbackup.FullBackupEntry; import com.android.server.backup.fullbackup.PerformFullTransportBackupTask; import com.android.server.backup.internal.BackupHandler; @@ -247,10 +249,11 @@ public class UserBackupManagerService { private final TransportManager mTransportManager; private final HandlerThread mUserBackupThread; - private final Context mContext; - private final PackageManager mPackageManager; - private final IPackageManager mPackageManagerBinder; - private final IActivityManager mActivityManager; + private Context mContext; + private PackageManager mPackageManager; + private IPackageManager mPackageManagerBinder; + private IActivityManager mActivityManager; + private ActivityManagerInternal mActivityManagerInternal; private PowerManager mPowerManager; private final AlarmManager mAlarmManager; private final IStorageManager mStorageManager; @@ -460,6 +463,7 @@ public class UserBackupManagerService { mPackageManager = context.getPackageManager(); mPackageManagerBinder = AppGlobals.getPackageManager(); mActivityManager = ActivityManager.getService(); + mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class); mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); @@ -2069,7 +2073,8 @@ public class UserBackupManagerService { final int privFlags = appInfo.applicationInfo.privateFlags; headBusy = (privFlags & PRIVATE_FLAG_BACKUP_IN_FOREGROUND) == 0 - && mActivityManager.isAppForeground(appInfo.applicationInfo.uid); + && mActivityManagerInternal.isAppForeground( + appInfo.applicationInfo.uid); if (headBusy) { final long nextEligible = System.currentTimeMillis() @@ -2092,8 +2097,6 @@ public class UserBackupManagerService { // queue entirely and move on, but if there's nothing else in the queue // we should bail entirely. headBusy cannot have been set to true yet. runBackup = (mFullBackupQueue.size() > 1); - } catch (RemoteException e) { - // Cannot happen; the Activity Manager is in the same process } } } while (headBusy); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index bc21610dd602..7f2a206e2a8d 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5322,16 +5322,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } - @Override - public boolean isAppForeground(int uid) { - int callerUid = Binder.getCallingUid(); - if (UserHandle.isCore(callerUid) || callerUid == uid) { - return isAppForegroundInternal(uid); - } - return false; - } - - private boolean isAppForegroundInternal(int uid) { + private boolean isAppForeground(int uid) { synchronized (this) { UidRecord uidRec = mActiveUids.get(uid); if (uidRec == null || uidRec.idle) { @@ -19687,6 +19678,11 @@ public class ActivityManagerService extends IActivityManager.Stub return pr == null ? Zygote.MOUNT_EXTERNAL_NONE : pr.mountMode; } } + + @Override + public boolean isAppForeground(int uid) { + return ActivityManagerService.this.isAppForeground(uid); + } } long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) { |