Loading packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java +28 −1 Original line number Original line Diff line number Diff line Loading @@ -26,10 +26,13 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.ViewModelStore; 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.internal.policy.PhoneWindow; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.KeyguardUpdateMonitorCallback; Loading Loading @@ -61,6 +64,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ private final DreamOverlayContainerViewController mDreamOverlayContainerViewController; private final DreamOverlayContainerViewController mDreamOverlayContainerViewController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final DreamPreviewComplication mPreviewComplication; private final DreamPreviewComplication mPreviewComplication; private final UiEventLogger mUiEventLogger; // A reference to the {@link Window} used to hold the dream overlay. // A reference to the {@link Window} used to hold the dream overlay. private Window mWindow; private Window mWindow; Loading Loading @@ -97,6 +101,25 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ private DreamOverlayStateController mStateController; 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 @Inject public DreamOverlayService( public DreamOverlayService( Context context, Context context, Loading @@ -104,13 +127,15 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ DreamOverlayComponent.Factory dreamOverlayComponentFactory, DreamOverlayComponent.Factory dreamOverlayComponentFactory, DreamOverlayStateController stateController, DreamOverlayStateController stateController, KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardUpdateMonitor keyguardUpdateMonitor, DreamPreviewComplication previewComplication) { DreamPreviewComplication previewComplication, UiEventLogger uiEventLogger) { mContext = context; mContext = context; mExecutor = executor; mExecutor = executor; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback); mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback); mStateController = stateController; mStateController = stateController; mPreviewComplication = previewComplication; mPreviewComplication = previewComplication; mUiEventLogger = uiEventLogger; final DreamOverlayComponent component = final DreamOverlayComponent component = dreamOverlayComponentFactory.create(mViewModelStore, mHost); dreamOverlayComponentFactory.create(mViewModelStore, mHost); Loading Loading @@ -143,6 +168,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ @Override @Override public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) { public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) { mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_ENTER_START); setCurrentState(Lifecycle.State.STARTED); setCurrentState(Lifecycle.State.STARTED); mExecutor.execute(() -> { mExecutor.execute(() -> { if (mDestroyed) { if (mDestroyed) { Loading @@ -159,6 +185,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ addOverlayWindowLocked(layoutParams); addOverlayWindowLocked(layoutParams); setCurrentState(Lifecycle.State.RESUMED); setCurrentState(Lifecycle.State.RESUMED); mStateController.setOverlayActive(true); mStateController.setOverlayActive(true); mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_COMPLETE_START); }); }); } } Loading packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java +20 −1 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.LifecycleRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import com.android.internal.logging.UiEventLogger; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase; import com.android.systemui.dreams.complication.DreamPreviewComplication; import com.android.systemui.dreams.complication.DreamPreviewComplication; Loading Loading @@ -104,6 +105,9 @@ public class DreamOverlayServiceTest extends SysuiTestCase { @Mock @Mock ViewGroup mDreamOverlayContainerViewParent; ViewGroup mDreamOverlayContainerViewParent; @Mock UiEventLogger mUiEventLogger; DreamOverlayService mService; DreamOverlayService mService; @Before @Before Loading @@ -129,7 +133,22 @@ public class DreamOverlayServiceTest extends SysuiTestCase { mDreamOverlayComponentFactory, mDreamOverlayComponentFactory, mStateController, mStateController, mKeyguardUpdateMonitor, 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 @Test Loading Loading
packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayService.java +28 −1 Original line number Original line Diff line number Diff line Loading @@ -26,10 +26,13 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.ViewModelStore; 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.internal.policy.PhoneWindow; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.KeyguardUpdateMonitorCallback; Loading Loading @@ -61,6 +64,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ private final DreamOverlayContainerViewController mDreamOverlayContainerViewController; private final DreamOverlayContainerViewController mDreamOverlayContainerViewController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final DreamPreviewComplication mPreviewComplication; private final DreamPreviewComplication mPreviewComplication; private final UiEventLogger mUiEventLogger; // A reference to the {@link Window} used to hold the dream overlay. // A reference to the {@link Window} used to hold the dream overlay. private Window mWindow; private Window mWindow; Loading Loading @@ -97,6 +101,25 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ private DreamOverlayStateController mStateController; 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 @Inject public DreamOverlayService( public DreamOverlayService( Context context, Context context, Loading @@ -104,13 +127,15 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ DreamOverlayComponent.Factory dreamOverlayComponentFactory, DreamOverlayComponent.Factory dreamOverlayComponentFactory, DreamOverlayStateController stateController, DreamOverlayStateController stateController, KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardUpdateMonitor keyguardUpdateMonitor, DreamPreviewComplication previewComplication) { DreamPreviewComplication previewComplication, UiEventLogger uiEventLogger) { mContext = context; mContext = context; mExecutor = executor; mExecutor = executor; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback); mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback); mStateController = stateController; mStateController = stateController; mPreviewComplication = previewComplication; mPreviewComplication = previewComplication; mUiEventLogger = uiEventLogger; final DreamOverlayComponent component = final DreamOverlayComponent component = dreamOverlayComponentFactory.create(mViewModelStore, mHost); dreamOverlayComponentFactory.create(mViewModelStore, mHost); Loading Loading @@ -143,6 +168,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ @Override @Override public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) { public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) { mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_ENTER_START); setCurrentState(Lifecycle.State.STARTED); setCurrentState(Lifecycle.State.STARTED); mExecutor.execute(() -> { mExecutor.execute(() -> { if (mDestroyed) { if (mDestroyed) { Loading @@ -159,6 +185,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ addOverlayWindowLocked(layoutParams); addOverlayWindowLocked(layoutParams); setCurrentState(Lifecycle.State.RESUMED); setCurrentState(Lifecycle.State.RESUMED); mStateController.setOverlayActive(true); mStateController.setOverlayActive(true); mUiEventLogger.log(DreamOverlayEvent.DREAM_OVERLAY_COMPLETE_START); }); }); } } Loading
packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java +20 −1 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.LifecycleRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import com.android.internal.logging.UiEventLogger; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase; import com.android.systemui.dreams.complication.DreamPreviewComplication; import com.android.systemui.dreams.complication.DreamPreviewComplication; Loading Loading @@ -104,6 +105,9 @@ public class DreamOverlayServiceTest extends SysuiTestCase { @Mock @Mock ViewGroup mDreamOverlayContainerViewParent; ViewGroup mDreamOverlayContainerViewParent; @Mock UiEventLogger mUiEventLogger; DreamOverlayService mService; DreamOverlayService mService; @Before @Before Loading @@ -129,7 +133,22 @@ public class DreamOverlayServiceTest extends SysuiTestCase { mDreamOverlayComponentFactory, mDreamOverlayComponentFactory, mStateController, mStateController, mKeyguardUpdateMonitor, 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 @Test Loading