Merge "Complete Initialization of ClockRegistry in singleton provider" into tm-qpr-dev am: ebbbe43165

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

Change-Id: I2cf2ae7d80b279890717a6f0f4942fd04deba2c0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Hawkwood Glazier
2022-10-25 19:07:23 +00:00
committed by Automerger Merge Worker
5 changed files with 34 additions and 26 deletions

View File

@@ -18,7 +18,6 @@ import android.database.ContentObserver
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri import android.net.Uri
import android.os.Handler import android.os.Handler
import android.os.UserHandle
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
import com.android.internal.annotations.Keep import com.android.internal.annotations.Keep
@@ -39,15 +38,15 @@ open class ClockRegistry(
val context: Context, val context: Context,
val pluginManager: PluginManager, val pluginManager: PluginManager,
val handler: Handler, val handler: Handler,
defaultClockProvider: ClockProvider val isEnabled: Boolean,
userHandle: Int,
defaultClockProvider: ClockProvider,
) { ) {
// Usually this would be a typealias, but a SAM provides better java interop // Usually this would be a typealias, but a SAM provides better java interop
fun interface ClockChangeListener { fun interface ClockChangeListener {
fun onClockChanged() fun onClockChanged()
} }
var isEnabled: Boolean = false
private val gson = Gson() private val gson = Gson()
private val availableClocks = mutableMapOf<ClockId, ClockInfo>() private val availableClocks = mutableMapOf<ClockId, ClockInfo>()
private val clockChangeListeners = mutableListOf<ClockChangeListener>() private val clockChangeListeners = mutableListOf<ClockChangeListener>()
@@ -97,14 +96,19 @@ open class ClockRegistry(
) )
} }
pluginManager.addPluginListener(pluginListener, ClockProviderPlugin::class.java, if (isEnabled) {
true /* allowMultiple */) pluginManager.addPluginListener(
context.contentResolver.registerContentObserver( pluginListener,
Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE), ClockProviderPlugin::class.java,
false, /*allowMultiple=*/ true
settingObserver, )
UserHandle.USER_ALL context.contentResolver.registerContentObserver(
) Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE),
/*notifyForDescendants=*/ false,
settingObserver,
userHandle
)
}
} }
private fun connectClocks(provider: ClockProvider) { private fun connectClocks(provider: ClockProvider) {

View File

@@ -37,8 +37,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.plugins.ClockAnimations; import com.android.systemui.plugins.ClockAnimations;
import com.android.systemui.plugins.ClockController; import com.android.systemui.plugins.ClockController;
@@ -120,8 +118,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
SecureSettings secureSettings, SecureSettings secureSettings,
@Main Executor uiExecutor, @Main Executor uiExecutor,
DumpManager dumpManager, DumpManager dumpManager,
ClockEventController clockEventController, ClockEventController clockEventController) {
FeatureFlags featureFlags) {
super(keyguardClockSwitch); super(keyguardClockSwitch);
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mClockRegistry = clockRegistry; mClockRegistry = clockRegistry;
@@ -134,7 +131,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
mDumpManager = dumpManager; mDumpManager = dumpManager;
mClockEventController = clockEventController; mClockEventController = clockEventController;
mClockRegistry.setEnabled(featureFlags.isEnabled(Flags.LOCKSCREEN_CUSTOM_CLOCKS));
mClockChangedListener = () -> { mClockChangedListener = () -> {
setClock(mClockRegistry.createCurrentClock()); setClock(mClockRegistry.createCurrentClock());
}; };

View File

@@ -18,10 +18,13 @@ package com.android.keyguard.dagger;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
import android.os.UserHandle;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Application; import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.shared.clocks.ClockRegistry; import com.android.systemui.shared.clocks.ClockRegistry;
import com.android.systemui.shared.clocks.DefaultClockProvider; import com.android.systemui.shared.clocks.DefaultClockProvider;
import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.plugins.PluginManager;
@@ -39,7 +42,14 @@ public abstract class ClockRegistryModule {
@Application Context context, @Application Context context,
PluginManager pluginManager, PluginManager pluginManager,
@Main Handler handler, @Main Handler handler,
DefaultClockProvider defaultClockProvider) { DefaultClockProvider defaultClockProvider,
return new ClockRegistry(context, pluginManager, handler, defaultClockProvider); FeatureFlags featureFlags) {
return new ClockRegistry(
context,
pluginManager,
handler,
featureFlags.isEnabled(Flags.LOCKSCREEN_CUSTOM_CLOCKS),
UserHandle.USER_ALL,
defaultClockProvider);
} }
} }

View File

@@ -44,7 +44,6 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.plugins.ClockAnimations; import com.android.systemui.plugins.ClockAnimations;
import com.android.systemui.plugins.ClockController; import com.android.systemui.plugins.ClockController;
@@ -105,8 +104,6 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase {
private FrameLayout mLargeClockFrame; private FrameLayout mLargeClockFrame;
@Mock @Mock
private SecureSettings mSecureSettings; private SecureSettings mSecureSettings;
@Mock
private FeatureFlags mFeatureFlags;
private final View mFakeSmartspaceView = new View(mContext); private final View mFakeSmartspaceView = new View(mContext);
@@ -143,8 +140,7 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase {
mSecureSettings, mSecureSettings,
mExecutor, mExecutor,
mDumpManager, mDumpManager,
mClockEventController, mClockEventController
mFeatureFlags
); );
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE); when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);

View File

@@ -19,6 +19,7 @@ import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Handler import android.os.Handler
import android.os.UserHandle
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -104,13 +105,14 @@ class ClockRegistryTest : SysuiTestCase() {
mockContext, mockContext,
mockPluginManager, mockPluginManager,
mockHandler, mockHandler,
fakeDefaultProvider isEnabled = true,
userHandle = UserHandle.USER_ALL,
defaultClockProvider = fakeDefaultProvider
) { ) {
override var currentClockId: ClockId override var currentClockId: ClockId
get() = settingValue get() = settingValue
set(value) { settingValue = value } set(value) { settingValue = value }
} }
registry.isEnabled = true
verify(mockPluginManager) verify(mockPluginManager)
.addPluginListener(captor.capture(), eq(ClockProviderPlugin::class.java), eq(true)) .addPluginListener(captor.capture(), eq(ClockProviderPlugin::class.java), eq(true))