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

Commit 106acd81 authored by Josh Yang's avatar Josh Yang
Browse files

Add telemetry express log when the stem primary key is handled by app.

Bug: 310681274
Test: tested with statsd_testdrive
Change-Id: I591282271138913d0d1314bd564e189452f2b395
parent 145259a2
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -235,6 +235,7 @@ import com.android.internal.policy.PhoneFallbackEventHandler;
import com.android.internal.view.BaseSurfaceHolder;
import com.android.internal.view.RootViewSurfaceTaker;
import com.android.internal.view.SurfaceCallbackHelper;
import com.android.modules.expresslog.Counter;
import com.android.window.flags.Flags;

import java.io.IOException;
@@ -9711,6 +9712,9 @@ public final class ViewRootImpl implements ViewParent,
            } else {
                q.mReceiver.finishInputEvent(q.mEvent, handled);
            }
            if (q.mEvent instanceof KeyEvent) {
                logHandledSystemKey((KeyEvent) q.mEvent, handled);
            }
        } else {
            q.mEvent.recycleIfNeededAfterDispatch();
        }
@@ -9718,6 +9722,19 @@ public final class ViewRootImpl implements ViewParent,
        recycleQueuedInputEvent(q);
    }

    private void logHandledSystemKey(KeyEvent event, boolean handled) {
        final int keyCode = event.getKeyCode();
        if (keyCode != KeyEvent.KEYCODE_STEM_PRIMARY) {
            return;
        }
        if (event.isDown() && event.getRepeatCount() == 0 && handled) {
            // Initial DOWN event is handled. Log the stem primary key press.
            Counter.logIncrementWithUid(
                    "input.value_app_handled_stem_primary_key_gestures_count",
                    Process.myUid());
        }
    }

    static boolean isTerminalInputEvent(InputEvent event) {
        if (event instanceof KeyEvent) {
            final KeyEvent keyEvent = (KeyEvent)event;