Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4968a02 authored by Stanislav Zholnin's avatar Stanislav Zholnin
Browse files

Allow listening for noted Ops if app is sampled for Stack trace collection.

Bug: 136134050
Test: manual verification
Change-Id: I86a70e7b0bbcb114bd28bf5ab90bbf1c625f333a
parent ae4f1360
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -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;
    }

    /**