diff options
| author | 2021-05-13 19:11:23 +0000 | |
|---|---|---|
| committer | 2021-05-13 19:11:23 +0000 | |
| commit | 477fdc1a3ba2a820544bbe61dc638bcd8ebd64ce (patch) | |
| tree | 66abf7b8348fe46d2aa03ea4635816feb28458b8 | |
| parent | 1d0ef86d51780fe77682dbd75dc614bdd3471060 (diff) | |
| parent | 4f15c208b44eca4963c68e589323eefcc338753b (diff) | |
Merge "Ensure paused ops are finished correctly" into sc-dev
| -rw-r--r-- | services/core/java/com/android/server/appop/AppOpsService.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index a23b5eb50b15..13dc444dc44b 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -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 + "(" |