Merge "Ensure paused ops are finished correctly" into sc-dev am: 477fdc1a3b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14523044

Change-Id: Ie5ff6397feaf965a17b1ee05e15e9c96491a87ea
This commit is contained in:
Nate Myren
2021-05-13 19:18:48 +00:00
committed by Automerger Merge Worker

View File

@@ -1085,7 +1085,7 @@ public class AppOpsService extends IAppOpsService.Stub {
}
// no need to record a paused event finishing.
InProgressStartOpEvent event = mInProgressEvents.valueAt(indexOfToken);
InProgressStartOpEvent event = mPausedInProgressEvents.valueAt(indexOfToken);
event.numUnfinishedStarts--;
if (event.numUnfinishedStarts == 0) {
mPausedInProgressEvents.removeAt(indexOfToken);
@@ -1282,6 +1282,10 @@ public class AppOpsService extends IAppOpsService.Stub {
return mInProgressEvents != null;
}
public boolean isPaused() {
return mPausedInProgressEvents != null;
}
boolean hasAnyTime() {
return (mAccessEvents != null && mAccessEvents.size() > 0)
|| (mRejectEvents != null && mRejectEvents.size() > 0);
@@ -3953,7 +3957,7 @@ public class AppOpsService extends IAppOpsService.Stub {
return;
}
if (attributedOp.isRunning()) {
if (attributedOp.isRunning() || attributedOp.isPaused()) {
attributedOp.finished(clientId);
} else {
Slog.e(TAG, "Operation not started: uid=" + uid + " pkg=" + packageName + "("