summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Stanislav Zholnin <zholnin@google.com> 2020-04-18 21:01:13 +0100
committer Stanislav Zholnin <zholnin@google.com> 2020-04-18 21:11:22 +0100
commitd4968a02216a83e385f529c665bf5a3913db8dc1 (patch)
tree5e3c23448f9ac44c47b9e74f6651fdadec7744cd
parentae4f13602378a3029b9a9f98f10bf5aab27072f2 (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.java22
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;
}
/**