blob: f4a659cf3af0f27b1ec38b0f20de5230e29d806f [file] [log] [blame]
package com.android.customization.testing;
import android.content.Context;
import androidx.fragment.app.FragmentActivity;
import com.android.customization.model.theme.OverlayManagerCompat;
import com.android.customization.model.theme.ThemeBundleProvider;
import com.android.customization.model.theme.ThemeManager;
import com.android.customization.module.CustomizationInjector;
import com.android.customization.module.CustomizationPreferences;
import com.android.customization.module.ThemesUserEventLogger;
import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository;
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer;
import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient;
import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClientImpl;
import com.android.wallpaper.config.BaseFlags;
import com.android.wallpaper.module.DrawableLayerResolver;
import com.android.wallpaper.module.PackageStatusNotifier;
import com.android.wallpaper.module.UserEventLogger;
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer;
import com.android.wallpaper.testing.TestInjector;
import java.util.HashMap;
import java.util.Map;
import kotlinx.coroutines.Dispatchers;
/**
* Test implementation of the dependency injector.
*/
public class TestCustomizationInjector extends TestInjector implements CustomizationInjector {
private CustomizationPreferences mCustomizationPreferences;
private ThemeManager mThemeManager;
private PackageStatusNotifier mPackageStatusNotifier;
private DrawableLayerResolver mDrawableLayerResolver;
private UserEventLogger mUserEventLogger;
private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
private BaseFlags mFlags;
private KeyguardQuickAffordanceProviderClient mKeyguardQuickAffordanceProviderClient;
private KeyguardQuickAffordanceSnapshotRestorer mKeyguardQuickAffordanceSnapshotRestorer;
@Override
public CustomizationPreferences getCustomizationPreferences(Context context) {
if (mCustomizationPreferences == null) {
mCustomizationPreferences = new TestDefaultCustomizationPreferences(context);
}
return mCustomizationPreferences;
}
@Override
public ThemeManager getThemeManager(
ThemeBundleProvider provider,
FragmentActivity activity,
OverlayManagerCompat overlayManagerCompat,
ThemesUserEventLogger logger) {
if (mThemeManager == null) {
mThemeManager = new TestThemeManager(provider, activity, overlayManagerCompat, logger);
}
return mThemeManager;
}
@Override
public PackageStatusNotifier getPackageStatusNotifier(Context context) {
if (mPackageStatusNotifier == null) {
mPackageStatusNotifier = new TestPackageStatusNotifier();
}
return mPackageStatusNotifier;
}
@Override
public DrawableLayerResolver getDrawableLayerResolver() {
if (mDrawableLayerResolver == null) {
mDrawableLayerResolver = new TestDrawableLayerResolver();
}
return mDrawableLayerResolver;
}
@Override
public UserEventLogger getUserEventLogger(Context unused) {
if (mUserEventLogger == null) {
mUserEventLogger = new TestThemesUserEventLogger();
}
return mUserEventLogger;
}
@Override
public KeyguardQuickAffordancePickerInteractor getKeyguardQuickAffordancePickerInteractor(
Context context) {
if (mKeyguardQuickAffordancePickerInteractor == null) {
final KeyguardQuickAffordanceProviderClient client =
new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
client,
() -> getKeyguardQuickAffordanceSnapshotRestorer(context));
}
return mKeyguardQuickAffordancePickerInteractor;
}
@Override
public BaseFlags getFlags() {
if (mFlags == null) {
mFlags = new BaseFlags() {};
}
return mFlags;
}
@Override
public Map<Integer, SnapshotRestorer> getSnapshotRestorers(Context context) {
final Map<Integer, SnapshotRestorer> restorers = new HashMap<>();
restorers.put(
KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER,
getKeyguardQuickAffordanceSnapshotRestorer(context));
return restorers;
}
/** Returns the {@link KeyguardQuickAffordanceProviderClient}. */
private KeyguardQuickAffordanceProviderClient getKeyguardQuickAffordancePickerProviderClient(
Context context) {
if (mKeyguardQuickAffordanceProviderClient == null) {
mKeyguardQuickAffordanceProviderClient =
new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
}
return mKeyguardQuickAffordanceProviderClient;
}
private KeyguardQuickAffordanceSnapshotRestorer getKeyguardQuickAffordanceSnapshotRestorer(
Context context) {
if (mKeyguardQuickAffordanceSnapshotRestorer == null) {
mKeyguardQuickAffordanceSnapshotRestorer = new KeyguardQuickAffordanceSnapshotRestorer(
getKeyguardQuickAffordancePickerInteractor(context),
getKeyguardQuickAffordancePickerProviderClient(context));
}
return mKeyguardQuickAffordanceSnapshotRestorer;
}
private static final int KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER = 1;
}