summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
Diffstat (limited to 'apex')
-rw-r--r--apex/appsearch/Android.bp14
-rw-r--r--apex/jobscheduler/framework/java/android/app/AlarmManager.java8
-rw-r--r--apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java26
-rw-r--r--apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java95
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);
}