Merge "Add Separator comments in MediaRouter2ServiceImpl"
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index f659dbf..d9fb318 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -1833,12 +1833,13 @@
Slog.wtf(TAG, "Not yet prepared when started tracking: " + jobStatus);
}
jobStatus.enqueueTime = sElapsedRealtimeClock.millis();
- final boolean update = mJobs.add(jobStatus);
+ final boolean update = lastJob != null;
+ mJobs.add(jobStatus);
if (mReadyToRock) {
for (int i = 0; i < mControllers.size(); i++) {
StateController controller = mControllers.get(i);
if (update) {
- controller.maybeStopTrackingJobLocked(jobStatus, null, true);
+ controller.maybeStopTrackingJobLocked(jobStatus, null);
}
controller.maybeStartTrackingJobLocked(jobStatus, lastJob);
}
@@ -1871,7 +1872,7 @@
if (mReadyToRock) {
for (int i = 0; i < mControllers.size(); i++) {
StateController controller = mControllers.get(i);
- controller.maybeStopTrackingJobLocked(jobStatus, incomingJob, false);
+ controller.maybeStopTrackingJobLocked(jobStatus, incomingJob);
}
}
return removed;
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
index df8f729..68cb049 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
@@ -203,13 +203,12 @@
}
/**
- * Add a job to the master list, persisting it if necessary. If the JobStatus already exists,
- * it will be replaced.
+ * Add a job to the master list, persisting it if necessary.
+ * Similar jobs to the new job will not be removed.
+ *
* @param jobStatus Job to add.
- * @return Whether or not an equivalent JobStatus was replaced by this operation.
*/
- public boolean add(JobStatus jobStatus) {
- boolean replaced = mJobSet.remove(jobStatus);
+ public void add(JobStatus jobStatus) {
mJobSet.add(jobStatus);
if (jobStatus.isPersisted()) {
maybeWriteStatusToDiskAsync();
@@ -217,7 +216,6 @@
if (DEBUG) {
Slog.d(TAG, "Added job status to store: " + jobStatus);
}
- return replaced;
}
/**
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
index 65d7121..ecee10a 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
@@ -81,8 +81,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
}
@Override
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java
index d284a99..2ca3f8f 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java
@@ -133,7 +133,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob, boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob) {
if (taskStatus.clearTrackingController(JobStatus.TRACKING_BATTERY)) {
mTrackedTasks.remove(taskStatus);
mTopStartedJobs.remove(taskStatus);
@@ -143,7 +143,7 @@
@Override
public void stopTrackingRestrictedJobLocked(JobStatus jobStatus) {
if (!jobStatus.hasPowerConstraint()) {
- maybeStopTrackingJobLocked(jobStatus, null, false);
+ maybeStopTrackingJobLocked(jobStatus, null);
}
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
index 9b59560..b029e00 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
@@ -127,8 +127,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
}
@Override
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
index d2dc2a7e..16dd1672 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
@@ -290,8 +290,7 @@
@GuardedBy("mLock")
@Override
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
if (jobStatus.clearTrackingController(JobStatus.TRACKING_CONNECTIVITY)) {
ArraySet<JobStatus> jobs = mTrackedJobs.get(jobStatus.getSourceUid());
if (jobs != null) {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
index 83a756c..847a1bf 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
@@ -159,8 +159,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob) {
if (taskStatus.clearTrackingController(JobStatus.TRACKING_CONTENT)) {
mTrackedTasks.remove(taskStatus);
if (taskStatus.contentObserverJobInstance != null) {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java
index abbe177..bdf72b6 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java
@@ -225,8 +225,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
if ((jobStatus.getFlags()&JobInfo.FLAG_IMPORTANT_WHILE_FOREGROUND) != 0) {
mAllowInIdleJobs.remove(jobStatus);
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/FlexibilityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/FlexibilityController.java
index 0eb9336..4c17692 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/FlexibilityController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/FlexibilityController.java
@@ -213,7 +213,7 @@
@Override
@GuardedBy("mLock")
- public void maybeStopTrackingJobLocked(JobStatus js, JobStatus incomingJob, boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus js, JobStatus incomingJob) {
if (js.clearTrackingController(JobStatus.TRACKING_FLEXIBILITY)) {
mFlexibilityAlarmQueue.removeAlarmForKey(js);
mFlexibilityTracker.remove(js);
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java
index 926cfc1..a25af71 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java
@@ -76,8 +76,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob) {
if (taskStatus.clearTrackingController(JobStatus.TRACKING_IDLE)) {
mTrackedTasks.remove(taskStatus);
}
@@ -86,7 +85,7 @@
@Override
public void stopTrackingRestrictedJobLocked(JobStatus jobStatus) {
if (!jobStatus.hasIdleConstraint()) {
- maybeStopTrackingJobLocked(jobStatus, null, false);
+ maybeStopTrackingJobLocked(jobStatus, null);
}
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/PrefetchController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/PrefetchController.java
index e04cec3..d69b9e0 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/PrefetchController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/PrefetchController.java
@@ -167,8 +167,7 @@
@Override
@GuardedBy("mLock")
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
final int userId = jobStatus.getSourceUserId();
final String pkgName = jobStatus.getSourcePackageName();
final ArraySet<JobStatus> jobs = mTrackedJobs.get(userId, pkgName);
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
index bb8d175..659e7c0 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
@@ -673,8 +673,7 @@
@Override
@GuardedBy("mLock")
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) {
unprepareFromExecutionLocked(jobStatus);
final int userId = jobStatus.getSourceUserId();
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
index 8453e53..0eedcf0 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
@@ -85,8 +85,7 @@
/**
* Remove task - this will happen if the task is cancelled, completed, etc.
*/
- public abstract void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate);
+ public abstract void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob);
/**
* Called when a new job is being created to reschedule an old failed job.
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java
index 1ce0a7f6..11e2ff7 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java
@@ -70,8 +70,7 @@
}
@Override
- public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob) {
if (taskStatus.clearTrackingController(JobStatus.TRACKING_STORAGE)) {
mTrackedTasks.remove(taskStatus);
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/TareController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/TareController.java
index b2ca3a0..cafb02d 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/TareController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/TareController.java
@@ -383,8 +383,7 @@
@Override
@GuardedBy("mLock")
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
final int userId = jobStatus.getSourceUserId();
final String pkgName = jobStatus.getSourcePackageName();
if (!mTopStartedJobs.remove(jobStatus) && jobStatus.madeActive > 0) {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java
index b6361ce..5195f28 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java
@@ -79,7 +79,7 @@
@Override
public void maybeStartTrackingJobLocked(JobStatus job, JobStatus lastJob) {
if (job.hasTimingDelayConstraint() || job.hasDeadlineConstraint()) {
- maybeStopTrackingJobLocked(job, null, false);
+ maybeStopTrackingJobLocked(job, null);
// First: check the constraints now, because if they are already satisfied
// then there is no need to track it. This gives us a fast path for a common
@@ -134,8 +134,7 @@
* tracking was the one our alarms were based off of.
*/
@Override
- public void maybeStopTrackingJobLocked(JobStatus job, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus job, JobStatus incomingJob) {
if (job.clearTrackingController(JobStatus.TRACKING_TIME)) {
if (mTrackedJobs.remove(job)) {
checkExpiredDelaysAndResetAlarm();
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 308e996..baa3bd9 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -227,6 +227,12 @@
public abstract boolean isModernQueueEnabled();
/**
+ * Enforce capability restrictions on use of the given BroadcastOptions
+ */
+ public abstract void enforceBroadcastOptionsPermissions(@Nullable Bundle options,
+ int callingUid);
+
+ /**
* Returns package name given pid.
*
* @param pid The pid we are searching package name for.
@@ -300,7 +306,7 @@
public abstract int handleIncomingUser(int callingPid, int callingUid, @UserIdInt int userId,
boolean allowAll, int allowMode, String name, String callerPackage);
- /** Checks if the calling binder pid as the permission. */
+ /** Checks if the calling binder pid/uid has the given permission. */
@PermissionMethod
public abstract void enforceCallingPermission(@PermissionName String permission, String func);
diff --git a/core/java/android/app/BroadcastOptions.java b/core/java/android/app/BroadcastOptions.java
index 48638d1..45d4458 100644
--- a/core/java/android/app/BroadcastOptions.java
+++ b/core/java/android/app/BroadcastOptions.java
@@ -636,6 +636,7 @@
* @param broadcastIsInteractive
* @see #isInteractiveBroadcast()
*/
+ @RequiresPermission(android.Manifest.permission.BROADCAST_OPTION_INTERACTIVE)
public void setInteractiveBroadcast(boolean broadcastIsInteractive) {
mIsInteractiveBroadcast = broadcastIsInteractive;
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index ff4588a..e664ebf 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1257,7 +1257,7 @@
mTmpFrames.attachedFrame = attachedFrame;
mTmpFrames.sizeCompatScale = sizeCompatScale[0];
mInvSizeCompatScale = 1f / sizeCompatScale[0];
- } catch (RemoteException e) {
+ } catch (RemoteException | RuntimeException e) {
mAdded = false;
mView = null;
mAttachInfo.mRootView = null;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 62c5848..953ea89 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3152,6 +3152,12 @@
<permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"
android:protectionLevel="signature|privileged|vendorPrivileged|oem|verifier|role"/>
+ <!-- Allows an application to hint that a broadcast is associated with an
+ "interactive" usage scenario
+ @hide -->
+ <permission android:name="android.permission.BROADCAST_OPTION_INTERACTIVE"
+ android:protectionLevel="signature|privileged" />
+
<!-- @SystemApi Must be required by activities that handle the intent action
{@link Intent#ACTION_SEND_SHOW_SUSPENDED_APP_DETAILS}. This is for use by apps that
hold {@link Manifest.permission#SUSPEND_APPS} to interact with the system.
diff --git a/core/tests/coretests/src/android/app/activity/BroadcastTest.java b/core/tests/coretests/src/android/app/activity/BroadcastTest.java
index 0f81896..7e875ad 100644
--- a/core/tests/coretests/src/android/app/activity/BroadcastTest.java
+++ b/core/tests/coretests/src/android/app/activity/BroadcastTest.java
@@ -18,6 +18,8 @@
import android.app.Activity;
import android.app.ActivityManager;
+import android.app.BroadcastOptions;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -536,4 +538,40 @@
Log.i("foo", "Unregister exception", e);
}
}
+
+ public void testBroadcastOption_interactive() throws Exception {
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractiveBroadcast(true);
+ final Intent intent = makeBroadcastIntent(BROADCAST_REGISTERED);
+
+ try {
+ getContext().sendBroadcast(intent, null, options.toBundle());
+ fail("No exception thrown with BroadcastOptions.setInteractiveBroadcast(true)");
+ } catch (SecurityException se) {
+ // Expected, correct behavior - this case intentionally empty
+ } catch (Exception e) {
+ fail("Unexpected exception " + e.getMessage()
+ + " thrown with BroadcastOptions.setInteractiveBroadcast(true)");
+ }
+ }
+
+ public void testBroadcastOption_interactive_PendingIntent() throws Exception {
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractiveBroadcast(true);
+ final Intent intent = makeBroadcastIntent(BROADCAST_REGISTERED);
+ PendingIntent brPending = PendingIntent.getBroadcast(getContext(),
+ 1, intent, PendingIntent.FLAG_IMMUTABLE);
+
+ try {
+ brPending.send(getContext(), 1, null, null, null, null, options.toBundle());
+ fail("No exception thrown with BroadcastOptions.setInteractiveBroadcast(true)");
+ } catch (SecurityException se) {
+ // Expected, correct behavior - this case intentionally empty
+ } catch (Exception e) {
+ fail("Unexpected exception " + e.getMessage()
+ + " thrown with BroadcastOptions.setInteractiveBroadcast(true)");
+ } finally {
+ brPending.cancel();
+ }
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index 63d31cd..89205a6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -341,6 +341,15 @@
final SurfaceControl leash = change.getLeash();
final int mode = info.getChanges().get(i).getMode();
+ if (mode == TRANSIT_TO_FRONT
+ && ((change.getStartAbsBounds().height() != change.getEndAbsBounds().height()
+ || change.getStartAbsBounds().width() != change.getEndAbsBounds().width()))) {
+ // When the window is moved to front with a different size, make sure the crop is
+ // updated to prevent it from using the old crop.
+ t.setWindowCrop(leash, change.getEndAbsBounds().width(),
+ change.getEndAbsBounds().height());
+ }
+
// Don't move anything that isn't independent within its parents
if (!TransitionInfo.isIndependent(change, info)) {
if (mode == TRANSIT_OPEN || mode == TRANSIT_TO_FRONT || mode == TRANSIT_CHANGE) {
diff --git a/libs/WindowManager/Shell/tests/flicker/AndroidTest.xml b/libs/WindowManager/Shell/tests/flicker/AndroidTest.xml
index 2d6e8f5..d8ea0a5 100644
--- a/libs/WindowManager/Shell/tests/flicker/AndroidTest.xml
+++ b/libs/WindowManager/Shell/tests/flicker/AndroidTest.xml
@@ -13,6 +13,8 @@
<option name="run-command" value="cmd window tracing level all" />
<!-- set WM tracing to frame (avoid incomplete states) -->
<option name="run-command" value="cmd window tracing frame" />
+ <!-- set Layer tracing buffer size to 50mb -->
+ <option name="run-command" value="su root service call SurfaceFlinger 1029 i32 51200" />
<!-- ensure lock screen mode is swipe -->
<option name="run-command" value="locksettings set-disabled false" />
<!-- restart launcher to activate TAPL -->
diff --git a/packages/SettingsLib/ProfileSelector/Android.bp b/packages/SettingsLib/ProfileSelector/Android.bp
index 7846e67..250cd75 100644
--- a/packages/SettingsLib/ProfileSelector/Android.bp
+++ b/packages/SettingsLib/ProfileSelector/Android.bp
@@ -22,5 +22,6 @@
min_sdk_version: "23",
apex_available: [
"//apex_available:platform",
+ "com.android.mediaprovider",
],
}
diff --git a/packages/SettingsLib/SelectorWithWidgetPreference/Android.bp b/packages/SettingsLib/SelectorWithWidgetPreference/Android.bp
index bcc64d3..b5a21bd 100644
--- a/packages/SettingsLib/SelectorWithWidgetPreference/Android.bp
+++ b/packages/SettingsLib/SelectorWithWidgetPreference/Android.bp
@@ -23,5 +23,6 @@
apex_available: [
"//apex_available:platform",
"com.android.permission",
+ "com.android.mediaprovider",
],
}
diff --git a/packages/SettingsLib/SettingsTheme/Android.bp b/packages/SettingsLib/SettingsTheme/Android.bp
index 82e0220..939977f 100644
--- a/packages/SettingsLib/SettingsTheme/Android.bp
+++ b/packages/SettingsLib/SettingsTheme/Android.bp
@@ -24,5 +24,6 @@
"com.android.permission",
"com.android.adservices",
"com.android.healthconnect",
+ "com.android.mediaprovider",
],
}
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index 3ecb15b..5894fd3 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -115,7 +115,6 @@
private final SecureSettings mSecureSettings;
private final Executor mMainExecutor;
private final Handler mBgHandler;
- private final boolean mIsMonochromaticEnabled;
private final Context mContext;
private final boolean mIsMonetEnabled;
private final UserTracker mUserTracker;
@@ -365,7 +364,6 @@
UserTracker userTracker, DumpManager dumpManager, FeatureFlags featureFlags,
@Main Resources resources, WakefulnessLifecycle wakefulnessLifecycle) {
mContext = context;
- mIsMonochromaticEnabled = featureFlags.isEnabled(Flags.MONOCHROMATIC_THEMES);
mIsMonetEnabled = featureFlags.isEnabled(Flags.MONET);
mDeviceProvisionedController = deviceProvisionedController;
mBroadcastDispatcher = broadcastDispatcher;
@@ -669,11 +667,8 @@
// used as a system-wide theme.
// - Content intentionally excluded, intended for media player, not system-wide
List<Style> validStyles = new ArrayList<>(Arrays.asList(Style.EXPRESSIVE, Style.SPRITZ,
- Style.TONAL_SPOT, Style.FRUIT_SALAD, Style.RAINBOW, Style.VIBRANT));
-
- if (mIsMonochromaticEnabled) {
- validStyles.add(Style.MONOCHROMATIC);
- }
+ Style.TONAL_SPOT, Style.FRUIT_SALAD, Style.RAINBOW, Style.VIBRANT,
+ Style.MONOCHROMATIC));
Style style = mThemeStyle;
final String overlayPackageJson = mSecureSettings.getStringForUser(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
index 8ef65dc..a36105e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
@@ -16,6 +16,7 @@
package com.android.systemui.accessibility.floatingmenu;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.testing.AndroidTestingRunner;
@@ -47,7 +48,7 @@
stubWindowManager);
final MenuView stubMenuView = new MenuView(mContext, stubMenuViewModel,
stubMenuViewAppearance);
- mDismissView = new DismissView(mContext);
+ mDismissView = spy(new DismissView(mContext));
mDismissAnimationController = new DismissAnimationController(mDismissView, stubMenuView);
}
diff --git a/services/core/java/android/os/BatteryStatsInternal.java b/services/core/java/android/os/BatteryStatsInternal.java
index 41044bf..b70cbe3 100644
--- a/services/core/java/android/os/BatteryStatsInternal.java
+++ b/services/core/java/android/os/BatteryStatsInternal.java
@@ -27,7 +27,6 @@
import java.util.Collection;
import java.util.List;
-
/**
* Battery stats local system service interface. This is used to pass internal data out of
* BatteryStatsImpl, as well as make unchecked calls into BatteryStatsImpl.
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index c954957..aa5d17c 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -13828,6 +13828,25 @@
}
}
+ // Apply permission policy around the use of specific broadcast options
+ void enforceBroadcastOptionPermissionsInternal(@Nullable Bundle options, int callingUid) {
+ if (options != null && callingUid != Process.SYSTEM_UID) {
+ if (options.containsKey(BroadcastOptions.KEY_ALARM_BROADCAST)) {
+ if (DEBUG_BROADCAST_LIGHT) {
+ Slog.w(TAG, "Non-system caller " + callingUid
+ + " may not flag broadcast as alarm");
+ }
+ throw new SecurityException(
+ "Non-system callers may not flag broadcasts as alarm");
+ }
+ if (options.containsKey(BroadcastOptions.KEY_INTERACTIVE_BROADCAST)) {
+ enforceCallingPermission(
+ android.Manifest.permission.BROADCAST_OPTION_INTERACTIVE,
+ "setInteractiveBroadcast");
+ }
+ }
+ }
+
@GuardedBy("this")
final int broadcastIntentLocked(ProcessRecord callerApp,
String callerPackage, String callerFeatureId, Intent intent, String resolvedType,
@@ -14695,19 +14714,8 @@
// We're delivering the result to the caller
final ProcessRecord resultToApp = callerApp;
- // Non-system callers can't declare that a broadcast is alarm-related.
- // The PendingIntent invocation case is handled in PendingIntentRecord.
- if (bOptions != null && callingUid != SYSTEM_UID) {
- if (bOptions.containsKey(BroadcastOptions.KEY_ALARM_BROADCAST)
- || bOptions.containsKey(BroadcastOptions.KEY_INTERACTIVE_BROADCAST)) {
- if (DEBUG_BROADCAST) {
- Slog.w(TAG, "Non-system caller " + callingUid
- + " may not flag broadcast as alarm or interactive");
- }
- throw new SecurityException(
- "Non-system callers may not flag broadcasts as alarm or interactive");
- }
- }
+ // Permission regimes around sender-supplied broadcast options.
+ enforceBroadcastOptionPermissionsInternal(bOptions, callingUid);
final long origId = Binder.clearCallingIdentity();
try {
@@ -16901,6 +16909,11 @@
return mEnableModernQueue;
}
+ @Override
+ public void enforceBroadcastOptionsPermissions(Bundle options, int callingUid) {
+ enforceBroadcastOptionPermissionsInternal(options, callingUid);
+ }
+
/**
* Returns package name by pid.
*/
diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java
index 14a1697..3f5f3bc 100644
--- a/services/core/java/com/android/server/am/PendingIntentRecord.java
+++ b/services/core/java/com/android/server/am/PendingIntentRecord.java
@@ -18,7 +18,6 @@
import static android.app.ActivityManager.START_SUCCESS;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_LIGHT;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -36,7 +35,6 @@
import android.os.IBinder;
import android.os.PowerWhitelistManager;
import android.os.PowerWhitelistManager.ReasonCode;
-import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.TransactionTooLargeException;
@@ -441,17 +439,8 @@
// Only system senders can declare a broadcast to be alarm-originated. We check
// this here rather than in the general case handling below to fail before the other
// invocation side effects such as allowlisting.
- if (options != null && callingUid != Process.SYSTEM_UID
- && key.type == ActivityManager.INTENT_SENDER_BROADCAST) {
- if (options.containsKey(BroadcastOptions.KEY_ALARM_BROADCAST)
- || options.containsKey(BroadcastOptions.KEY_INTERACTIVE_BROADCAST)) {
- if (DEBUG_BROADCAST_LIGHT) {
- Slog.w(TAG, "Non-system caller " + callingUid
- + " may not flag broadcast as alarm or interactive");
- }
- throw new SecurityException(
- "Non-system callers may not flag broadcasts as alarm or interactive");
- }
+ if (key.type == ActivityManager.INTENT_SENDER_BROADCAST) {
+ controller.mAmInternal.enforceBroadcastOptionsPermissions(options, callingUid);
}
final long origId = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 82d239f..d296a8e 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -2185,8 +2185,6 @@
mHandler.sendMessage(mHandler.obtainMessage(COMPLETE_USER_SWITCH_MSG, newUserId, 0));
uss.switching = false;
- mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
- mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG, newUserId, 0));
stopGuestOrEphemeralUserIfBackground(oldUserId);
stopUserOnSwitchIfEnforced(oldUserId);
if (oldUserId == UserHandle.USER_SYSTEM) {
@@ -2200,20 +2198,20 @@
@VisibleForTesting
void completeUserSwitch(int newUserId) {
+ final Runnable runnable = () -> {
+ unfreezeScreen();
+ mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
+ mHandler.sendMessage(mHandler.obtainMessage(
+ REPORT_USER_SWITCH_COMPLETE_MSG, newUserId, 0));
+ };
+
if (isUserSwitchUiEnabled()) {
// If there is no challenge set, dismiss the keyguard right away
if (!mInjector.getKeyguardManager().isDeviceSecure(newUserId)) {
// Wait until the keyguard is dismissed to unfreeze
- mInjector.dismissKeyguard(
- new Runnable() {
- public void run() {
- unfreezeScreen();
- }
- },
- "User Switch");
- return;
+ mInjector.dismissKeyguard(runnable, "User Switch");
} else {
- unfreezeScreen();
+ runnable.run();
}
}
}
diff --git a/services/core/java/com/android/server/power/stats/CpuWakeupStats.java b/services/core/java/com/android/server/power/stats/CpuWakeupStats.java
index 5f76fbc..79e35c2 100644
--- a/services/core/java/com/android/server/power/stats/CpuWakeupStats.java
+++ b/services/core/java/com/android/server/power/stats/CpuWakeupStats.java
@@ -384,7 +384,7 @@
private static final class Wakeup {
private static final String PARSER_TAG = "CpuWakeupStats.Wakeup";
private static final String ABORT_REASON_PREFIX = "Abort";
- private static final Pattern sIrqPattern = Pattern.compile("(\\d+)\\s+(\\S+)");
+ private static final Pattern sIrqPattern = Pattern.compile("^(\\d+)\\s+(\\S+)");
String mRawReason;
long mElapsedMillis;
@@ -409,7 +409,7 @@
IrqDevice[] parsedDevices = new IrqDevice[components.length];
for (String component : components) {
- final Matcher matcher = sIrqPattern.matcher(component);
+ final Matcher matcher = sIrqPattern.matcher(component.trim());
if (matcher.find()) {
final int line;
final String device;
diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java
index b9fa80c..7e56dbf 100644
--- a/services/core/java/com/android/server/wm/InsetsPolicy.java
+++ b/services/core/java/com/android/server/wm/InsetsPolicy.java
@@ -26,7 +26,6 @@
import static android.view.InsetsController.ANIMATION_TYPE_SHOW;
import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_HIDDEN;
import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_SHOWN;
-import static android.view.InsetsState.ITYPE_CAPTION_BAR;
import static android.view.InsetsState.ITYPE_CLIMATE_BAR;
import static android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR;
import static android.view.InsetsState.ITYPE_IME;
@@ -289,9 +288,8 @@
final boolean alwaysOnTop = token != null && token.isAlwaysOnTop();
// Always use windowing mode fullscreen when get insets for window metrics to make sure it
// contains all insets types.
- final InsetsState originalState = mDisplayContent.getInsetsPolicy()
- .enforceInsetsPolicyForTarget(type, WINDOWING_MODE_FULLSCREEN, alwaysOnTop,
- attrs.type, mStateController.getRawInsetsState());
+ final InsetsState originalState = enforceInsetsPolicyForTarget(WINDOWING_MODE_FULLSCREEN,
+ alwaysOnTop, attrs, mStateController.getRawInsetsState());
InsetsState state = adjustVisibilityForTransientTypes(originalState);
return adjustInsetsForRoundedCorners(token, state, state == originalState);
}
@@ -343,56 +341,42 @@
/**
- * Modifies the given {@code state} according to the {@code type} (Inset type) provided by
- * the target.
- * When performing layout of the target or dispatching insets to the target, we need to exclude
- * sources which should not be visible to the target. e.g., the source which represents the
- * target window itself, and the IME source when the target is above IME. We also need to
- * exclude certain types of insets source for client within specific windowing modes.
+ * Modifies the given {@code state} according to the target's window state.
+ * When performing layout of the target or dispatching insets to the target, we need to adjust
+ * sources based on the target. e.g., the floating window will not receive system bars other
+ * than caption, and some insets provider may request to override sizes for given window types.
+ * Since the window type and the insets types provided by the window shall not change at
+ * runtime, rotation doesn't matter in the layout params.
*
- * @param type the inset type provided by the target
* @param windowingMode the windowing mode of the target
* @param isAlwaysOnTop is the target always on top
- * @param windowType the type of the target
+ * @param attrs the layout params of the target
* @param state the input inset state containing all the sources
* @return The state stripped of the necessary information.
*/
- InsetsState enforceInsetsPolicyForTarget(@InternalInsetsType int type,
- @WindowConfiguration.WindowingMode int windowingMode, boolean isAlwaysOnTop,
- int windowType, InsetsState state) {
+ InsetsState enforceInsetsPolicyForTarget(@WindowConfiguration.WindowingMode int windowingMode,
+ boolean isAlwaysOnTop, WindowManager.LayoutParams attrs, InsetsState state) {
boolean stateCopied = false;
- if (type != ITYPE_INVALID) {
+ if (attrs.providedInsets != null && attrs.providedInsets.length > 0) {
state = new InsetsState(state);
stateCopied = true;
- state.removeSource(type);
-
- // Navigation bar doesn't get influenced by anything else
- if (type == ITYPE_NAVIGATION_BAR || type == ITYPE_EXTRA_NAVIGATION_BAR) {
- state.removeSource(ITYPE_STATUS_BAR);
- state.removeSource(ITYPE_CLIMATE_BAR);
- state.removeSource(ITYPE_CAPTION_BAR);
- state.removeSource(ITYPE_NAVIGATION_BAR);
- state.removeSource(ITYPE_EXTRA_NAVIGATION_BAR);
- }
-
- // Status bar doesn't get influenced by caption bar
- if (type == ITYPE_STATUS_BAR || type == ITYPE_CLIMATE_BAR) {
- state.removeSource(ITYPE_CAPTION_BAR);
+ for (int i = attrs.providedInsets.length - 1; i >= 0; i--) {
+ state.removeSource(attrs.providedInsets[i].type);
}
}
ArrayMap<Integer, WindowContainerInsetsSourceProvider> providers = mStateController
.getSourceProviders();
for (int i = providers.size() - 1; i >= 0; i--) {
WindowContainerInsetsSourceProvider otherProvider = providers.valueAt(i);
- if (otherProvider.overridesFrame(windowType)) {
+ if (otherProvider.overridesFrame(attrs.type)) {
if (!stateCopied) {
state = new InsetsState(state);
stateCopied = true;
}
InsetsSource override =
new InsetsSource(state.getSource(otherProvider.getSource().getType()));
- override.setFrame(otherProvider.getOverriddenFrame(windowType));
+ override.setFrame(otherProvider.getOverriddenFrame(attrs.type));
state.addSource(override);
}
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index ef7be82..f30c435 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -29,7 +29,6 @@
import static android.os.PowerManager.DRAW_WAKE_LOCK;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.InsetsState.ITYPE_IME;
-import static android.view.InsetsState.ITYPE_INVALID;
import static android.view.SurfaceControl.Transaction;
import static android.view.SurfaceControl.getGlobalTransaction;
import static android.view.ViewRootImpl.LOCAL_LAYOUT;
@@ -1673,14 +1672,11 @@
if (rotatedState != null) {
return insetsPolicy.adjustInsetsForWindow(this, rotatedState);
}
- final InsetsSourceProvider provider = getControllableInsetProvider();
- final @InternalInsetsType int insetTypeProvidedByWindow = provider != null
- ? provider.getSource().getType() : ITYPE_INVALID;
final InsetsState rawInsetsState =
mFrozenInsetsState != null ? mFrozenInsetsState : getMergedInsetsState();
final InsetsState insetsStateForWindow = insetsPolicy
- .enforceInsetsPolicyForTarget(insetTypeProvidedByWindow,
- getWindowingMode(), isAlwaysOnTop(), mAttrs.type, rawInsetsState);
+ .enforceInsetsPolicyForTarget(
+ getWindowingMode(), isAlwaysOnTop(), mAttrs, rawInsetsState);
return insetsPolicy.adjustInsetsForWindow(this, insetsStateForWindow,
includeTransient);
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/BatteryControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/BatteryControllerTest.java
index 59cb43f..7c435be 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/BatteryControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/BatteryControllerTest.java
@@ -432,10 +432,10 @@
assertFalse(topStartedJobs.contains(unrelatedJob));
// Job cleanup
- mBatteryController.maybeStopTrackingJobLocked(batteryJob, null, false);
- mBatteryController.maybeStopTrackingJobLocked(chargingJob, null, false);
- mBatteryController.maybeStopTrackingJobLocked(bothPowerJob, null, false);
- mBatteryController.maybeStopTrackingJobLocked(unrelatedJob, null, false);
+ mBatteryController.maybeStopTrackingJobLocked(batteryJob, null);
+ mBatteryController.maybeStopTrackingJobLocked(chargingJob, null);
+ mBatteryController.maybeStopTrackingJobLocked(bothPowerJob, null);
+ mBatteryController.maybeStopTrackingJobLocked(unrelatedJob, null);
assertFalse(trackedJobs.contains(batteryJob));
assertFalse(trackedJobs.contains(chargingJob));
assertFalse(trackedJobs.contains(bothPowerJob));
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
index bc7757b..17822c6 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
@@ -1356,7 +1356,7 @@
synchronized (mQuotaController.mLock) {
assertEquals(JobSchedulerService.Constants.DEFAULT_RUNTIME_FREE_QUOTA_MAX_LIMIT_MS,
mQuotaController.getMaxJobExecutionTimeMsLocked((job)));
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
setProcessState(ActivityManager.PROCESS_STATE_RECEIVER);
@@ -1441,7 +1441,7 @@
synchronized (mQuotaController.mLock) {
assertEquals(mQcConstants.EJ_LIMIT_ACTIVE_MS / 2,
mQuotaController.getMaxJobExecutionTimeMsLocked(job));
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
setProcessState(ActivityManager.PROCESS_STATE_RECEIVER);
@@ -1474,7 +1474,7 @@
synchronized (mQuotaController.mLock) {
assertEquals(mQcConstants.EJ_LIMIT_ACTIVE_MS / 2,
mQuotaController.getMaxJobExecutionTimeMsLocked(job));
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
setProcessState(ActivityManager.PROCESS_STATE_RECEIVER);
@@ -2017,7 +2017,7 @@
setProcessState(ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND);
}
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(15 * SECOND_IN_MILLIS);
@@ -2032,7 +2032,7 @@
setProcessState(ActivityManager.PROCESS_STATE_RECEIVER);
}
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(10 * MINUTE_IN_MILLIS + 30 * SECOND_IN_MILLIS);
@@ -2090,7 +2090,7 @@
setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING, fgChangerUid);
}
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null);
}
advanceElapsedClock(15 * SECOND_IN_MILLIS);
@@ -2105,9 +2105,9 @@
setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING, fgChangerUid);
}
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null);
- mQuotaController.maybeStopTrackingJobLocked(unaffected, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(unaffected, null);
assertTrue(mQuotaController.isWithinQuotaLocked(unaffected));
assertTrue(unaffected.isReady());
@@ -2226,8 +2226,8 @@
advanceElapsedClock(MINUTE_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, null, false);
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job1, null);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
assertFalse(mQuotaController
.isWithinQuotaLocked(SOURCE_USER_ID, SOURCE_PACKAGE, WORKING_INDEX));
assertEquals(7 * MINUTE_IN_MILLIS, stats.allowedTimePerPeriodMs);
@@ -2312,8 +2312,8 @@
advanceElapsedClock(MINUTE_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, null, false);
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job1, null);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
assertFalse(mQuotaController
.isWithinQuotaLocked(SOURCE_USER_ID, SOURCE_PACKAGE, WORKING_INDEX));
assertEquals(12, stats.jobCountLimit);
@@ -2390,7 +2390,7 @@
advanceElapsedClock(MINUTE_IN_MILLIS);
mAppIdleStateChangeListener.triggerTemporaryQuotaBump(SOURCE_PACKAGE, SOURCE_USER_ID);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job1, null);
assertTrue(mQuotaController
.isWithinQuotaLocked(SOURCE_USER_ID, SOURCE_PACKAGE, WORKING_INDEX));
assertEquals(4, stats.sessionCountLimit);
@@ -2404,7 +2404,7 @@
advanceElapsedClock(MINUTE_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
assertFalse(mQuotaController
.isWithinQuotaLocked(SOURCE_USER_ID, SOURCE_PACKAGE, WORKING_INDEX));
assertEquals(4, stats.sessionCountLimit);
@@ -3725,7 +3725,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
@@ -3751,7 +3751,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 5 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3780,7 +3780,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
@@ -3788,11 +3788,11 @@
}
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
expected.add(createTimingSession(start, MINUTE_IN_MILLIS, 3));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3833,7 +3833,7 @@
long start = JobSchedulerService.sElapsedRealtimeClock.millis();
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, jobStatus, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, jobStatus);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3864,18 +3864,18 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
setDischarging();
start = JobSchedulerService.sElapsedRealtimeClock.millis();
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3893,7 +3893,7 @@
setCharging();
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
@@ -3919,7 +3919,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 5 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3948,7 +3948,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
@@ -3956,11 +3956,11 @@
}
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
expected.add(createTimingSession(start, MINUTE_IN_MILLIS, 3));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -3987,7 +3987,7 @@
setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
@@ -4019,7 +4019,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4044,11 +4044,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4077,7 +4077,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS); // UID "inactive" now
start = JobSchedulerService.sElapsedRealtimeClock.millis();
@@ -4087,11 +4087,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4130,11 +4130,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg1, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg2, null);
}
assertNull(mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4169,11 +4169,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
assertEquals(2, stats.jobCountInRateLimitingWindow);
@@ -4207,7 +4207,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4232,11 +4232,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4267,7 +4267,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
@@ -4284,12 +4284,12 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
- mQuotaController.maybeStopTrackingJobLocked(jobFg1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg1, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
assertEquals(expected, mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4326,7 +4326,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, job1, true);
+ mQuotaController.maybeStopTrackingJobLocked(job1, job1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -4343,7 +4343,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -4362,7 +4362,7 @@
long elapsedGracePeriodMs = 2 * SECOND_IN_MILLIS;
advanceElapsedClock(elapsedGracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job3, null);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS + elapsedGracePeriodMs, 1));
assertEquals(expected,
@@ -4387,7 +4387,7 @@
advanceElapsedClock(10 * SECOND_IN_MILLIS);
expected.add(createTimingSession(start, remainingGracePeriod + 10 * SECOND_IN_MILLIS, 1));
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job4, job4, true);
+ mQuotaController.maybeStopTrackingJobLocked(job4, job4);
}
assertEquals(expected,
mQuotaController.getTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -4401,7 +4401,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job5, job5, true);
+ mQuotaController.maybeStopTrackingJobLocked(job5, job5);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -4638,7 +4638,7 @@
}
advanceElapsedClock(SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
advanceElapsedClock(SECOND_IN_MILLIS);
}
@@ -4709,7 +4709,7 @@
}
advanceElapsedClock(SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
advanceElapsedClock(SECOND_IN_MILLIS);
}
@@ -5432,7 +5432,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
assertNull(mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
@@ -5458,7 +5458,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 5 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5488,7 +5488,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
@@ -5496,11 +5496,11 @@
}
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
expected.add(createTimingSession(start, MINUTE_IN_MILLIS, 3));
assertEquals(expected,
@@ -5545,7 +5545,7 @@
long start = JobSchedulerService.sElapsedRealtimeClock.millis();
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, jobStatus, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, jobStatus);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5577,18 +5577,18 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
setDischarging();
start = JobSchedulerService.sElapsedRealtimeClock.millis();
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5607,7 +5607,7 @@
setCharging();
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -5634,7 +5634,7 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
expected.add(createTimingSession(start, 5 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5664,7 +5664,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
@@ -5672,11 +5672,11 @@
}
advanceElapsedClock(20 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus2, null);
}
expected.add(createTimingSession(start, MINUTE_IN_MILLIS, 3));
assertEquals(expected,
@@ -5704,7 +5704,7 @@
setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobStatus, null);
}
assertNull(mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
}
@@ -5739,7 +5739,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5765,11 +5765,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -5799,7 +5799,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS); // UID "inactive" now
start = JobSchedulerService.sElapsedRealtimeClock.millis();
@@ -5809,11 +5809,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobFg3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg3, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
assertEquals(expected,
@@ -5849,7 +5849,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5875,11 +5875,11 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -5911,7 +5911,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg1, jobBg1);
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
setProcessState(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
@@ -5928,12 +5928,12 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobTop, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobTop, null);
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobBg2, null, false);
- mQuotaController.maybeStopTrackingJobLocked(jobFg1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobBg2, null);
+ mQuotaController.maybeStopTrackingJobLocked(jobFg1, null);
}
expected.add(createTimingSession(start, 20 * SECOND_IN_MILLIS, 2));
assertEquals(expected,
@@ -5970,7 +5970,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, job1, true);
+ mQuotaController.maybeStopTrackingJobLocked(job1, job1);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -5987,7 +5987,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6005,7 +6005,7 @@
long elapsedGracePeriodMs = 2 * SECOND_IN_MILLIS;
advanceElapsedClock(elapsedGracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job3, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job3, null);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6029,7 +6029,7 @@
advanceElapsedClock(10 * SECOND_IN_MILLIS);
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job4, job4, true);
+ mQuotaController.maybeStopTrackingJobLocked(job4, job4);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6043,7 +6043,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job5, job5, true);
+ mQuotaController.maybeStopTrackingJobLocked(job5, job5);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6073,7 +6073,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, job, true);
+ mQuotaController.maybeStopTrackingJobLocked(job, job);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6090,7 +6090,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6109,7 +6109,7 @@
long elapsedGracePeriodMs = 2 * SECOND_IN_MILLIS;
advanceElapsedClock(elapsedGracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job, null);
}
expected.add(createTimingSession(start, 12 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6134,7 +6134,7 @@
advanceElapsedClock(10 * SECOND_IN_MILLIS);
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS + remainingGracePeriod, 1));
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, job, true);
+ mQuotaController.maybeStopTrackingJobLocked(job, job);
}
assertEquals(expected,
mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6148,7 +6148,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job, job, true);
+ mQuotaController.maybeStopTrackingJobLocked(job, job);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6193,7 +6193,7 @@
// Wait for the grace period to expire so the handler can process the message.
Thread.sleep(gracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job1, job1, true);
+ mQuotaController.maybeStopTrackingJobLocked(job1, job1);
}
assertNull(mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6213,7 +6213,7 @@
// Wait for the grace period to expire so the handler can process the message.
Thread.sleep(gracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(job2, null);
}
assertNull(mQuotaController.getEJTimingSessions(SOURCE_USER_ID, SOURCE_PACKAGE));
@@ -6239,7 +6239,7 @@
Thread.sleep(2 * gracePeriodMs);
advanceElapsedClock(gracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job3, job3, true);
+ mQuotaController.maybeStopTrackingJobLocked(job3, job3);
}
expected.add(createTimingSession(start, gracePeriodMs, 1));
assertEquals(expected,
@@ -6267,7 +6267,7 @@
Thread.sleep(2 * gracePeriodMs);
advanceElapsedClock(gracePeriodMs);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job4, job4, true);
+ mQuotaController.maybeStopTrackingJobLocked(job4, job4);
}
expected.add(createTimingSession(start, gracePeriodMs, 1));
assertEquals(expected,
@@ -6294,7 +6294,7 @@
Thread.sleep(2 * gracePeriodMs);
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(job5, job5, true);
+ mQuotaController.maybeStopTrackingJobLocked(job5, job5);
}
expected.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expected,
@@ -6448,7 +6448,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobReg1, jobReg1, true);
+ mQuotaController.maybeStopTrackingJobLocked(jobReg1, jobReg1);
}
expectedRegular.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expectedRegular,
@@ -6464,7 +6464,7 @@
}
advanceElapsedClock(10 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobEJ1, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobEJ1, null);
}
expectedEJ.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
assertEquals(expectedRegular,
@@ -6485,12 +6485,12 @@
}
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobEJ2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobEJ2, null);
}
expectedEJ.add(createTimingSession(start, 10 * SECOND_IN_MILLIS, 1));
advanceElapsedClock(5 * SECOND_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(jobReg2, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(jobReg2, null);
}
expectedRegular.add(
createTimingSession(start + 5 * SECOND_IN_MILLIS, 10 * SECOND_IN_MILLIS, 1));
@@ -6580,7 +6580,7 @@
}
advanceElapsedClock(5000);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(regJob, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(regJob, null);
}
assertEquals(0, debit.getTallyLocked());
assertEquals(10 * MINUTE_IN_MILLIS,
@@ -6594,7 +6594,7 @@
}
advanceElapsedClock(5 * MINUTE_IN_MILLIS);
synchronized (mQuotaController.mLock) {
- mQuotaController.maybeStopTrackingJobLocked(eJob, null, false);
+ mQuotaController.maybeStopTrackingJobLocked(eJob, null);
}
assertEquals(5 * MINUTE_IN_MILLIS, debit.getTallyLocked());
assertEquals(5 * MINUTE_IN_MILLIS,
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java
index 612e906..51d641b 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java
@@ -81,8 +81,7 @@
public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) {
}
- public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
- boolean forUpdate) {
+ public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
}
public void dumpControllerStateLocked(IndentingPrintWriter pw,
diff --git a/services/tests/servicestests/src/com/android/server/power/stats/CpuWakeupStatsTest.java b/services/tests/servicestests/src/com/android/server/power/stats/CpuWakeupStatsTest.java
index 7731a32..c2556e9 100644
--- a/services/tests/servicestests/src/com/android/server/power/stats/CpuWakeupStatsTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/stats/CpuWakeupStatsTest.java
@@ -44,7 +44,9 @@
public class CpuWakeupStatsTest {
private static final String KERNEL_REASON_ALARM_IRQ = "120 test.alarm.device";
private static final String KERNEL_REASON_UNKNOWN_IRQ = "140 test.unknown.device";
- private static final String KERNEL_REASON_UNKNOWN = "unsupported-free-form-reason";
+ private static final String KERNEL_REASON_UNKNOWN = "free-form-reason test.alarm.device";
+ private static final String KERNEL_REASON_UNSUPPORTED = "-1 test.alarm.device";
+ private static final String KERNEL_REASON_ABORT = "Abort: due to test.alarm.device";
private static final int TEST_UID_1 = 13239823;
private static final int TEST_UID_2 = 25268423;
@@ -57,6 +59,7 @@
@Test
public void removesOldWakeups() {
+ // The xml resource doesn't matter for this test.
final CpuWakeupStats obj = new CpuWakeupStats(sContext, R.xml.irq_device_map_1);
final Set<Long> timestamps = new HashSet<>();
@@ -165,11 +168,36 @@
obj.noteWakeupTimeAndReason(wakeupTime, 34, KERNEL_REASON_UNKNOWN);
- // Unrelated subsystems, should be ignored.
+ // Should be ignored as this type of wakeup is unsupported.
obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime + 5, TEST_UID_3);
obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime - 3, TEST_UID_4);
// There should be nothing in the attribution map.
assertThat(obj.mWakeupAttribution.size()).isEqualTo(0);
}
+
+ @Test
+ public void unsupportedAttribution() {
+ final CpuWakeupStats obj = new CpuWakeupStats(sContext, R.xml.irq_device_map_3);
+
+ long wakeupTime = 970934;
+ obj.noteWakeupTimeAndReason(wakeupTime, 34, KERNEL_REASON_UNSUPPORTED);
+
+ // Should be ignored as this type of wakeup is unsupported.
+ obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime + 5, TEST_UID_3);
+ obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime - 3, TEST_UID_4);
+
+ // There should be nothing in the attribution map.
+ assertThat(obj.mWakeupAttribution.size()).isEqualTo(0);
+
+ wakeupTime = 883124;
+ obj.noteWakeupTimeAndReason(wakeupTime, 3, KERNEL_REASON_ABORT);
+
+ // Should be ignored as this type of wakeup is unsupported.
+ obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime + 2, TEST_UID_1, TEST_UID_4);
+ obj.noteWakingActivity(CPU_WAKEUP_SUBSYSTEM_ALARM, wakeupTime - 5, TEST_UID_3);
+
+ // There should be nothing in the attribution map.
+ assertThat(obj.mWakeupAttribution.size()).isEqualTo(0);
+ }
}
diff --git a/telephony/java/android/telephony/ims/ImsService.java b/telephony/java/android/telephony/ims/ImsService.java
index e8642fe..a3cbb4a 100644
--- a/telephony/java/android/telephony/ims/ImsService.java
+++ b/telephony/java/android/telephony/ims/ImsService.java
@@ -458,8 +458,8 @@
}
}
- private IImsRcsFeature createRcsFeatureInternal(int slotId, int subI) {
- RcsFeature f = createRcsFeatureForSubscription(slotId, subI);
+ private IImsRcsFeature createRcsFeatureInternal(int slotId, int subId) {
+ RcsFeature f = createRcsFeatureForSubscription(slotId, subId);
if (f != null) {
f.setDefaultExecutor(getCachedExecutor());
setupFeature(f, slotId, ImsFeature.FEATURE_RCS);
diff --git a/telephony/java/android/telephony/ims/feature/ImsFeature.java b/telephony/java/android/telephony/ims/feature/ImsFeature.java
index f5b158f..a42327b 100644
--- a/telephony/java/android/telephony/ims/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/feature/ImsFeature.java
@@ -394,10 +394,12 @@
@VisibleForTesting
public void addImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) {
try {
- // If we have just connected, send queued status.
- c.notifyImsFeatureStatus(getFeatureState());
- // Add the callback if the callback completes successfully without a RemoteException.
- mStatusCallbacks.register(c);
+ synchronized (mStatusCallbacks) {
+ // Add the callback if the callback completes successfully without a RemoteException
+ mStatusCallbacks.register(c);
+ // If we have just connected, send queued status.
+ c.notifyImsFeatureStatus(getFeatureState());
+ }
} catch (RemoteException e) {
Log.w(LOG_TAG, "Couldn't notify feature state: " + e.getMessage());
}
@@ -409,7 +411,9 @@
*/
@VisibleForTesting
public void removeImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) {
- mStatusCallbacks.unregister(c);
+ synchronized (mStatusCallbacks) {
+ mStatusCallbacks.unregister(c);
+ }
}
/**
diff --git a/tests/FlickerTests/AndroidTest.xml b/tests/FlickerTests/AndroidTest.xml
index d91aa1e..03eb462 100644
--- a/tests/FlickerTests/AndroidTest.xml
+++ b/tests/FlickerTests/AndroidTest.xml
@@ -13,6 +13,8 @@
<option name="run-command" value="cmd window tracing level all" />
<!-- set WM tracing to frame (avoid incomplete states) -->
<option name="run-command" value="cmd window tracing frame" />
+ <!-- set Layer tracing buffer size to 50mb -->
+ <option name="run-command" value="su root service call SurfaceFlinger 1029 i32 51200" />
<!-- ensure lock screen mode is swipe -->
<option name="run-command" value="locksettings set-disabled false" />
<!-- restart launcher to activate TAPL -->