Links WPP clocks flag to SysUI's flag (1/3).

Bug: 261990616
Test: manually verified that setting or unsetting the flag in System UI
correctly shows or hides the "Custom Clock" section in Wallpaper Picker,
respectively.

Change-Id: Iaac6996a35c2ad2a7a7c945cb56d49802443d965
diff --git a/src/com/android/customization/model/clock/ClockSectionController.java b/src/com/android/customization/model/clock/ClockSectionController.java
deleted file mode 100644
index 545c1c4..0000000
--- a/src/com/android/customization/model/clock/ClockSectionController.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.model.clock;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.picker.clock.ClockCustomDemoFragment;
-import com.android.customization.picker.clock.ClockSectionView;
-import com.android.wallpaper.R;
-import com.android.wallpaper.config.Flags;
-import com.android.wallpaper.model.CustomizationSectionController;
-
-/** A {@link CustomizationSectionController} for clock customization. */
-public class ClockSectionController implements CustomizationSectionController<ClockSectionView> {
-
-    private final CustomizationSectionNavigationController mNavigationController;
-
-    public ClockSectionController(CustomizationSectionNavigationController navigationController) {
-        mNavigationController = navigationController;
-    }
-
-    @Override
-    public boolean isAvailable(@Nullable Context context) {
-        return Flags.enableCustomClocks;
-    }
-
-    @Override
-    public ClockSectionView createView(Context context) {
-        ClockSectionView view = (ClockSectionView) LayoutInflater.from(context).inflate(
-                R.layout.clock_section_view,
-                null);
-        view.setOnClickListener(v ->
-                mNavigationController.navigateTo(new ClockCustomDemoFragment()));
-        return view;
-    }
-}
diff --git a/src/com/android/customization/model/clock/ClockSectionController.kt b/src/com/android/customization/model/clock/ClockSectionController.kt
new file mode 100644
index 0000000..e81fbce
--- /dev/null
+++ b/src/com/android/customization/model/clock/ClockSectionController.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.customization.model.clock
+
+import android.content.Context
+import android.view.LayoutInflater
+import com.android.customization.picker.clock.ClockCustomDemoFragment
+import com.android.customization.picker.clock.ClockSectionView
+import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient
+import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderContract as Contract
+import com.android.wallpaper.R
+import com.android.wallpaper.model.CustomizationSectionController
+import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
+import kotlinx.coroutines.runBlocking
+
+/** A [CustomizationSectionController] for clock customization. */
+class ClockSectionController(
+    private val navigationController: CustomizationSectionNavigationController,
+    private val keyguardQuickAffordanceProviderClient: KeyguardQuickAffordanceProviderClient,
+) : CustomizationSectionController<ClockSectionView?> {
+    override fun isAvailable(context: Context?): Boolean {
+        return runBlocking { keyguardQuickAffordanceProviderClient.queryFlags() }
+            .firstOrNull { it.name == Contract.FlagsTable.FLAG_NAME_CUSTOM_CLOCKS_ENABLED }
+            ?.value == true
+    }
+
+    override fun createView(context: Context): ClockSectionView {
+        val view =
+            LayoutInflater.from(context)
+                .inflate(
+                    R.layout.clock_section_view,
+                    null,
+                ) as ClockSectionView
+        view.setOnClickListener { navigationController.navigateTo(ClockCustomDemoFragment()) }
+        return view
+    }
+}
diff --git a/src/com/android/customization/module/ThemePickerInjector.java b/src/com/android/customization/module/ThemePickerInjector.java
index 9a304e9..43a104b 100644
--- a/src/com/android/customization/module/ThemePickerInjector.java
+++ b/src/com/android/customization/module/ThemePickerInjector.java
@@ -62,6 +62,7 @@
     private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
     private KeyguardQuickAffordancePickerViewModel.Factory
             mKeyguardQuickAffordancePickerViewModelFactory;
+    private KeyguardQuickAffordanceProviderClient mKeyguardQuickAffordanceProviderClient;
     private FragmentFactory mFragmentFactory;
 
     @Override
@@ -141,7 +142,7 @@
             Context context) {
         if (mKeyguardQuickAffordancePickerInteractor == null) {
             final KeyguardQuickAffordanceProviderClient client =
-                    new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
+                    getKeyguardQuickAffordancePickerProviderClient(context);
             mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
                     new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
                     client);
@@ -170,4 +171,15 @@
         }
         return mFragmentFactory;
     }
+
+    /** Returns the {@link KeyguardQuickAffordanceProviderClient}. */
+    public KeyguardQuickAffordanceProviderClient getKeyguardQuickAffordancePickerProviderClient(
+            Context context) {
+        if (mKeyguardQuickAffordanceProviderClient == null) {
+            mKeyguardQuickAffordanceProviderClient =
+                    new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
+        }
+
+        return mKeyguardQuickAffordanceProviderClient;
+    }
 }
diff --git a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
index 5846107..0209391 100644
--- a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
+++ b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
@@ -60,8 +60,11 @@
     }
 
     private fun List<Client.Flag>.isFeatureEnabled(): Boolean {
-        return find { flag -> flag.name == Contract.FlagsTable.FLAG_NAME_FEATURE_ENABLED }?.value ==
-            true
+        return find { flag ->
+                flag.name ==
+                    Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED
+            }
+            ?.value == true
     }
 
     private fun Client.Slot.toModel(): SlotModel {
diff --git a/src_override/com/android/wallpaper/config/Flags.java b/src_override/com/android/wallpaper/config/Flags.java
index 42731de..d35d88f 100644
--- a/src_override/com/android/wallpaper/config/Flags.java
+++ b/src_override/com/android/wallpaper/config/Flags.java
@@ -16,5 +16,4 @@
 package com.android.wallpaper.config;
 
 public class Flags extends BaseFlags {
-    public static boolean enableCustomClocks = false;
 }