Merge "Add target for ThemePicker instrumented tests" into tm-qpr-dev
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index 7eb8865..1540a09 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -5,6 +5,7 @@
 import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentActivity;
 import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.ViewModelProvider;
 
 import com.android.customization.model.color.ColorSectionController;
 import com.android.customization.model.grid.GridOptionsManager;
@@ -12,6 +13,9 @@
 import com.android.customization.model.mode.DarkModeSectionController;
 import com.android.customization.model.themedicon.ThemedIconSectionController;
 import com.android.customization.model.themedicon.ThemedIconSwitchProvider;
+import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
+import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController;
+import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
 import com.android.wallpaper.model.CustomizationSectionController;
 import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController;
 import com.android.wallpaper.model.PermissionRequester;
@@ -27,6 +31,75 @@
 /** {@link CustomizationSections} for the customization picker. */
 public final class DefaultCustomizationSections implements CustomizationSections {
 
+    private final KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
+    private final KeyguardQuickAffordancePickerViewModel.Factory
+            mKeyguardQuickAffordancePickerViewModelFactory;
+
+    public DefaultCustomizationSections(
+            KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor,
+            KeyguardQuickAffordancePickerViewModel.Factory
+                    keyguardQuickAffordancePickerViewModelFactory) {
+        mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor;
+        mKeyguardQuickAffordancePickerViewModelFactory =
+                keyguardQuickAffordancePickerViewModelFactory;
+    }
+
+    @Override
+    public List<CustomizationSectionController<?>> getSectionControllersForScreen(
+            Screen screen,
+            FragmentActivity activity,
+            LifecycleOwner lifecycleOwner,
+            WallpaperColorsViewModel wallpaperColorsViewModel,
+            WorkspaceViewModel workspaceViewModel,
+            PermissionRequester permissionRequester,
+            WallpaperPreviewNavigator wallpaperPreviewNavigator,
+            CustomizationSectionNavigationController sectionNavigationController,
+            @Nullable Bundle savedInstanceState) {
+        List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
+
+        // Wallpaper section.
+        sectionControllers.add(new WallpaperSectionController(
+                activity, lifecycleOwner, permissionRequester, wallpaperColorsViewModel,
+                workspaceViewModel, sectionNavigationController, wallpaperPreviewNavigator,
+                savedInstanceState));
+
+        // Theme color section.
+        sectionControllers.add(new ColorSectionController(
+                activity, wallpaperColorsViewModel, lifecycleOwner, savedInstanceState));
+
+        switch (screen) {
+            case LOCK_SCREEN:
+                // Lock screen quick affordances section.
+                sectionControllers.add(
+                        new KeyguardQuickAffordanceSectionController(
+                                sectionNavigationController,
+                                mKeyguardQuickAffordancePickerInteractor,
+                                new ViewModelProvider(
+                                        activity,
+                                        mKeyguardQuickAffordancePickerViewModelFactory)
+                                        .get(KeyguardQuickAffordancePickerViewModel.class),
+                                lifecycleOwner));
+                break;
+
+            case HOME_SCREEN:
+                // Dark/Light theme section.
+                sectionControllers.add(new DarkModeSectionController(activity,
+                        lifecycleOwner.getLifecycle()));
+
+                // Themed app icon section.
+                sectionControllers.add(new ThemedIconSectionController(
+                        ThemedIconSwitchProvider.getInstance(activity), workspaceViewModel,
+                        savedInstanceState));
+
+                // App grid section.
+                sectionControllers.add(new GridSectionController(
+                        GridOptionsManager.getInstance(activity), sectionNavigationController));
+                break;
+        }
+
+        return sectionControllers;
+    }
+
     @Override
     public List<CustomizationSectionController<?>> getAllSectionControllers(
             FragmentActivity activity,
diff --git a/src/com/android/customization/module/ThemePickerInjector.java b/src/com/android/customization/module/ThemePickerInjector.java
index 7342d38..263b44e 100644
--- a/src/com/android/customization/module/ThemePickerInjector.java
+++ b/src/com/android/customization/module/ThemePickerInjector.java
@@ -70,7 +70,9 @@
     @Override
     public CustomizationSections getCustomizationSections(Activity activity) {
         if (mCustomizationSections == null) {
-            mCustomizationSections = new DefaultCustomizationSections();
+            mCustomizationSections = new DefaultCustomizationSections(
+                    mKeyguardQuickAffordancePickerInteractor,
+                    mKeyguardQuickAffordancePickerViewModelFactory);
         }
         return mCustomizationSections;
     }