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

Commit 828eb8ef authored by Xiaowen Lei's avatar Xiaowen Lei Committed by Automerger Merge Worker
Browse files

Merge "Log UiEvents useful for calculating dream overlay start latency." into tm-dev am: 3ecf7b2c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17227584

Change-Id: I1ef1cb2748198f671aa990ff90bd896f1af0a7f1
parents 64409d4a 3ecf7b2c
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -26,10 +26,13 @@ import android.view.WindowInsets;
import android.view.WindowManager;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.ViewModelStore;

import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -61,6 +64,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
    private final DreamOverlayContainerViewController mDreamOverlayContainerViewController;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final DreamPreviewComplication mPreviewComplication;
    private final UiEventLogger mUiEventLogger;

    // A reference to the {@link Window} used to hold the dream overlay.
    private Window mWindow;
@@ -97,6 +101,25 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ

    private DreamOverlayStateController mStateController;

    @VisibleForTesting
    public enum DreamOverlayEvent implements UiEventLogger.UiEventEnum {
        @UiEvent(doc = "The dream overlay has entered start.")
        DREAM_OVERLAY_ENTER_START(989),
        @UiEvent(doc = "The dream overlay has completed start.")
        DREAM_OVERLAY_COMPLETE_START(990);

        private final int mId;

        DreamOverlayEvent(int id) {
            mId = id;
        }

        @Override
        public int getId() {
            return mId;
        }
    }

    @Inject
    public DreamOverlayService(
            Context context,
@@ -104,13 +127,15 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
            DreamOverlayComponent.Factory dreamOverlayComponentFactory,
            DreamOverlayStateController stateController,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DreamPreviewComplication previewComplication) {
            DreamPreviewComplication previewComplication,
            UiEventLogger uiEventLogger) {
        mContext = context;
        mExecutor = executor;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback);
        mStateController = stateController;
        mPreviewComplication = previewComplication;
        mUiEventLogger = uiEventLogger;

        final DreamOverlayComponent component =
                dreamOverlayComponentFactory.create(mViewModelStore, mHost);
@@ -143,6 +168,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ

    @Override
    public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) {
        mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_ENTER_START);
        setCurrentState(Lifecycle.State.STARTED);
        mExecutor.execute(() -> {
            if (mDestroyed) {
@@ -159,6 +185,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
            addOverlayWindowLocked(layoutParams);
            setCurrentState(Lifecycle.State.RESUMED);
            mStateController.setOverlayActive(true);
            mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_COMPLETE_START);
        });
    }

+20 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
import androidx.test.filters.SmallTest;

import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.complication.DreamPreviewComplication;
@@ -104,6 +105,9 @@ public class DreamOverlayServiceTest extends SysuiTestCase {
    @Mock
    ViewGroup mDreamOverlayContainerViewParent;

    @Mock
    UiEventLogger mUiEventLogger;

    DreamOverlayService mService;

    @Before
@@ -129,7 +133,22 @@ public class DreamOverlayServiceTest extends SysuiTestCase {
                mDreamOverlayComponentFactory,
                mStateController,
                mKeyguardUpdateMonitor,
                mPreviewComplication);
                mPreviewComplication,
                mUiEventLogger);
    }

    @Test
    public void testOnStartMetricsLogged() throws Exception {
        final IBinder proxy = mService.onBind(new Intent());
        final IDreamOverlay overlay = IDreamOverlay.Stub.asInterface(proxy);

        // Inform the overlay service of dream starting.
        overlay.startDream(mWindowParams, mDreamOverlayCallback);
        mMainExecutor.runAllReady();

        verify(mUiEventLogger).log(DreamOverlayService.DreamOverlayEvent.DREAM_OVERLAY_ENTER_START);
        verify(mUiEventLogger).log(
                DreamOverlayService.DreamOverlayEvent.DREAM_OVERLAY_COMPLETE_START);
    }

    @Test