[WPP2] Make injectors kt am: feed6b147b
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/WallpaperPicker2/+/20833313
Change-Id: Ia9d42862a3adeb0423b3d6bc9a63298f50d10c47
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/wallpaper/module/Injector.java b/src/com/android/wallpaper/module/Injector.java
deleted file mode 100755
index 2faf3b6..0000000
--- a/src/com/android/wallpaper/module/Injector.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) 2017 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.wallpaper.module;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.android.wallpaper.compat.WallpaperManagerCompat;
-import com.android.wallpaper.config.BaseFlags;
-import com.android.wallpaper.effects.EffectsController;
-import com.android.wallpaper.effects.EffectsController.EffectsServiceListener;
-import com.android.wallpaper.model.CategoryProvider;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.monitor.PerformanceMonitor;
-import com.android.wallpaper.network.Requester;
-import com.android.wallpaper.picker.PreviewFragment.PreviewMode;
-import com.android.wallpaper.picker.individual.IndividualPickerFragment;
-import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer;
-import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor;
-import com.android.wallpaper.util.DisplayUtils;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Interface for a provider of "injected dependencies." (NOTE: The term "injector" is somewhat of a
- * misnomer; this is more aptly a service registry as part of a service locator design pattern.)
- */
-public interface Injector {
- /**
- * Get {@link AlarmManagerWrapper}
- */
- AlarmManagerWrapper getAlarmManagerWrapper(Context context);
-
- /**
- * Get {@link BitmapCropper}
- */
- BitmapCropper getBitmapCropper();
-
- /**
- * Get {@link CategoryProvider}
- */
- CategoryProvider getCategoryProvider(Context context);
-
- /**
- * Get {@link CurrentWallpaperInfoFactory}
- */
- CurrentWallpaperInfoFactory getCurrentWallpaperInfoFactory(Context context);
-
- /**
- * Get {@link CustomizationSections}
- */
- CustomizationSections getCustomizationSections(Activity activity);
-
- /**
- * Get {@link Intent} for a deep link
- */
- Intent getDeepLinkRedirectIntent(Context context, Uri uri);
-
- /**
- * Get {@link DisplayUtils}
- */
- DisplayUtils getDisplayUtils(Context context);
-
- /**
- * Get {@link DisplayUtils}
- */
- String getDownloadableIntentAction();
-
- /**
- * Get {@link DrawableLayerResolver}
- */
- DrawableLayerResolver getDrawableLayerResolver();
-
- /**
- * Get {@link EffectsController}
- */
- @Nullable
- EffectsController getEffectsController(Context context, EffectsServiceListener listener);
-
- /**
- * Get {@link ExploreIntentChecker}
- */
- ExploreIntentChecker getExploreIntentChecker(Context context);
-
- /**
- * Get {@link IndividualPickerFragment}
- */
- Fragment getIndividualPickerFragment(String collectionId);
-
- /**
- * Get {@link LiveWallpaperInfoFactory}
- */
- LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context);
-
- /**
- * Get {@link NetworkStatusNotifier}
- */
- NetworkStatusNotifier getNetworkStatusNotifier(Context context);
-
- /**
- * Get {@link PackageStatusNotifier}
- */
- PackageStatusNotifier getPackageStatusNotifier(Context context);
-
- /**
- * Get {@link PartnerProvider}
- */
- PartnerProvider getPartnerProvider(Context context);
-
- /**
- * Get {@link PerformanceMonitor}
- */
- PerformanceMonitor getPerformanceMonitor();
-
- /**
- * Get {@link Fragment} for previewing the wallpaper
- * TODO b/242908637 Remove this method when migrating to the new wallpaper preview screen
- */
- Fragment getPreviewFragment(
- Context context,
- WallpaperInfo wallpaperInfo,
- @PreviewMode int mode,
- boolean viewAsHome,
- boolean viewFullScreen,
- boolean testingModeEnabled);
-
- /**
- * Get {@link Requester}
- */
- Requester getRequester(Context context);
-
- /**
- * Get {@link SystemFeatureChecker}
- */
- SystemFeatureChecker getSystemFeatureChecker();
-
- /**
- * Get {@link UserEventLogger}
- */
- UserEventLogger getUserEventLogger(Context context);
-
- /**
- * Get {@link WallpaperManagerCompat}
- */
- WallpaperManagerCompat getWallpaperManagerCompat(Context context);
-
- /**
- * Get {@link WallpaperPersister}
- */
- WallpaperPersister getWallpaperPersister(Context context);
-
- /**
- * Get {@link WallpaperPreferences}
- */
- WallpaperPreferences getPreferences(Context context);
-
- /**
- * Get {@link WallpaperPreviewFragmentManager}
- */
- WallpaperPreviewFragmentManager getWallpaperPreviewFragmentManager();
-
- /**
- * Get {@link WallpaperRefresher}
- */
- WallpaperRefresher getWallpaperRefresher(Context context);
-
- /**
- * Get {@link WallpaperRotationRefresher}
- */
- WallpaperRotationRefresher getWallpaperRotationRefresher();
-
- /**
- * Get {@link WallpaperStatusChecker}
- */
- WallpaperStatusChecker getWallpaperStatusChecker();
-
- /**
- * Returns a {@link FragmentFactory}.
- */
- default FragmentFactory getFragmentFactory() {
- return null;
- };
-
- /** Returns the {@link BaseFlags} */
- BaseFlags getFlags();
-
- /** Provides the {@link UndoInteractor}. */
- UndoInteractor getUndoInteractor(Context context);
-
- /** Provides a map of supported {@link SnapshotRestorer} instances. */
- default Map<Integer, SnapshotRestorer> getSnapshotRestorers(Context context) {
- // Empty because we don't support undoing in WallpaperPicker2.
- return new HashMap<>();
- }
-}
diff --git a/src/com/android/wallpaper/module/Injector.kt b/src/com/android/wallpaper/module/Injector.kt
new file mode 100755
index 0000000..bcbf0e5
--- /dev/null
+++ b/src/com/android/wallpaper/module/Injector.kt
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2017 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.wallpaper.module
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import androidx.fragment.app.Fragment
+import com.android.wallpaper.compat.WallpaperManagerCompat
+import com.android.wallpaper.config.BaseFlags
+import com.android.wallpaper.effects.EffectsController
+import com.android.wallpaper.effects.EffectsController.EffectsServiceListener
+import com.android.wallpaper.model.CategoryProvider
+import com.android.wallpaper.model.WallpaperInfo
+import com.android.wallpaper.monitor.PerformanceMonitor
+import com.android.wallpaper.network.Requester
+import com.android.wallpaper.picker.PreviewFragment
+import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
+import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
+import com.android.wallpaper.util.DisplayUtils
+
+/**
+ * Interface for a provider of "injected dependencies." (NOTE: The term "injector" is somewhat of a
+ * misnomer; this is more aptly a service registry as part of a service locator design pattern.)
+ */
+interface Injector {
+ fun getAlarmManagerWrapper(context: Context): AlarmManagerWrapper
+
+ fun getBitmapCropper(): BitmapCropper
+
+ fun getCategoryProvider(context: Context): CategoryProvider
+
+ fun getCurrentWallpaperInfoFactory(context: Context): CurrentWallpaperInfoFactory
+
+ fun getCustomizationSections(activity: Activity): CustomizationSections
+
+ fun getDeepLinkRedirectIntent(context: Context, uri: Uri): Intent
+
+ fun getDisplayUtils(context: Context): DisplayUtils
+
+ fun getDownloadableIntentAction(): String?
+
+ fun getDrawableLayerResolver(): DrawableLayerResolver
+
+ fun getEffectsController(context: Context, listener: EffectsServiceListener): EffectsController?
+
+ fun getExploreIntentChecker(context: Context): ExploreIntentChecker
+
+ fun getIndividualPickerFragment(collectionId: String): Fragment
+
+ fun getLiveWallpaperInfoFactory(context: Context): LiveWallpaperInfoFactory
+
+ fun getNetworkStatusNotifier(context: Context): NetworkStatusNotifier
+
+ fun getPackageStatusNotifier(context: Context): PackageStatusNotifier
+
+ fun getPartnerProvider(context: Context): PartnerProvider
+
+ fun getPerformanceMonitor(): PerformanceMonitor?
+
+ // TODO b/242908637 Remove this method when migrating to the new wallpaper preview screen
+ fun getPreviewFragment(
+ context: Context,
+ wallpaperInfo: WallpaperInfo,
+ @PreviewFragment.PreviewMode mode: Int,
+ viewAsHome: Boolean,
+ viewFullScreen: Boolean,
+ testingModeEnabled: Boolean
+ ): Fragment
+
+ fun getRequester(context: Context): Requester
+
+ fun getSystemFeatureChecker(): SystemFeatureChecker
+
+ fun getUserEventLogger(context: Context): UserEventLogger
+
+ fun getWallpaperManagerCompat(context: Context): WallpaperManagerCompat
+
+ fun getWallpaperPersister(context: Context): WallpaperPersister
+
+ fun getPreferences(context: Context): WallpaperPreferences
+
+ fun getWallpaperPreviewFragmentManager(): WallpaperPreviewFragmentManager
+
+ fun getWallpaperRefresher(context: Context): WallpaperRefresher
+
+ fun getWallpaperRotationRefresher(): WallpaperRotationRefresher
+
+ fun getWallpaperStatusChecker(): WallpaperStatusChecker
+
+ fun getFragmentFactory(): FragmentFactory? {
+ return null
+ }
+
+ fun getFlags(): BaseFlags
+
+ fun getUndoInteractor(context: Context): UndoInteractor
+
+ fun getSnapshotRestorers(context: Context): Map<Int, SnapshotRestorer> {
+ // Empty because we don't support undoing in WallpaperPicker2.
+ return HashMap()
+ }
+}
diff --git a/src/com/android/wallpaper/module/WallpaperPicker2Injector.java b/src/com/android/wallpaper/module/WallpaperPicker2Injector.java
deleted file mode 100755
index c8b695b..0000000
--- a/src/com/android/wallpaper/module/WallpaperPicker2Injector.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Copyright (C) 2017 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.wallpaper.module;
-
-import static com.android.wallpaper.picker.PreviewFragment.ARG_FULL_SCREEN;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_PREVIEW_MODE;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_TESTING_MODE_ENABLED;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_VIEW_AS_HOME;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_WALLPAPER;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-
-import androidx.fragment.app.Fragment;
-
-import com.android.wallpaper.compat.WallpaperManagerCompat;
-import com.android.wallpaper.config.BaseFlags;
-import com.android.wallpaper.effects.EffectsController;
-import com.android.wallpaper.model.CategoryProvider;
-import com.android.wallpaper.model.LiveWallpaperInfo;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.monitor.PerformanceMonitor;
-import com.android.wallpaper.network.Requester;
-import com.android.wallpaper.network.WallpaperRequester;
-import com.android.wallpaper.picker.CustomizationPickerActivity;
-import com.android.wallpaper.picker.ImagePreviewFragment;
-import com.android.wallpaper.picker.LivePreviewFragment;
-import com.android.wallpaper.picker.PreviewFragment;
-import com.android.wallpaper.picker.individual.IndividualPickerFragment;
-import com.android.wallpaper.picker.undo.data.repository.UndoRepository;
-import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor;
-import com.android.wallpaper.util.DisplayUtils;
-
-import kotlinx.coroutines.GlobalScope;
-
-/**
- * A concrete, real implementation of the dependency provider.
- */
-public class WallpaperPicker2Injector implements Injector {
- private AlarmManagerWrapper mAlarmManagerWrapper;
- private BitmapCropper mBitmapCropper;
- private CategoryProvider mCategoryProvider;
- private CurrentWallpaperInfoFactory mCurrentWallpaperFactory;
- private CustomizationSections mCustomizationSections;
- private DisplayUtils mDisplayUtils;
- private DrawableLayerResolver mDrawableLayerResolver;
- private ExploreIntentChecker mExploreIntentChecker;
- private LiveWallpaperInfoFactory mLiveWallpaperInfoFactory;
- private NetworkStatusNotifier mNetworkStatusNotifier;
- private PackageStatusNotifier mPackageStatusNotifier;
- private PartnerProvider mPartnerProvider;
- private PerformanceMonitor mPerformanceMonitor;
- private Requester mRequester;
- private SystemFeatureChecker mSystemFeatureChecker;
- private UserEventLogger mUserEventLogger;
- private WallpaperManagerCompat mWallpaperManagerCompat;
- private WallpaperPersister mWallpaperPersister;
- private WallpaperPreferences mPrefs;
- private WallpaperPreviewFragmentManager mWallpaperPreviewFragmentManager;
- private WallpaperRefresher mWallpaperRefresher;
- private WallpaperRotationRefresher mWallpaperRotationRefresher;
- private WallpaperStatusChecker mWallpaperStatusChecker;
- private BaseFlags mFlags;
- private UndoInteractor mUndoInteractor;
-
- @Override
- public synchronized AlarmManagerWrapper getAlarmManagerWrapper(Context context) {
- if (mAlarmManagerWrapper == null) {
- mAlarmManagerWrapper = new DefaultAlarmManagerWrapper(context.getApplicationContext());
- }
- return mAlarmManagerWrapper;
- }
-
- @Override
- public synchronized BitmapCropper getBitmapCropper() {
- if (mBitmapCropper == null) {
- mBitmapCropper = new DefaultBitmapCropper();
- }
- return mBitmapCropper;
- }
-
- @Override
- public CategoryProvider getCategoryProvider(Context context) {
- if (mCategoryProvider == null) {
- mCategoryProvider = new DefaultCategoryProvider(context.getApplicationContext());
- }
- return mCategoryProvider;
- }
-
- @Override
- public synchronized CurrentWallpaperInfoFactory getCurrentWallpaperInfoFactory(
- Context context) {
- if (mCurrentWallpaperFactory == null) {
- mCurrentWallpaperFactory =
- new DefaultCurrentWallpaperInfoFactory(context.getApplicationContext());
- }
- return mCurrentWallpaperFactory;
- }
-
- @Override
- public CustomizationSections getCustomizationSections(Activity activity) {
- if (mCustomizationSections == null) {
- mCustomizationSections = new WallpaperPickerSections();
- }
- return mCustomizationSections;
- }
-
- @Override
- public Intent getDeepLinkRedirectIntent(Context context, Uri uri) {
- Intent intent = new Intent();
- intent.setClass(context, CustomizationPickerActivity.class);
- intent.setData(uri);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- return intent;
- }
-
- @Override
- public DisplayUtils getDisplayUtils(Context context) {
- if (mDisplayUtils == null) {
- mDisplayUtils = new DisplayUtils(context.getApplicationContext());
- }
- return mDisplayUtils;
- }
-
- @Override
- public String getDownloadableIntentAction() {
- return null;
- }
-
- @Override
- public DrawableLayerResolver getDrawableLayerResolver() {
- if (mDrawableLayerResolver == null) {
- mDrawableLayerResolver = new DefaultDrawableLayerResolver();
- }
- return mDrawableLayerResolver;
- }
-
- @Override
- public EffectsController getEffectsController(Context context,
- EffectsController.EffectsServiceListener listener) {
- return null;
- }
-
- @Override
- public synchronized ExploreIntentChecker getExploreIntentChecker(Context context) {
- if (mExploreIntentChecker == null) {
- mExploreIntentChecker = new DefaultExploreIntentChecker(
- context.getApplicationContext());
- }
- return mExploreIntentChecker;
- }
-
- @Override
- public synchronized Fragment getIndividualPickerFragment(String collectionId) {
- return IndividualPickerFragment.newInstance(collectionId);
- }
-
- @Override
- public LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context) {
- if (mLiveWallpaperInfoFactory == null) {
- mLiveWallpaperInfoFactory = new DefaultLiveWallpaperInfoFactory();
- }
- return mLiveWallpaperInfoFactory;
- }
-
- @Override
- public synchronized NetworkStatusNotifier getNetworkStatusNotifier(Context context) {
- if (mNetworkStatusNotifier == null) {
- mNetworkStatusNotifier = new DefaultNetworkStatusNotifier(
- context.getApplicationContext());
- }
- return mNetworkStatusNotifier;
- }
-
- @Override
- public synchronized PackageStatusNotifier getPackageStatusNotifier(Context context) {
- if (mPackageStatusNotifier == null) {
- mPackageStatusNotifier = new DefaultPackageStatusNotifier(
- context.getApplicationContext());
- }
- return mPackageStatusNotifier;
- }
-
- @Override
- public synchronized PartnerProvider getPartnerProvider(Context context) {
- if (mPartnerProvider == null) {
- mPartnerProvider = new DefaultPartnerProvider(context.getApplicationContext());
- }
- return mPartnerProvider;
- }
-
- @Override
- public synchronized PerformanceMonitor getPerformanceMonitor() {
- if (mPerformanceMonitor == null) {
- mPerformanceMonitor = new PerformanceMonitor() {
- @Override
- public void recordFullResPreviewLoadedMemorySnapshot() {
- // No Op
- }
- };
- }
- return mPerformanceMonitor;
- }
-
- @Override
- public Fragment getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode,
- boolean viewAsHome, boolean viewFullScreen, boolean testingModeEnabled) {
- Bundle args = new Bundle();
- args.putParcelable(ARG_WALLPAPER, wallpaperInfo);
- args.putInt(ARG_PREVIEW_MODE, mode);
- args.putBoolean(ARG_VIEW_AS_HOME, viewAsHome);
- args.putBoolean(ARG_FULL_SCREEN, viewFullScreen);
- args.putBoolean(ARG_TESTING_MODE_ENABLED, testingModeEnabled);
- PreviewFragment fragment = wallpaperInfo instanceof LiveWallpaperInfo
- ? new LivePreviewFragment() : new ImagePreviewFragment();
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public synchronized Requester getRequester(Context context) {
- if (mRequester == null) {
- mRequester = new WallpaperRequester(context.getApplicationContext());
- }
- return mRequester;
- }
-
- @Override
- public synchronized SystemFeatureChecker getSystemFeatureChecker() {
- if (mSystemFeatureChecker == null) {
- mSystemFeatureChecker = new DefaultSystemFeatureChecker();
- }
- return mSystemFeatureChecker;
- }
-
- @Override
- public UserEventLogger getUserEventLogger(Context context) {
- if (mUserEventLogger == null) {
- mUserEventLogger = new NoOpUserEventLogger();
- }
- return mUserEventLogger;
- }
-
- @Override
- public synchronized WallpaperManagerCompat getWallpaperManagerCompat(Context context) {
- if (mWallpaperManagerCompat == null) {
- mWallpaperManagerCompat = WallpaperManagerCompat.getInstance(context);
- }
- return mWallpaperManagerCompat;
- }
-
- @Override
- public synchronized WallpaperPersister getWallpaperPersister(Context context) {
- if (mWallpaperPersister == null) {
- mWallpaperPersister = new DefaultWallpaperPersister(context.getApplicationContext());
- }
- return mWallpaperPersister;
- }
-
- @Override
- public synchronized WallpaperPreferences getPreferences(Context context) {
- if (mPrefs == null) {
- mPrefs = new DefaultWallpaperPreferences(context.getApplicationContext());
- }
- return mPrefs;
- }
-
- @Override
- public synchronized WallpaperPreviewFragmentManager getWallpaperPreviewFragmentManager() {
- if (mWallpaperPreviewFragmentManager == null) {
- mWallpaperPreviewFragmentManager = new DefaultWallpaperPreviewFragmentManager();
- }
- return mWallpaperPreviewFragmentManager;
- }
-
- @Override
- public synchronized WallpaperRefresher getWallpaperRefresher(Context context) {
- if (mWallpaperRefresher == null) {
- mWallpaperRefresher = new DefaultWallpaperRefresher(context.getApplicationContext());
- }
- return mWallpaperRefresher;
- }
-
- @Override
- public synchronized WallpaperRotationRefresher getWallpaperRotationRefresher() {
- if (mWallpaperRotationRefresher == null) {
- mWallpaperRotationRefresher = new WallpaperRotationRefresher() {
- @Override
- public void refreshWallpaper(Context context, Listener listener) {
- // Not implemented
- listener.onError();
- }
- };
- }
- return mWallpaperRotationRefresher;
- }
-
- @Override
- public WallpaperStatusChecker getWallpaperStatusChecker() {
- if (mWallpaperStatusChecker == null) {
- mWallpaperStatusChecker = new DefaultWallpaperStatusChecker();
- }
- return mWallpaperStatusChecker;
- }
-
- @Override
- public BaseFlags getFlags() {
- if (mFlags == null) {
- mFlags = new BaseFlags() {};
- }
-
- return mFlags;
- }
-
- @Override
- public final UndoInteractor getUndoInteractor(Context context) {
- if (mUndoInteractor == null) {
- mUndoInteractor = new UndoInteractor(
- GlobalScope.INSTANCE,
- new UndoRepository(),
- getSnapshotRestorers(context));
- }
-
- return mUndoInteractor;
- }
-
- /**
- * When this injector is overridden, this is the minimal value that should be used by restorers
- * returns in {@link #getSnapshotRestorers(Context)}.
- */
- protected static final int MIN_SNAPSHOT_RESTORER_KEY = 0;
-}
diff --git a/src/com/android/wallpaper/module/WallpaperPicker2Injector.kt b/src/com/android/wallpaper/module/WallpaperPicker2Injector.kt
new file mode 100755
index 0000000..d97e4be
--- /dev/null
+++ b/src/com/android/wallpaper/module/WallpaperPicker2Injector.kt
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2017 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.wallpaper.module
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import com.android.wallpaper.compat.WallpaperManagerCompat
+import com.android.wallpaper.config.BaseFlags
+import com.android.wallpaper.effects.EffectsController
+import com.android.wallpaper.effects.EffectsController.EffectsServiceListener
+import com.android.wallpaper.model.CategoryProvider
+import com.android.wallpaper.model.LiveWallpaperInfo
+import com.android.wallpaper.model.WallpaperInfo
+import com.android.wallpaper.monitor.PerformanceMonitor
+import com.android.wallpaper.network.Requester
+import com.android.wallpaper.network.WallpaperRequester
+import com.android.wallpaper.picker.CustomizationPickerActivity
+import com.android.wallpaper.picker.ImagePreviewFragment
+import com.android.wallpaper.picker.LivePreviewFragment
+import com.android.wallpaper.picker.PreviewFragment
+import com.android.wallpaper.picker.individual.IndividualPickerFragment
+import com.android.wallpaper.picker.undo.data.repository.UndoRepository
+import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
+import com.android.wallpaper.util.DisplayUtils
+import kotlinx.coroutines.GlobalScope
+
+open class WallpaperPicker2Injector : Injector {
+ private var alarmManagerWrapper: AlarmManagerWrapper? = null
+ private var bitmapCropper: BitmapCropper? = null
+ private var categoryProvider: CategoryProvider? = null
+ private var currentWallpaperFactory: CurrentWallpaperInfoFactory? = null
+ private var customizationSections: CustomizationSections? = null
+ private var displayUtils: DisplayUtils? = null
+ private var drawableLayerResolver: DrawableLayerResolver? = null
+ private var exploreIntentChecker: ExploreIntentChecker? = null
+ private var liveWallpaperInfoFactory: LiveWallpaperInfoFactory? = null
+ private var networkStatusNotifier: NetworkStatusNotifier? = null
+ private var packageStatusNotifier: PackageStatusNotifier? = null
+ private var partnerProvider: PartnerProvider? = null
+ private var performanceMonitor: PerformanceMonitor? = null
+ private var requester: Requester? = null
+ private var systemFeatureChecker: SystemFeatureChecker? = null
+ private var userEventLogger: UserEventLogger? = null
+ private var wallpaperManagerCompat: WallpaperManagerCompat? = null
+ private var wallpaperPersister: WallpaperPersister? = null
+ private var prefs: WallpaperPreferences? = null
+ private var wallpaperPreviewFragmentManager: WallpaperPreviewFragmentManager? = null
+ private var wallpaperRefresher: WallpaperRefresher? = null
+ private var wallpaperRotationRefresher: WallpaperRotationRefresher? = null
+ private var wallpaperStatusChecker: WallpaperStatusChecker? = null
+ private var flags: BaseFlags? = null
+ private var undoInteractor: UndoInteractor? = null
+
+ @Synchronized
+ override fun getAlarmManagerWrapper(context: Context): AlarmManagerWrapper {
+ return alarmManagerWrapper
+ ?: DefaultAlarmManagerWrapper(context.applicationContext).also {
+ alarmManagerWrapper = it
+ }
+ }
+
+ @Synchronized
+ override fun getBitmapCropper(): BitmapCropper {
+ return bitmapCropper ?: DefaultBitmapCropper().also { bitmapCropper = it }
+ }
+
+ override fun getCategoryProvider(context: Context): CategoryProvider {
+ return categoryProvider
+ ?: DefaultCategoryProvider(context.applicationContext).also { categoryProvider = it }
+ }
+
+ @Synchronized
+ override fun getCurrentWallpaperInfoFactory(context: Context): CurrentWallpaperInfoFactory {
+ return currentWallpaperFactory
+ ?: DefaultCurrentWallpaperInfoFactory(context.applicationContext).also {
+ currentWallpaperFactory = it
+ }
+ }
+
+ override fun getCustomizationSections(activity: Activity): CustomizationSections {
+
+ return customizationSections
+ ?: WallpaperPickerSections().also { customizationSections = it }
+ }
+
+ override fun getDeepLinkRedirectIntent(context: Context, uri: Uri): Intent {
+ val intent = Intent()
+ intent.setClass(context, CustomizationPickerActivity::class.java)
+ intent.data = uri
+ intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
+ return intent
+ }
+
+ override fun getDisplayUtils(context: Context): DisplayUtils {
+ return displayUtils ?: DisplayUtils(context.applicationContext).also { displayUtils = it }
+ }
+
+ override fun getDownloadableIntentAction(): String? {
+ return null
+ }
+
+ override fun getDrawableLayerResolver(): DrawableLayerResolver {
+ return drawableLayerResolver
+ ?: DefaultDrawableLayerResolver().also { drawableLayerResolver = it }
+ }
+
+ override fun getEffectsController(
+ context: Context,
+ listener: EffectsServiceListener
+ ): EffectsController? {
+ return null
+ }
+
+ @Synchronized
+ override fun getExploreIntentChecker(context: Context): ExploreIntentChecker {
+ return exploreIntentChecker
+ ?: DefaultExploreIntentChecker(context.applicationContext).also {
+ exploreIntentChecker = it
+ }
+ }
+
+ @Synchronized
+ override fun getIndividualPickerFragment(collectionId: String): Fragment {
+ return IndividualPickerFragment.newInstance(collectionId)
+ }
+
+ override fun getLiveWallpaperInfoFactory(context: Context): LiveWallpaperInfoFactory {
+ return liveWallpaperInfoFactory
+ ?: DefaultLiveWallpaperInfoFactory().also { liveWallpaperInfoFactory = it }
+ }
+
+ @Synchronized
+ override fun getNetworkStatusNotifier(context: Context): NetworkStatusNotifier {
+ return networkStatusNotifier
+ ?: DefaultNetworkStatusNotifier(context.applicationContext).also {
+ networkStatusNotifier = it
+ }
+ }
+
+ @Synchronized
+ override fun getPackageStatusNotifier(context: Context): PackageStatusNotifier {
+ return packageStatusNotifier
+ ?: DefaultPackageStatusNotifier(context.applicationContext).also {
+ packageStatusNotifier = it
+ }
+ }
+
+ @Synchronized
+ override fun getPartnerProvider(context: Context): PartnerProvider {
+ return partnerProvider
+ ?: DefaultPartnerProvider(context.applicationContext).also { partnerProvider = it }
+ }
+
+ @Synchronized
+ override fun getPerformanceMonitor(): PerformanceMonitor? {
+
+ return performanceMonitor
+ ?: PerformanceMonitor {
+ /** No Op */
+ }
+ .also { performanceMonitor = it }
+ }
+
+ override fun getPreviewFragment(
+ context: Context,
+ wallpaperInfo: WallpaperInfo,
+ mode: Int,
+ viewAsHome: Boolean,
+ viewFullScreen: Boolean,
+ testingModeEnabled: Boolean
+ ): Fragment {
+ val args = Bundle()
+ args.putParcelable(PreviewFragment.ARG_WALLPAPER, wallpaperInfo)
+ args.putInt(PreviewFragment.ARG_PREVIEW_MODE, mode)
+ args.putBoolean(PreviewFragment.ARG_VIEW_AS_HOME, viewAsHome)
+ args.putBoolean(PreviewFragment.ARG_FULL_SCREEN, viewFullScreen)
+ args.putBoolean(PreviewFragment.ARG_TESTING_MODE_ENABLED, testingModeEnabled)
+ val fragment =
+ if (wallpaperInfo is LiveWallpaperInfo) LivePreviewFragment()
+ else ImagePreviewFragment()
+ fragment.arguments = args
+ return fragment
+ }
+
+ @Synchronized
+ override fun getRequester(context: Context): Requester {
+ return requester ?: WallpaperRequester(context.applicationContext).also { requester = it }
+ }
+
+ @Synchronized
+ override fun getSystemFeatureChecker(): SystemFeatureChecker {
+ return systemFeatureChecker
+ ?: DefaultSystemFeatureChecker().also { systemFeatureChecker = it }
+ }
+
+ override fun getUserEventLogger(context: Context): UserEventLogger {
+ return userEventLogger ?: NoOpUserEventLogger().also { userEventLogger = it }
+ }
+
+ @Synchronized
+ override fun getWallpaperManagerCompat(context: Context): WallpaperManagerCompat {
+ return wallpaperManagerCompat
+ ?: WallpaperManagerCompat.getInstance(context).also { wallpaperManagerCompat = it }
+ }
+
+ @Synchronized
+ override fun getWallpaperPersister(context: Context): WallpaperPersister {
+ return wallpaperPersister
+ ?: DefaultWallpaperPersister(context.applicationContext).also {
+ wallpaperPersister = it
+ }
+ }
+
+ @Synchronized
+ override fun getPreferences(context: Context): WallpaperPreferences {
+ return prefs ?: DefaultWallpaperPreferences(context.applicationContext).also { prefs = it }
+ }
+
+ @Synchronized
+ override fun getWallpaperPreviewFragmentManager(): WallpaperPreviewFragmentManager {
+ return wallpaperPreviewFragmentManager
+ ?: DefaultWallpaperPreviewFragmentManager().also {
+ wallpaperPreviewFragmentManager = it
+ }
+ }
+
+ @Synchronized
+ override fun getWallpaperRefresher(context: Context): WallpaperRefresher {
+ return wallpaperRefresher
+ ?: DefaultWallpaperRefresher(context.applicationContext).also {
+ wallpaperRefresher = it
+ }
+ }
+
+ @Synchronized
+ override fun getWallpaperRotationRefresher(): WallpaperRotationRefresher {
+ return wallpaperRotationRefresher
+ ?: WallpaperRotationRefresher { _, listener ->
+ // Not implemented
+ listener.onError()
+ }
+ .also { wallpaperRotationRefresher = it }
+ }
+
+ override fun getWallpaperStatusChecker(): WallpaperStatusChecker {
+ return wallpaperStatusChecker
+ ?: DefaultWallpaperStatusChecker().also { wallpaperStatusChecker = it }
+ }
+
+ override fun getFlags(): BaseFlags {
+ return flags ?: object : BaseFlags() {}.also { flags = it }
+ }
+
+ override fun getUndoInteractor(context: Context): UndoInteractor {
+ return undoInteractor
+ ?: UndoInteractor(GlobalScope, UndoRepository(), getSnapshotRestorers(context)).also {
+ undoInteractor = it
+ }
+ }
+
+ companion object {
+ /**
+ * When this injector is overridden, this is the minimal value that should be used by
+ * restorers returns in [getSnapshotRestorers].
+ */
+ @JvmStatic protected val MIN_SNAPSHOT_RESTORER_KEY = 0
+ }
+}
diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
index f0ca422..2b6c71d 100644
--- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java
+++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
@@ -20,7 +20,6 @@
import android.app.Activity;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
@@ -119,23 +118,19 @@
void cleanUp();
}
- private final CategoryProvider mCategoryProvider;
-
private RecyclerView mImageGrid;
private CategoryAdapter mAdapter;
+ private CategoryProvider mCategoryProvider;
private ArrayList<Category> mCategories = new ArrayList<>();
private Point mTileSizePx;
private boolean mAwaitingCategories;
private boolean mIsFeaturedCollectionAvailable;
- public CategorySelectorFragment() {
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
mAdapter = new CategoryAdapter(mCategories);
- mCategoryProvider = InjectorProvider.getInjector().getCategoryProvider(getContext());
- }
-
- public CategorySelectorFragment(Context context) {
- mAdapter = new CategoryAdapter(mCategories);
- mCategoryProvider = InjectorProvider.getInjector().getCategoryProvider(context);
+ mCategoryProvider = InjectorProvider.getInjector().getCategoryProvider(requireContext());
}
@Nullable
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment2.kt b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment2.kt
index 02edaa3..4a21dbc 100644
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment2.kt
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment2.kt
@@ -437,7 +437,7 @@
override fun onResume() {
super.onResume()
- val preferences = InjectorProvider.getInjector().getPreferences(activity)
+ val preferences = InjectorProvider.getInjector().getPreferences(requireActivity())
preferences.lastAppActiveTimestamp = Date().time
// Reset Glide memory settings to a "normal" level of usage since it may have been lowered
@@ -607,7 +607,7 @@
}
private fun getAppliedWallpaperIds(): Set<String> {
- val prefs = InjectorProvider.getInjector().getPreferences(context)
+ val prefs = InjectorProvider.getInjector().getPreferences(requireContext())
val wallpaperInfo = wallpaperManager?.wallpaperInfo
val appliedWallpaperIds: MutableSet<String> = ArraySet()
val homeWallpaperId =
diff --git a/tests/src/com/android/wallpaper/testing/TestCustomizationSections.kt b/tests/src/com/android/wallpaper/testing/TestCustomizationSections.kt
new file mode 100644
index 0000000..bd716b2
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestCustomizationSections.kt
@@ -0,0 +1,45 @@
+package com.android.wallpaper.testing
+
+import android.os.Bundle
+import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.LifecycleOwner
+import com.android.wallpaper.model.CustomizationSectionController
+import com.android.wallpaper.model.PermissionRequester
+import com.android.wallpaper.model.WallpaperColorsViewModel
+import com.android.wallpaper.model.WallpaperPreviewNavigator
+import com.android.wallpaper.model.WorkspaceViewModel
+import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.module.CustomizationSections
+
+/** Test implementation of [CustomizationSections] */
+class TestCustomizationSections : CustomizationSections {
+ override fun getSectionControllersForScreen(
+ screen: CustomizationSections.Screen?,
+ activity: FragmentActivity?,
+ lifecycleOwner: LifecycleOwner?,
+ wallpaperColorsViewModel: WallpaperColorsViewModel?,
+ workspaceViewModel: WorkspaceViewModel?,
+ permissionRequester: PermissionRequester?,
+ wallpaperPreviewNavigator: WallpaperPreviewNavigator?,
+ sectionNavigationController:
+ CustomizationSectionController.CustomizationSectionNavigationController?,
+ savedInstanceState: Bundle?,
+ wallpaperInfoFactory: CurrentWallpaperInfoFactory?
+ ): MutableList<CustomizationSectionController<*>> {
+ return arrayListOf()
+ }
+
+ override fun getAllSectionControllers(
+ activity: FragmentActivity?,
+ lifecycleOwner: LifecycleOwner?,
+ wallpaperColorsViewModel: WallpaperColorsViewModel?,
+ workspaceViewModel: WorkspaceViewModel?,
+ permissionRequester: PermissionRequester?,
+ wallpaperPreviewNavigator: WallpaperPreviewNavigator?,
+ sectionNavigationController:
+ CustomizationSectionController.CustomizationSectionNavigationController?,
+ savedInstanceState: Bundle?
+ ): MutableList<CustomizationSectionController<*>> {
+ return arrayListOf()
+ }
+}
diff --git a/tests/src/com/android/wallpaper/testing/TestDrawableLayerResolver.kt b/tests/src/com/android/wallpaper/testing/TestDrawableLayerResolver.kt
new file mode 100644
index 0000000..43b3ad4
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestDrawableLayerResolver.kt
@@ -0,0 +1,12 @@
+package com.android.wallpaper.testing
+
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.LayerDrawable
+import com.android.wallpaper.module.DrawableLayerResolver
+
+/** Test implementation of [DrawableLayerResolver] */
+class TestDrawableLayerResolver : DrawableLayerResolver {
+ override fun resolveLayer(layerDrawable: LayerDrawable?): Drawable {
+ return layerDrawable!!.getDrawable(0)
+ }
+}
diff --git a/tests/src/com/android/wallpaper/testing/TestInjector.java b/tests/src/com/android/wallpaper/testing/TestInjector.java
deleted file mode 100644
index 925cc2f..0000000
--- a/tests/src/com/android/wallpaper/testing/TestInjector.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2019 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.wallpaper.testing;
-
-import static com.android.wallpaper.picker.PreviewFragment.ARG_FULL_SCREEN;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_PREVIEW_MODE;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_TESTING_MODE_ENABLED;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_VIEW_AS_HOME;
-import static com.android.wallpaper.picker.PreviewFragment.ARG_WALLPAPER;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.android.wallpaper.compat.WallpaperManagerCompat;
-import com.android.wallpaper.config.BaseFlags;
-import com.android.wallpaper.effects.EffectsController;
-import com.android.wallpaper.model.CategoryProvider;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.module.AlarmManagerWrapper;
-import com.android.wallpaper.module.BitmapCropper;
-import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
-import com.android.wallpaper.module.CustomizationSections;
-import com.android.wallpaper.module.DefaultLiveWallpaperInfoFactory;
-import com.android.wallpaper.module.DrawableLayerResolver;
-import com.android.wallpaper.module.ExploreIntentChecker;
-import com.android.wallpaper.module.Injector;
-import com.android.wallpaper.module.LiveWallpaperInfoFactory;
-import com.android.wallpaper.module.NetworkStatusNotifier;
-import com.android.wallpaper.module.PackageStatusNotifier;
-import com.android.wallpaper.module.PartnerProvider;
-import com.android.wallpaper.module.SystemFeatureChecker;
-import com.android.wallpaper.module.UserEventLogger;
-import com.android.wallpaper.module.WallpaperPersister;
-import com.android.wallpaper.module.WallpaperPreferences;
-import com.android.wallpaper.module.WallpaperPreviewFragmentManager;
-import com.android.wallpaper.module.WallpaperRefresher;
-import com.android.wallpaper.module.WallpaperRotationRefresher;
-import com.android.wallpaper.module.WallpaperStatusChecker;
-import com.android.wallpaper.monitor.PerformanceMonitor;
-import com.android.wallpaper.network.Requester;
-import com.android.wallpaper.picker.ImagePreviewFragment;
-import com.android.wallpaper.picker.individual.IndividualPickerFragment;
-import com.android.wallpaper.picker.undo.data.repository.UndoRepository;
-import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor;
-import com.android.wallpaper.util.DisplayUtils;
-
-import java.util.HashMap;
-
-import kotlinx.coroutines.GlobalScope;
-
-/**
- * Test implementation of the dependency injector.
- */
-public class TestInjector implements Injector {
-
- private AlarmManagerWrapper mAlarmManagerWrapper;
- private BitmapCropper mBitmapCropper;
- private CategoryProvider mCategoryProvider;
- private CurrentWallpaperInfoFactory mCurrentWallpaperInfoFactory;
- private ExploreIntentChecker mExploreIntentChecker;
- private NetworkStatusNotifier mNetworkStatusNotifier;
- private PartnerProvider mPartnerProvider;
- private PerformanceMonitor mPerformanceMonitor;
- private SystemFeatureChecker mSystemFeatureChecker;
- private UserEventLogger mUserEventLogger;
- private WallpaperManagerCompat mWallpaperManagerCompat;
- private WallpaperPersister mWallpaperPersister;
- private WallpaperPreferences mPrefs;
- private WallpaperPreviewFragmentManager mWallpaperPreviewFragmentManager;
- private WallpaperRefresher mWallpaperRefresher;
- private WallpaperRotationRefresher mWallpaperRotationRefresher;
- private BaseFlags mFlags;
- private UndoInteractor mUndoInteractor;
-
- @Override
- public AlarmManagerWrapper getAlarmManagerWrapper(Context unused) {
- if (mAlarmManagerWrapper == null) {
- mAlarmManagerWrapper = new TestAlarmManagerWrapper();
- }
- return mAlarmManagerWrapper;
- }
-
- @Override
- public BitmapCropper getBitmapCropper() {
- if (mBitmapCropper == null) {
- mBitmapCropper = new com.android.wallpaper.testing.TestBitmapCropper();
- }
- return mBitmapCropper;
- }
-
- @Override
- public CategoryProvider getCategoryProvider(Context context) {
- if (mCategoryProvider == null) {
- mCategoryProvider = new TestCategoryProvider();
- }
- return mCategoryProvider;
- }
-
- @Override
- public CurrentWallpaperInfoFactory getCurrentWallpaperInfoFactory(Context context) {
- if (mCurrentWallpaperInfoFactory == null) {
- mCurrentWallpaperInfoFactory =
- new TestCurrentWallpaperInfoFactory(context.getApplicationContext());
- }
- return mCurrentWallpaperInfoFactory;
- }
-
- @Override
- public CustomizationSections getCustomizationSections(Activity activity) {
- return null;
- }
-
- @Override
- public Intent getDeepLinkRedirectIntent(Context context, Uri uri) {
- return null;
- }
-
- @Override
- public DisplayUtils getDisplayUtils(Context context) {
- return new DisplayUtils(context);
- }
-
- @Override
- public String getDownloadableIntentAction() {
- return null;
- }
-
- @Override
- public DrawableLayerResolver getDrawableLayerResolver() {
- return null;
- }
-
- @Nullable
- @Override
- public EffectsController getEffectsController(Context context,
- EffectsController.EffectsServiceListener listener) {
- return null;
- }
-
- @Override
- public ExploreIntentChecker getExploreIntentChecker(Context unused) {
- if (mExploreIntentChecker == null) {
- mExploreIntentChecker = new TestExploreIntentChecker();
- }
- return mExploreIntentChecker;
- }
-
- @Override
- public IndividualPickerFragment getIndividualPickerFragment(String collectionId) {
- return IndividualPickerFragment.newInstance(collectionId);
- }
-
- @Override
- public LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context) {
- return new DefaultLiveWallpaperInfoFactory();
- }
-
- @Override
- public NetworkStatusNotifier getNetworkStatusNotifier(Context context) {
- if (mNetworkStatusNotifier == null) {
- mNetworkStatusNotifier = new TestNetworkStatusNotifier();
- }
- return mNetworkStatusNotifier;
- }
-
- @Override
- public PackageStatusNotifier getPackageStatusNotifier(Context context) {
- return null;
- }
-
- @Override
- public PartnerProvider getPartnerProvider(Context context) {
- if (mPartnerProvider == null) {
- mPartnerProvider = new TestPartnerProvider();
- }
- return mPartnerProvider;
- }
-
- @Override
- public PerformanceMonitor getPerformanceMonitor() {
- if (mPerformanceMonitor == null) {
- mPerformanceMonitor = new TestPerformanceMonitor();
- }
- return mPerformanceMonitor;
- }
-
- @Override
- public Fragment getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode,
- boolean viewAsHome, boolean viewFullScreen, boolean testingModeEnabled) {
- Bundle args = new Bundle();
- args.putParcelable(ARG_WALLPAPER, wallpaperInfo);
- args.putInt(ARG_PREVIEW_MODE, mode);
- args.putBoolean(ARG_VIEW_AS_HOME, viewAsHome);
- args.putBoolean(ARG_FULL_SCREEN, viewFullScreen);
- args.putBoolean(ARG_TESTING_MODE_ENABLED, testingModeEnabled);
- ImagePreviewFragment fragment = new ImagePreviewFragment();
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public Requester getRequester(Context unused) {
- return null;
- }
-
- @Override
- public SystemFeatureChecker getSystemFeatureChecker() {
- if (mSystemFeatureChecker == null) {
- mSystemFeatureChecker = new com.android.wallpaper.testing.TestSystemFeatureChecker();
- }
- return mSystemFeatureChecker;
- }
-
- @Override
- public UserEventLogger getUserEventLogger(Context unused) {
- if (mUserEventLogger == null) {
- mUserEventLogger = new com.android.wallpaper.testing.TestUserEventLogger();
- }
- return mUserEventLogger;
- }
-
- @Override
- public WallpaperManagerCompat getWallpaperManagerCompat(Context context) {
- if (mWallpaperManagerCompat == null) {
- mWallpaperManagerCompat = new com.android.wallpaper.testing.TestWallpaperManagerCompat(
- context.getApplicationContext());
- }
- return mWallpaperManagerCompat;
- }
-
- @Override
- public WallpaperPersister getWallpaperPersister(Context context) {
- if (mWallpaperPersister == null) {
- mWallpaperPersister = new TestWallpaperPersister(context.getApplicationContext());
- }
- return mWallpaperPersister;
- }
-
- @Override
- public WallpaperPreferences getPreferences(Context context) {
- if (mPrefs == null) {
- mPrefs = new TestWallpaperPreferences();
- }
- return mPrefs;
- }
-
- @Override
- public WallpaperPreviewFragmentManager getWallpaperPreviewFragmentManager() {
- if (mWallpaperPreviewFragmentManager == null) {
- mWallpaperPreviewFragmentManager = new TestWallpaperPreviewFragmentManager();
- }
- return mWallpaperPreviewFragmentManager;
- }
-
- @Override
- public WallpaperRefresher getWallpaperRefresher(Context context) {
- if (mWallpaperRefresher == null) {
- mWallpaperRefresher = new TestWallpaperRefresher(context.getApplicationContext());
- }
- return mWallpaperRefresher;
- }
-
- @Override
- public WallpaperRotationRefresher getWallpaperRotationRefresher() {
- if (mWallpaperRotationRefresher == null) {
- mWallpaperRotationRefresher = (context, listener) -> {
- // Not implemented
- listener.onError();
- };
- }
- return mWallpaperRotationRefresher;
- }
-
- @Override
- public WallpaperStatusChecker getWallpaperStatusChecker() {
- return new WallpaperStatusChecker() {
- @Override
- public boolean isHomeStaticWallpaperSet(Context context) {
- return true;
- }
-
- @Override
- public boolean isLockWallpaperSet(Context context) {
- return true;
- }
- };
- }
-
- @Override
- public BaseFlags getFlags() {
- if (mFlags == null) {
- mFlags = new BaseFlags() {};
- }
-
- return mFlags;
- }
-
- @Override
- public final UndoInteractor getUndoInteractor(Context context) {
- if (mUndoInteractor == null) {
- mUndoInteractor = new UndoInteractor(
- GlobalScope.INSTANCE,
- new UndoRepository(),
- new HashMap<>()); // Empty because we don't support undoing in WallpaperPicker2.
- }
-
- return mUndoInteractor;
- }
-}
diff --git a/tests/src/com/android/wallpaper/testing/TestInjector.kt b/tests/src/com/android/wallpaper/testing/TestInjector.kt
new file mode 100644
index 0000000..7c15540
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestInjector.kt
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2019 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.wallpaper.testing
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import com.android.wallpaper.compat.WallpaperManagerCompat
+import com.android.wallpaper.config.BaseFlags
+import com.android.wallpaper.effects.EffectsController
+import com.android.wallpaper.effects.EffectsController.EffectsServiceListener
+import com.android.wallpaper.model.CategoryProvider
+import com.android.wallpaper.model.WallpaperInfo
+import com.android.wallpaper.module.AlarmManagerWrapper
+import com.android.wallpaper.module.BitmapCropper
+import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.module.CustomizationSections
+import com.android.wallpaper.module.DefaultLiveWallpaperInfoFactory
+import com.android.wallpaper.module.DrawableLayerResolver
+import com.android.wallpaper.module.ExploreIntentChecker
+import com.android.wallpaper.module.Injector
+import com.android.wallpaper.module.LiveWallpaperInfoFactory
+import com.android.wallpaper.module.NetworkStatusNotifier
+import com.android.wallpaper.module.PackageStatusNotifier
+import com.android.wallpaper.module.PartnerProvider
+import com.android.wallpaper.module.SystemFeatureChecker
+import com.android.wallpaper.module.UserEventLogger
+import com.android.wallpaper.module.WallpaperPersister
+import com.android.wallpaper.module.WallpaperPreferences
+import com.android.wallpaper.module.WallpaperPreviewFragmentManager
+import com.android.wallpaper.module.WallpaperRefresher
+import com.android.wallpaper.module.WallpaperRotationRefresher
+import com.android.wallpaper.module.WallpaperStatusChecker
+import com.android.wallpaper.monitor.PerformanceMonitor
+import com.android.wallpaper.network.Requester
+import com.android.wallpaper.picker.ImagePreviewFragment
+import com.android.wallpaper.picker.PreviewFragment
+import com.android.wallpaper.picker.individual.IndividualPickerFragment
+import com.android.wallpaper.picker.undo.data.repository.UndoRepository
+import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
+import com.android.wallpaper.util.DisplayUtils
+import kotlinx.coroutines.GlobalScope
+
+/** Test implementation of [Injector] */
+open class TestInjector : Injector {
+ private var alarmManagerWrapper: AlarmManagerWrapper? = null
+ private var bitmapCropper: BitmapCropper? = null
+ private var categoryProvider: CategoryProvider? = null
+ private var currentWallpaperInfoFactory: CurrentWallpaperInfoFactory? = null
+ private var customizationSections: CustomizationSections? = null
+ private var drawableLayerResolver: DrawableLayerResolver? = null
+ private var exploreIntentChecker: ExploreIntentChecker? = null
+ private var networkStatusNotifier: NetworkStatusNotifier? = null
+ private var packageStatusNotifier: PackageStatusNotifier? = null
+ private var partnerProvider: PartnerProvider? = null
+ private var performanceMonitor: PerformanceMonitor? = null
+ private var requester: Requester? = null
+ private var systemFeatureChecker: SystemFeatureChecker? = null
+ private var userEventLogger: UserEventLogger? = null
+ private var wallpaperManagerCompat: WallpaperManagerCompat? = null
+ private var wallpaperPersister: WallpaperPersister? = null
+ private var prefs: WallpaperPreferences? = null
+ private var wallpaperPreviewFragmentManager: WallpaperPreviewFragmentManager? = null
+ private var wallpaperRefresher: WallpaperRefresher? = null
+ private var wallpaperRotationRefresher: WallpaperRotationRefresher? = null
+ private var flags: BaseFlags? = null
+ private var undoInteractor: UndoInteractor? = null
+
+ override fun getAlarmManagerWrapper(context: Context): AlarmManagerWrapper {
+ return alarmManagerWrapper ?: TestAlarmManagerWrapper().also { alarmManagerWrapper = it }
+ }
+
+ override fun getBitmapCropper(): BitmapCropper {
+ return bitmapCropper ?: TestBitmapCropper().also { bitmapCropper = it }
+ }
+
+ override fun getCategoryProvider(context: Context): CategoryProvider {
+ return categoryProvider ?: TestCategoryProvider().also { categoryProvider = it }
+ }
+
+ override fun getCurrentWallpaperInfoFactory(context: Context): CurrentWallpaperInfoFactory {
+ return currentWallpaperInfoFactory
+ ?: TestCurrentWallpaperInfoFactory(context.applicationContext).also {
+ currentWallpaperInfoFactory = it
+ }
+ }
+
+ override fun getCustomizationSections(activity: Activity): CustomizationSections {
+ return customizationSections
+ ?: TestCustomizationSections().also { customizationSections = it }
+ }
+
+ override fun getDeepLinkRedirectIntent(context: Context, uri: Uri): Intent {
+ return Intent()
+ }
+
+ override fun getDisplayUtils(context: Context): DisplayUtils {
+ return DisplayUtils(context)
+ }
+
+ override fun getDownloadableIntentAction(): String? {
+ return null
+ }
+
+ override fun getDrawableLayerResolver(): DrawableLayerResolver {
+ return drawableLayerResolver
+ ?: TestDrawableLayerResolver().also { drawableLayerResolver = it }
+ }
+
+ override fun getEffectsController(
+ context: Context,
+ listener: EffectsServiceListener
+ ): EffectsController? {
+ return null
+ }
+
+ override fun getExploreIntentChecker(context: Context): ExploreIntentChecker {
+ return exploreIntentChecker ?: TestExploreIntentChecker().also { exploreIntentChecker = it }
+ }
+
+ override fun getIndividualPickerFragment(collectionId: String): IndividualPickerFragment {
+ return IndividualPickerFragment.newInstance(collectionId)
+ }
+
+ override fun getLiveWallpaperInfoFactory(context: Context): LiveWallpaperInfoFactory {
+ return DefaultLiveWallpaperInfoFactory()
+ }
+
+ override fun getNetworkStatusNotifier(context: Context): NetworkStatusNotifier {
+ return networkStatusNotifier
+ ?: TestNetworkStatusNotifier().also { networkStatusNotifier = it }
+ }
+
+ override fun getPackageStatusNotifier(context: Context): PackageStatusNotifier {
+ return packageStatusNotifier
+ ?: TestPackageStatusNotifier().also { packageStatusNotifier = it }
+ }
+
+ override fun getPartnerProvider(context: Context): PartnerProvider {
+ return partnerProvider ?: TestPartnerProvider().also { partnerProvider = it }
+ }
+
+ override fun getPerformanceMonitor(): PerformanceMonitor? {
+ return performanceMonitor ?: TestPerformanceMonitor().also { performanceMonitor = it }
+ }
+
+ override fun getPreviewFragment(
+ context: Context,
+ wallpaperInfo: WallpaperInfo,
+ mode: Int,
+ viewAsHome: Boolean,
+ viewFullScreen: Boolean,
+ testingModeEnabled: Boolean
+ ): Fragment {
+ val args = Bundle()
+ args.putParcelable(PreviewFragment.ARG_WALLPAPER, wallpaperInfo)
+ args.putInt(PreviewFragment.ARG_PREVIEW_MODE, mode)
+ args.putBoolean(PreviewFragment.ARG_VIEW_AS_HOME, viewAsHome)
+ args.putBoolean(PreviewFragment.ARG_FULL_SCREEN, viewFullScreen)
+ args.putBoolean(PreviewFragment.ARG_TESTING_MODE_ENABLED, testingModeEnabled)
+ val fragment = ImagePreviewFragment()
+ fragment.arguments = args
+ return fragment
+ }
+
+ override fun getRequester(unused: Context): Requester {
+ return requester ?: TestRequester().also { requester = it }
+ }
+
+ override fun getSystemFeatureChecker(): SystemFeatureChecker {
+ return systemFeatureChecker ?: TestSystemFeatureChecker().also { systemFeatureChecker = it }
+ }
+
+ override fun getUserEventLogger(context: Context): UserEventLogger {
+ return userEventLogger ?: TestUserEventLogger().also { userEventLogger = it }
+ }
+
+ override fun getWallpaperManagerCompat(context: Context): WallpaperManagerCompat {
+ return wallpaperManagerCompat
+ ?: TestWallpaperManagerCompat(context.applicationContext).also {
+ wallpaperManagerCompat = it
+ }
+ }
+
+ override fun getWallpaperPersister(context: Context): WallpaperPersister {
+ return wallpaperPersister
+ ?: TestWallpaperPersister(context.applicationContext).also { wallpaperPersister = it }
+ }
+
+ override fun getPreferences(context: Context): WallpaperPreferences {
+ return prefs ?: TestWallpaperPreferences().also { prefs = it }
+ }
+
+ override fun getWallpaperPreviewFragmentManager(): WallpaperPreviewFragmentManager {
+ return wallpaperPreviewFragmentManager
+ ?: TestWallpaperPreviewFragmentManager().also { wallpaperPreviewFragmentManager = it }
+ }
+
+ override fun getWallpaperRefresher(context: Context): WallpaperRefresher {
+ return wallpaperRefresher
+ ?: TestWallpaperRefresher(context.applicationContext).also { wallpaperRefresher = it }
+ }
+
+ override fun getWallpaperRotationRefresher(): WallpaperRotationRefresher {
+ return wallpaperRotationRefresher
+ ?: WallpaperRotationRefresher {
+ context: Context?,
+ listener: WallpaperRotationRefresher.Listener ->
+ // Not implemented
+ listener.onError()
+ }
+ .also { wallpaperRotationRefresher = it }
+ }
+
+ override fun getWallpaperStatusChecker(): WallpaperStatusChecker {
+ return object : WallpaperStatusChecker {
+ override fun isHomeStaticWallpaperSet(context: Context): Boolean {
+ return true
+ }
+
+ override fun isLockWallpaperSet(context: Context): Boolean {
+ return true
+ }
+ }
+ }
+
+ override fun getFlags(): BaseFlags {
+ return flags ?: object : BaseFlags() {}.also { flags = it }
+ }
+
+ override fun getUndoInteractor(context: Context): UndoInteractor {
+ return undoInteractor
+ ?: UndoInteractor(
+ GlobalScope,
+ UndoRepository(),
+ HashMap()
+ ) // Empty because we don't support undoing in WallpaperPicker2..also{}
+ }
+}
diff --git a/tests/src/com/android/wallpaper/testing/TestPackageStatusNotifier.kt b/tests/src/com/android/wallpaper/testing/TestPackageStatusNotifier.kt
new file mode 100644
index 0000000..fad8652
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestPackageStatusNotifier.kt
@@ -0,0 +1,14 @@
+package com.android.wallpaper.testing
+
+import com.android.wallpaper.module.PackageStatusNotifier
+
+/** Test implementation of [PackageStatusNotifier] */
+class TestPackageStatusNotifier : PackageStatusNotifier {
+ override fun addListener(listener: PackageStatusNotifier.Listener?, action: String?) {
+ // Do nothing intended
+ }
+
+ override fun removeListener(listener: PackageStatusNotifier.Listener?) {
+ // Do nothing intended
+ }
+}
diff --git a/tests/src/com/android/wallpaper/testing/TestRequester.kt b/tests/src/com/android/wallpaper/testing/TestRequester.kt
new file mode 100644
index 0000000..7f2f007
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestRequester.kt
@@ -0,0 +1,32 @@
+package com.android.wallpaper.testing
+
+import android.app.Activity
+import android.graphics.Bitmap
+import android.net.Uri
+import com.android.volley.Request
+import com.android.wallpaper.network.Requester
+import com.bumptech.glide.request.target.Target
+import java.io.File
+
+/** Test implementation of [Requester] */
+class TestRequester : Requester {
+ override fun <T : Any?> addToRequestQueue(request: Request<T>?) {
+ // Do nothing intended
+ }
+
+ override fun loadImageFile(imageUrl: Uri?): File {
+ return File("test_file.txt")
+ }
+
+ override fun loadImageFileWithActivity(
+ activity: Activity?,
+ imageUrl: Uri?,
+ target: Target<File>?
+ ) {
+ // Do nothing intended
+ }
+
+ override fun loadImageBitmap(imageUrl: Uri?, target: Target<Bitmap>?) {
+ // Do nothing intended
+ }
+}