Merge "Save AsyncOps for later forwarding instead of SyncOps." into rvc-dev am: 7ec25249ab

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

Change-Id: I464f47c0f6ff9b6977abac65675b3ab2bbda1b59
This commit is contained in:
TreeHugger Robot
2020-06-19 21:43:04 +00:00
committed by Automerger Merge Worker

View File

@@ -227,7 +227,7 @@ public class AppOpsManager {
* {@link #sMessageCollector}, which forces {@link COLLECT_SYNC} mode. * {@link #sMessageCollector}, which forces {@link COLLECT_SYNC} mode.
*/ */
@GuardedBy("sLock") @GuardedBy("sLock")
private static ArrayList<SyncNotedAppOp> sUnforwardedOps = new ArrayList<>(); private static ArrayList<AsyncNotedAppOp> sUnforwardedOps = new ArrayList<>();
/** /**
* Additional collector that collect accesses and forwards a few of them them via * Additional collector that collect accesses and forwards a few of them them via
@@ -8195,7 +8195,10 @@ public class AppOpsManager {
if (sOnOpNotedCallback != null) { if (sOnOpNotedCallback != null) {
sOnOpNotedCallback.onNoted(new SyncNotedAppOp(code, attributionTag)); sOnOpNotedCallback.onNoted(new SyncNotedAppOp(code, attributionTag));
} else { } else {
sUnforwardedOps.add(new SyncNotedAppOp(code, attributionTag)); String message = getFormattedStackTrace();
sUnforwardedOps.add(
new AsyncNotedAppOp(code, Process.myUid(), attributionTag,
message, System.currentTimeMillis()));
if (sUnforwardedOps.size() > MAX_UNFORWARDED_OPS) { if (sUnforwardedOps.size() > MAX_UNFORWARDED_OPS) {
sUnforwardedOps.remove(0); sUnforwardedOps.remove(0);
} }
@@ -8268,10 +8271,10 @@ public class AppOpsManager {
synchronized (this) { synchronized (this) {
int numMissedSyncOps = sUnforwardedOps.size(); int numMissedSyncOps = sUnforwardedOps.size();
for (int i = 0; i < numMissedSyncOps; i++) { for (int i = 0; i < numMissedSyncOps; i++) {
final SyncNotedAppOp syncNotedAppOp = sUnforwardedOps.get(i); final AsyncNotedAppOp syncNotedAppOp = sUnforwardedOps.get(i);
if (sOnOpNotedCallback != null) { if (sOnOpNotedCallback != null) {
sOnOpNotedCallback.getAsyncNotedExecutor().execute( sOnOpNotedCallback.getAsyncNotedExecutor().execute(
() -> sOnOpNotedCallback.onNoted(syncNotedAppOp)); () -> sOnOpNotedCallback.onAsyncNoted(syncNotedAppOp));
} }
} }
sUnforwardedOps.clear(); sUnforwardedOps.clear();