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

Commit 94a6e203 authored by Juan Sebastian Martinez's avatar Juan Sebastian Martinez
Browse files

Adding UI log events when volume sliders start and end tracking touch.

Test: atest SystemUITests:VolumeDialogImplTest
Flag: NONE
Bug: 316953430

Change-Id: I4e29432a6abd99cf91a554e1f5b75d717c4b40c5
parent 2183a65d
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ public class Events {
    public static final int EVENT_DISMISS_USB_OVERHEAT_ALARM = 20; // (reason|int) (keyguard|bool)
    public static final int EVENT_ODI_CAPTIONS_CLICK = 21;
    public static final int EVENT_ODI_CAPTIONS_TOOLTIP_CLICK = 22;
    public static final int EVENT_SLIDER_TOUCH_TRACKING = 23; // (tracking|bool)

    private static final String[] EVENT_TAGS = {
            "show_dialog",
@@ -84,7 +85,8 @@ public class Events {
            "show_usb_overheat_alarm",
            "dismiss_usb_overheat_alarm",
            "odi_captions_click",
            "odi_captions_tooltip_click"
            "odi_captions_tooltip_click",
            "slider_touch_tracking"
    };

    public static final int DISMISS_REASON_UNKNOWN = 0;
@@ -234,6 +236,10 @@ public class Events {
        VOLUME_DIALOG_SLIDER(150),
        @UiEvent(doc = "The audio stream was set to silent via slider")
        VOLUME_DIALOG_SLIDER_TO_ZERO(151),
        @UiEvent(doc = "The right-most slider started tracking touch")
        VOLUME_DIALOG_SLIDER_STARTED_TRACKING_TOUCH(1620),
        @UiEvent(doc = "The right-most slider stopped tracking touch")
        VOLUME_DIALOG_SLIDER_STOPPED_TRACKING_TOUCH(1621),
        @UiEvent(doc = "ODI captions was clicked")
        VOLUME_DIALOG_ODI_CAPTIONS_CLICKED(1503),
        @UiEvent(doc = "ODI captions tooltip dismiss was clicked")
@@ -491,6 +497,15 @@ public class Events {
                            .append(" keyguard=").append(keyguard);
                }
                break;
            case EVENT_SLIDER_TOUCH_TRACKING:
                final boolean startedTracking = (boolean) list[0];
                final VolumeDialogEvent event;
                if (startedTracking) {
                    event = VolumeDialogEvent.VOLUME_DIALOG_SLIDER_STARTED_TRACKING_TOUCH;
                } else {
                    event = VolumeDialogEvent.VOLUME_DIALOG_SLIDER_STOPPED_TRACKING_TOUCH;
                }
                sUiEventLogger.log(event);
            default:
                sb.append(Arrays.asList(list));
                break;
+2 −0
Original line number Diff line number Diff line
@@ -2518,6 +2518,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            if (D.BUG) Log.d(TAG, "onStartTrackingTouch"+ " " + mRow.stream);
            Events.writeEvent(Events.EVENT_SLIDER_TOUCH_TRACKING, /* startedTracking= */true);
            if (mRow.mHapticPlugin != null) {
                mRow.mHapticPlugin.onStartTrackingTouch(seekBar);
            }
@@ -2528,6 +2529,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            if (D.BUG) Log.d(TAG, "onStopTrackingTouch"+ " " + mRow.stream);
            Events.writeEvent(Events.EVENT_SLIDER_TOUCH_TRACKING, /* startedTracking= */false);
            if (mRow.mHapticPlugin != null) {
                mRow.mHapticPlugin.onStopTrackingTouch(seekBar);
            }
+43 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
import android.widget.ImageButton;
import android.widget.SeekBar;

import androidx.test.core.view.MotionEventBuilder;
import androidx.test.filters.SmallTest;
@@ -111,6 +112,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
    View mDrawerVibrate;
    View mDrawerMute;
    View mDrawerNormal;
    ViewGroup mDialogRowsView;
    CaptionsToggleImageButton mODICaptionsIcon;

    private TestableLooper mTestableLooper;
@@ -222,6 +224,8 @@ public class VolumeDialogImplTest extends SysuiTestCase {
        }
        mODICaptionsIcon = mDialog.getDialogView().findViewById(R.id.odi_captions_icon);

        mDialogRowsView = mDialog.getDialogView().findViewById(R.id.volume_dialog_rows);

        Prefs.putInt(mContext,
                Prefs.Key.SEEN_RINGER_GUIDANCE_COUNT,
                VolumePrefs.SHOW_RINGER_TOAST_COUNT + 1);
@@ -670,6 +674,45 @@ public class VolumeDialogImplTest extends SysuiTestCase {
                foundCaptionLog);
    }

    @Test
    public void volumeSliderTracksTouch_logsStartAndStopTrackingUiEvents() {
        UiEventLoggerFake logger = new UiEventLoggerFake();
        Events.sUiEventLogger = logger;

        mDialog.show(SHOW_REASON_UNKNOWN);
        mTestableLooper.processAllMessages();

        MotionEvent down = MotionEventBuilder.newBuilder()
                .setAction(MotionEvent.ACTION_DOWN).build();
        MotionEvent up = MotionEventBuilder.newBuilder().setAction(MotionEvent.ACTION_UP).build();

        SeekBar slider =
                mDialogRowsView.getChildAt(0).findViewById(R.id.volume_row_slider);
        slider.onTouchEvent(down);
        slider.onTouchEvent(up);
        mTestableLooper.moveTimeForward(300);
        mTestableLooper.processAllMessages();

        boolean foundStartTrackingTouch = false;
        boolean foundStopTrackingTouch = false;
        for (UiEventLoggerFake.FakeUiEvent event : logger.getLogs()) {
            if (event.eventId
                    == Events.VolumeDialogEvent.VOLUME_DIALOG_SLIDER_STARTED_TRACKING_TOUCH.getId()
            ) {
                foundStartTrackingTouch = true;
            }
            if (event.eventId
                    == Events.VolumeDialogEvent.VOLUME_DIALOG_SLIDER_STOPPED_TRACKING_TOUCH.getId()
            ) {
                foundStopTrackingTouch = true;
            }
        }
        Assert.assertTrue("Did not log the event of start tracking touch.",
                foundStartTrackingTouch);
        Assert.assertTrue("Did not log the event of stop tracking touch.",
                foundStopTrackingTouch);
    }

    @Test
    public void turnOnDnD_volumeSliderIconChangesToDnd() {
        State state = createShellState();