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

Commit 7ee6daf9 authored by David Thames's avatar David Thames Committed by Android (Google) Code Review
Browse files

Merge "Delegate time update ticking of IcuDateTextView to callers and reduce...

Merge "Delegate time update ticking of IcuDateTextView to callers and reduce the default ticking to per minute instead of per second." into main
parents 6cdb4905 ba0b7632
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -133,6 +133,12 @@ public interface BcSmartspaceDataPlugin extends Plugin {
         */
         */
        default void setScreenOn(boolean screenOn) {}
        default void setScreenOn(boolean screenOn) {}


        /**
         * Sets a delegate to handle clock event registration. Should be called immediately after
         * the view is created.
         */
        default void setTimeChangedDelegate(TimeChangedDelegate delegate) {}

        /**
        /**
         * Set if dozing is true or false
         * Set if dozing is true or false
         */
         */
@@ -228,4 +234,13 @@ public interface BcSmartspaceDataPlugin extends Plugin {
        /** Start the PendingIntent */
        /** Start the PendingIntent */
        void startPendingIntent(View v, PendingIntent pi, boolean showOnLockscreen);
        void startPendingIntent(View v, PendingIntent pi, boolean showOnLockscreen);
    }
    }

    /** Interface for delegating time updates */
    interface TimeChangedDelegate {
        /** Register the callback to be called when time is updated **/
        void register(Runnable callback);

        /** Unegister the callback **/
        void unregister();
    }
}
}
+26 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
import androidx.annotation.VisibleForTesting
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.settingslib.Utils
import com.android.settingslib.Utils
import com.android.systemui.Dumpable
import com.android.systemui.Dumpable
import com.android.systemui.Flags.smartspaceLockscreenViewmodel
import com.android.systemui.Flags.smartspaceLockscreenViewmodel
@@ -53,6 +54,7 @@ import com.android.systemui.plugins.BcSmartspaceConfigPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceTargetListener
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceTargetListener
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.BcSmartspaceDataPlugin.TimeChangedDelegate
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.clocks.WeatherData
import com.android.systemui.plugins.clocks.WeatherData
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
@@ -411,6 +413,7 @@ constructor(
        val ssView = plugin.getView(parent)
        val ssView = plugin.getView(parent)
        configPlugin?.let { ssView.registerConfigProvider(it) }
        configPlugin?.let { ssView.registerConfigProvider(it) }
        ssView.setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        ssView.setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        ssView.setTimeChangedDelegate(SmartspaceTimeChangedDelegate(keyguardUpdateMonitor))
        ssView.registerDataProvider(plugin)
        ssView.registerDataProvider(plugin)


        ssView.setIntentStarter(object : BcSmartspaceDataPlugin.IntentStarter {
        ssView.setIntentStarter(object : BcSmartspaceDataPlugin.IntentStarter {
@@ -682,5 +685,28 @@ constructor(
            }
            }
        }
        }
    }
    }

    private class SmartspaceTimeChangedDelegate(
        private val keyguardUpdateMonitor: KeyguardUpdateMonitor
    ) : TimeChangedDelegate {
        private var keyguardUpdateMonitorCallback: KeyguardUpdateMonitorCallback? = null
        override fun register(callback: Runnable) {
            if (keyguardUpdateMonitorCallback != null) {
                unregister()
            }
            keyguardUpdateMonitorCallback = object : KeyguardUpdateMonitorCallback() {
                override fun onTimeChanged() {
                    callback.run()
                }
            }
            keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback)
            callback.run()
        }

        override fun unregister() {
            keyguardUpdateMonitor.removeCallback(keyguardUpdateMonitorCallback)
            keyguardUpdateMonitorCallback = null
        }
    }
}
}
+16 −0
Original line number Original line Diff line number Diff line
@@ -762,6 +762,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
        // THEN the existing session is reused and views are registered
        // THEN the existing session is reused and views are registered
        verify(smartspaceManager, never()).createSmartspaceSession(any())
        verify(smartspaceManager, never()).createSmartspaceSession(any())
        verify(smartspaceView2).setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(smartspaceView2).setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(smartspaceView2).setTimeChangedDelegate(any())
        verify(smartspaceView2).registerDataProvider(plugin)
        verify(smartspaceView2).registerDataProvider(plugin)
        verify(smartspaceView2).registerConfigProvider(configPlugin)
        verify(smartspaceView2).registerConfigProvider(configPlugin)
    }
    }
@@ -836,6 +837,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {


        verify(dateSmartspaceView).setUiSurface(
        verify(dateSmartspaceView).setUiSurface(
                BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
                BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(dateSmartspaceView).setTimeChangedDelegate(any())
        verify(dateSmartspaceView).registerDataProvider(datePlugin)
        verify(dateSmartspaceView).registerDataProvider(datePlugin)


        verify(dateSmartspaceView).setPrimaryTextColor(anyInt())
        verify(dateSmartspaceView).setPrimaryTextColor(anyInt())
@@ -848,6 +850,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {


        verify(weatherSmartspaceView).setUiSurface(
        verify(weatherSmartspaceView).setUiSurface(
                BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
                BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(weatherSmartspaceView).setTimeChangedDelegate(any())
        verify(weatherSmartspaceView).registerDataProvider(weatherPlugin)
        verify(weatherSmartspaceView).registerDataProvider(weatherPlugin)


        verify(weatherSmartspaceView).setPrimaryTextColor(anyInt())
        verify(weatherSmartspaceView).setPrimaryTextColor(anyInt())
@@ -859,6 +862,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
        controller.stateChangeListener.onViewAttachedToWindow(view)
        controller.stateChangeListener.onViewAttachedToWindow(view)


        verify(smartspaceView).setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(smartspaceView).setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD)
        verify(smartspaceView).setTimeChangedDelegate(any())
        verify(smartspaceView).registerDataProvider(plugin)
        verify(smartspaceView).registerDataProvider(plugin)
        verify(smartspaceView).registerConfigProvider(configPlugin)
        verify(smartspaceView).registerConfigProvider(configPlugin)
        verify(smartspaceSession)
        verify(smartspaceSession)
@@ -984,6 +988,10 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
            override fun setUiSurface(uiSurface: String) {
            override fun setUiSurface(uiSurface: String) {
            }
            }


            override fun setTimeChangedDelegate(
                delegate: BcSmartspaceDataPlugin.TimeChangedDelegate?
            ) {}

            override fun setDozeAmount(amount: Float) {
            override fun setDozeAmount(amount: Float) {
            }
            }


@@ -1012,6 +1020,10 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
            override fun setUiSurface(uiSurface: String) {
            override fun setUiSurface(uiSurface: String) {
            }
            }


            override fun setTimeChangedDelegate(
                delegate: BcSmartspaceDataPlugin.TimeChangedDelegate?
            ) {}

            override fun setDozeAmount(amount: Float) {
            override fun setDozeAmount(amount: Float) {
            }
            }


@@ -1036,6 +1048,10 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
            override fun setUiSurface(uiSurface: String) {
            override fun setUiSurface(uiSurface: String) {
            }
            }


            override fun setTimeChangedDelegate(
                delegate: BcSmartspaceDataPlugin.TimeChangedDelegate?
            ) {}

            override fun setDozeAmount(amount: Float) {
            override fun setDozeAmount(amount: Float) {
            }
            }