diff options
Diffstat (limited to 'apex')
4 files changed, 40 insertions, 103 deletions
diff --git a/apex/appsearch/Android.bp b/apex/appsearch/Android.bp index 827842633942..ac97e04020a0 100644 --- a/apex/appsearch/Android.bp +++ b/apex/appsearch/Android.bp @@ -50,6 +50,20 @@ bootclasspath_fragment { name: "com.android.appsearch-bootclasspath-fragment", contents: ["framework-appsearch"], apex_available: ["com.android.appsearch"], + + // The bootclasspath_fragments that provide APIs on which this depends. + fragments: [ + { + apex: "com.android.art", + module: "art-bootclasspath-fragment", + }, + ], + + // Additional stubs libraries that this fragment's contents use which are + // not provided by another bootclasspath_fragment. + additional_stubs: [ + "android-non-updatable", + ], } // Encapsulate the contributions made by the com.android.appsearch to the systemserverclasspath. diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java index 4843415fdbdd..f1ac3da52d21 100644 --- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java +++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java @@ -494,6 +494,9 @@ public class AlarmManager { * exact alarms, rescheduling each time as described above. Legacy applications * whose {@code targetSdkVersion} is earlier than API 19 will continue to have all * of their alarms, including repeating alarms, treated as exact. + * <p>Apps targeting {@link Build.VERSION_CODES#S} will need to set the flag + * {@link PendingIntent#FLAG_MUTABLE} on the {@link PendingIntent} being used to set this alarm, + * if they want the alarm count to be supplied with the key {@link Intent#EXTRA_ALARM_COUNT}. * * @param type type of alarm. * @param triggerAtMillis time in milliseconds that the alarm should first @@ -516,6 +519,7 @@ public class AlarmManager { * @see #ELAPSED_REALTIME_WAKEUP * @see #RTC * @see #RTC_WAKEUP + * @see Intent#EXTRA_ALARM_COUNT */ public void setRepeating(@AlarmType int type, long triggerAtMillis, long intervalMillis, PendingIntent operation) { @@ -1004,6 +1008,9 @@ public class AlarmManager { * been available since API 3, your application can safely call it and be * assured that it will get similar behavior on both current and older versions * of Android. + * <p>Apps targeting {@link Build.VERSION_CODES#S} will need to set the flag + * {@link PendingIntent#FLAG_MUTABLE} on the {@link PendingIntent} being used to set this alarm, + * if they want the alarm count to be supplied with the key {@link Intent#EXTRA_ALARM_COUNT}. * * @param type type of alarm. * @param triggerAtMillis time in milliseconds that the alarm should first @@ -1038,6 +1045,7 @@ public class AlarmManager { * @see #INTERVAL_HOUR * @see #INTERVAL_HALF_DAY * @see #INTERVAL_DAY + * @see Intent#EXTRA_ALARM_COUNT */ public void setInexactRepeating(@AlarmType int type, long triggerAtMillis, long intervalMillis, PendingIntent operation) { diff --git a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java index 3c89016ec605..b0b9abccd229 100644 --- a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java +++ b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java @@ -25,29 +25,19 @@ public interface AppStateTracker { String TAG = "AppStateTracker"; /** - * Register a {@link ForcedAppStandbyListener} to listen for forced-app-standby changes that - * should affect services etc. + * Register a {@link ServiceStateListener} to listen for forced-app-standby changes that should + * affect services. */ - void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener); + void addServiceStateListener(@NonNull ServiceStateListener listener); /** - * @return {code true} if the given UID/package has been in forced app standby mode. + * A listener to listen to forced-app-standby changes that should affect services. */ - boolean isAppInForcedAppStandby(int uid, @NonNull String packageName); - - /** - * A listener to listen to forced-app-standby changes that should affect services etc. - */ - interface ForcedAppStandbyListener { - /** - * Called when an app goes in/out of forced app standby. - */ - void updateForceAppStandbyForUidPackage(int uid, String packageName, boolean standby); - + interface ServiceStateListener { /** - * Called when all apps' forced-app-standby states need to be re-evaluated, due to - * enable/disable certain feature flags. + * Called when an app goes into forced app standby and its foreground + * services need to be removed from that state. */ - void updateForcedAppStandbyForAllApps(); + void stopForegroundServicesForUidPackage(int uid, String packageName); } } diff --git a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java index 1deb3656dabe..c332a598c30b 100644 --- a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java +++ b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java @@ -60,10 +60,8 @@ import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener; import java.io.PrintWriter; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Objects; -import java.util.Set; /** * Class to keep track of the information related to "force app standby", which includes: @@ -162,46 +160,16 @@ public class AppStateTrackerImpl implements AppStateTracker { @GuardedBy("mLock") boolean mForcedAppStandbyEnabled; - /** - * A lock-free set of (uid, packageName) pairs in forced app standby mode. - * - * <p> - * It's bascially shadowing the {@link #mRunAnyRestrictedPackages} together with - * the {@link #mForcedAppStandbyEnabled} and the {@link #mForceAllAppsStandby} - mutations on - * them would result in copy-on-write. - * - * Note: when {@link #mForcedAppStandbyEnabled} is {@code false}, it'll be set to an empty set. - * when {@link #mForceAllAppsStandby} is {@code true}, it'll be set to null; - * </p> - */ - volatile Set<Pair<Integer, String>> mForcedAppStandbyUidPackages = Collections.emptySet(); - @Override - public void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener) { + public void addServiceStateListener(@NonNull ServiceStateListener listener) { addListener(new Listener() { @Override - public void updateForceAppStandbyForUidPackage(int uid, String packageName, - boolean standby) { - listener.updateForceAppStandbyForUidPackage(uid, packageName, standby); - } - - @Override - public void updateForcedAppStandbyForAllApps() { - listener.updateForcedAppStandbyForAllApps(); + public void stopForegroundServicesForUidPackage(int uid, String packageName) { + listener.stopForegroundServicesForUidPackage(uid, packageName); } }); } - @Override - public boolean isAppInForcedAppStandby(int uid, @NonNull String packageName) { - final Set<Pair<Integer, String>> fasUidPkgs = mForcedAppStandbyUidPackages; - if (fasUidPkgs == null) { - // Meaning the mForceAllAppsStandby is true. - return true; - } - return fasUidPkgs.contains(Pair.create(uid, packageName)); - } - interface Stats { int UID_FG_STATE_CHANGED = 0; int UID_ACTIVE_STATE_CHANGED = 1; @@ -265,7 +233,6 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForcedAppStandbyEnabled = enabled; - updateForcedAppStandbyUidPackagesLocked(); if (DEBUG) { Slog.d(TAG, "Forced app standby feature flag changed: " + mForcedAppStandbyEnabled); @@ -310,11 +277,7 @@ public class AppStateTrackerImpl implements AppStateTracker { if (!sender.isRunAnyInBackgroundAppOpsAllowed(uid, packageName)) { Slog.v(TAG, "Package " + packageName + "/" + uid + " toggled into fg service restriction"); - updateForceAppStandbyForUidPackage(uid, packageName, true); - } else { - Slog.v(TAG, "Package " + packageName + "/" + uid - + " toggled out of fg service restriction"); - updateForceAppStandbyForUidPackage(uid, packageName, false); + stopForegroundServicesForUidPackage(uid, packageName); } } @@ -379,7 +342,6 @@ public class AppStateTrackerImpl implements AppStateTracker { private void onForceAllAppsStandbyChanged(AppStateTrackerImpl sender) { updateAllJobs(); updateAllAlarms(); - updateForcedAppStandbyForAllApps(); } /** @@ -404,17 +366,10 @@ public class AppStateTrackerImpl implements AppStateTracker { } /** - * Called when an app goes in/out of forced app standby. + * Called when an app goes into forced app standby and its foreground + * services need to be removed from that state. */ - public void updateForceAppStandbyForUidPackage(int uid, String packageName, - boolean standby) { - } - - /** - * Called when all apps' forced-app-standby states need to be re-evaluated due to changes of - * feature flags such as {@link #mForcedAppStandbyEnabled} or {@link #mForceAllAppsStandby}. - */ - public void updateForcedAppStandbyForAllApps() { + public void stopForegroundServicesForUidPackage(int uid, String packageName) { } /** @@ -483,12 +438,9 @@ public class AppStateTrackerImpl implements AppStateTracker { final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); // No need to notify for state change as all the alarms and jobs should be // removed too. - synchronized (mLock) { - mExemptedBucketPackages.remove(userId, pkgName); - mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); - updateForcedAppStandbyUidPackagesLocked(); - mActiveUids.delete(uid); - } + mExemptedBucketPackages.remove(userId, pkgName); + mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); + mActiveUids.delete(uid); } break; } @@ -628,29 +580,6 @@ public class AppStateTrackerImpl implements AppStateTracker { } } } - updateForcedAppStandbyUidPackagesLocked(); - } - - /** - * Update the {@link #mForcedAppStandbyUidPackages} upon mutations on - * {@link #mRunAnyRestrictedPackages}, {@link #mForcedAppStandbyEnabled} or - * {@link #mForceAllAppsStandby}. - */ - @GuardedBy("mLock") - private void updateForcedAppStandbyUidPackagesLocked() { - if (!mForcedAppStandbyEnabled) { - mForcedAppStandbyUidPackages = Collections.emptySet(); - return; - } - if (mForceAllAppsStandby) { - mForcedAppStandbyUidPackages = null; - return; - } - Set<Pair<Integer, String>> fasUidPkgs = new ArraySet<>(); - for (int i = 0, size = mRunAnyRestrictedPackages.size(); i < size; i++) { - fasUidPkgs.add(mRunAnyRestrictedPackages.valueAt(i)); - } - mForcedAppStandbyUidPackages = Collections.unmodifiableSet(fasUidPkgs); } private void updateForceAllAppStandbyState() { @@ -672,7 +601,6 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForceAllAppsStandby = enable; - updateForcedAppStandbyUidPackagesLocked(); mHandler.notifyForceAllAppsStandbyChanged(); } @@ -717,7 +645,6 @@ public class AppStateTrackerImpl implements AppStateTracker { } else { mRunAnyRestrictedPackages.removeAt(index); } - updateForcedAppStandbyUidPackagesLocked(); return true; } @@ -969,7 +896,6 @@ public class AppStateTrackerImpl implements AppStateTracker { if (unblockAlarms) { l.unblockAllUnrestrictedAlarms(); } - l.updateForcedAppStandbyForAllApps(); } mStatLogger.logDurationStat( Stats.FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED, start); @@ -1040,7 +966,6 @@ public class AppStateTrackerImpl implements AppStateTracker { mRunAnyRestrictedPackages.removeAt(i); } } - updateForcedAppStandbyUidPackagesLocked(); cleanUpArrayForUser(mActiveUids, removedUserId); mExemptedBucketPackages.remove(removedUserId); } |