diff options
| author | 2020-04-18 21:01:13 +0100 | |
|---|---|---|
| committer | 2020-04-18 21:11:22 +0100 | |
| commit | d4968a02216a83e385f529c665bf5a3913db8dc1 (patch) | |
| tree | 5e3c23448f9ac44c47b9e74f6651fdadec7744cd | |
| parent | ae4f13602378a3029b9a9f98f10bf5aab27072f2 (diff) | |
Allow listening for noted Ops if app is sampled for Stack trace collection.
Bug: 136134050
Test: manual verification
Change-Id: I86a70e7b0bbcb114bd28bf5ab90bbf1c625f333a
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 8e0d939487e3..37f683ef435f 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -233,12 +233,9 @@ public class AppOpsManager { } private void reportStackTraceIfNeeded(@NonNull SyncNotedAppOp op) { - if (sConfig.getSampledOpCode() == OP_NONE - && sConfig.getExpirationTimeSinceBootMillis() - >= SystemClock.elapsedRealtime()) { + if (!isCollectingStackTraces()) { return; } - MessageSamplingConfig config = sConfig; if (leftCircularDistance(strOpToOp(op.getOp()), config.getSampledOpCode(), _NUM_OP) <= config.getAcceptableLeftDistance() @@ -8181,7 +8178,22 @@ public class AppOpsManager { * @hide */ public static boolean isListeningForOpNoted() { - return sOnOpNotedCallback != null; + return sOnOpNotedCallback != null || isCollectingStackTraces(); + } + + /** + * @return {@code true} iff the process is currently sampled for stacktrace collection. + * + * @see #setOnOpNotedCallback + * + * @hide + */ + private static boolean isCollectingStackTraces() { + if (sConfig.getSampledOpCode() == OP_NONE && + sConfig.getExpirationTimeSinceBootMillis() >= SystemClock.elapsedRealtime()) { + return false; + } + return true; } /** |