summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2019-11-20 00:22:33 -0800
committerHyunyoung Song <hyunyoungs@google.com>2019-11-20 08:43:12 +0000
commit9734f7414149c6fc9f0a704576ad17e4c09ec2d8 (patch)
treef1225c36792ebf211f4f90937fa4092dfd0fd3db /tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java
parentd6b718de5f6bd24410087482a7687bb1fd09536b (diff)
parent6fc434eb5a3a3f2de222dd155b584adf0611353e (diff)
downloadandroid_packages_apps_WallpaperPicker2-9734f7414149c6fc9f0a704576ad17e4c09ec2d8.tar.gz
android_packages_apps_WallpaperPicker2-9734f7414149c6fc9f0a704576ad17e4c09ec2d8.tar.bz2
android_packages_apps_WallpaperPicker2-9734f7414149c6fc9f0a704576ad17e4c09ec2d8.zip
Merging from ub-launcher3-qt-future-dev @ build 6018744
Test: manual, presubmit on the source branch http://x20/teams/android-launcher/merge/ub-launcher3-qt-future-dev_6018744.html Change-Id: I619b51952d3d8577b9929d81ca3ce2ca8cc2fac9 Merged-In: Ied2409b3978f5f0429bd05a9f2c855f46a5f0bfc
Diffstat (limited to 'tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java')
-rw-r--r--tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java223
1 files changed, 223 insertions, 0 deletions
diff --git a/tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java b/tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java
new file mode 100644
index 0000000..5fc9421
--- /dev/null
+++ b/tests/src/com/android/wallpaper/testing/TestWallpaperPersister.java
@@ -0,0 +1,223 @@
+/*
+ * 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.graphics.Bitmap;
+import android.graphics.Rect;
+
+import androidx.annotation.Nullable;
+
+import com.android.wallpaper.asset.Asset;
+import com.android.wallpaper.asset.Asset.BitmapReceiver;
+import com.android.wallpaper.model.WallpaperInfo;
+import com.android.wallpaper.module.InjectorProvider;
+import com.android.wallpaper.module.WallpaperChangedNotifier;
+import com.android.wallpaper.module.WallpaperPersister;
+import com.android.wallpaper.module.WallpaperPreferences;
+
+import java.util.List;
+
+/**
+ * Test double for {@link WallpaperPersister}.
+ */
+public class TestWallpaperPersister implements WallpaperPersister {
+
+ private Context mAppContext;
+ private WallpaperPreferences mPrefs;
+ private WallpaperChangedNotifier mWallpaperChangedNotifier;
+ private Bitmap mCurrentHomeWallpaper;
+ private Bitmap mCurrentLockWallpaper;
+ private Bitmap mPendingHomeWallpaper;
+ private Bitmap mPendingLockWallpaper;
+ private List<String> mHomeAttributions;
+ private String mHomeActionUrl;
+ @Destination
+ private int mDestination;
+ private WallpaperPersister.SetWallpaperCallback mCallback;
+ private boolean mFailNextCall;
+ private Rect mCropRect;
+ private float mScale;
+ @WallpaperPosition
+ private int mWallpaperPosition;
+
+ public TestWallpaperPersister(Context appContext) {
+ mAppContext = appContext;
+ mPrefs = InjectorProvider.getInjector().getPreferences(appContext);
+ mWallpaperChangedNotifier = WallpaperChangedNotifier.getInstance();
+
+ mCurrentHomeWallpaper = null;
+ mCurrentLockWallpaper = null;
+ mPendingHomeWallpaper = null;
+ mPendingLockWallpaper = null;
+ mFailNextCall = false;
+ mScale = -1.0f;
+ }
+
+ @Override
+ public void setIndividualWallpaper(final WallpaperInfo wallpaperInfo, Asset asset,
+ @Nullable final Rect cropRect, final float scale, final @Destination int destination,
+ final WallpaperPersister.SetWallpaperCallback callback) {
+ asset.decodeBitmap(50, 50, bitmap -> {
+ if (destination == DEST_HOME_SCREEN || destination == DEST_BOTH) {
+ mPendingHomeWallpaper = bitmap;
+ mPrefs.setHomeWallpaperAttributions(wallpaperInfo.getAttributions(mAppContext));
+ mPrefs.setWallpaperPresentationMode(
+ WallpaperPreferences.PRESENTATION_MODE_STATIC);
+ mPrefs.setHomeWallpaperRemoteId(wallpaperInfo.getWallpaperId());
+ }
+ if (destination == DEST_LOCK_SCREEN || destination == DEST_BOTH) {
+ mPendingLockWallpaper = bitmap;
+ mPrefs.setLockWallpaperAttributions(wallpaperInfo.getAttributions(mAppContext));
+ }
+ mDestination = destination;
+ mCallback = callback;
+ mCropRect = cropRect;
+ mScale = scale;
+ });
+ }
+
+ @Override
+ public void setIndividualWallpaperWithPosition(Activity activity, WallpaperInfo wallpaper,
+ @WallpaperPosition int wallpaperPosition, SetWallpaperCallback callback) {
+ wallpaper.getAsset(activity).decodeBitmap(50, 50, new BitmapReceiver() {
+ @Override
+ public void onBitmapDecoded(@Nullable Bitmap bitmap) {
+ mPendingHomeWallpaper = bitmap;
+ mPrefs.setHomeWallpaperAttributions(wallpaper.getAttributions(mAppContext));
+ mPrefs.setHomeWallpaperBaseImageUrl(wallpaper.getBaseImageUrl());
+ mPrefs.setHomeWallpaperActionUrl(wallpaper.getActionUrl(mAppContext));
+ mPrefs.setHomeWallpaperCollectionId(wallpaper.getCollectionId(mAppContext));
+ mPrefs.setHomeWallpaperRemoteId(wallpaper.getWallpaperId());
+ mPrefs.setWallpaperPresentationMode(WallpaperPreferences.PRESENTATION_MODE_STATIC);
+ mPendingLockWallpaper = bitmap;
+ mPrefs.setLockWallpaperAttributions(wallpaper.getAttributions(mAppContext));
+
+ mDestination = WallpaperPersister.DEST_BOTH;
+ mCallback = callback;
+ mWallpaperPosition = wallpaperPosition;
+ }
+ });
+ }
+
+ @Override
+ public boolean setWallpaperInRotation(Bitmap wallpaperBitmap, List<String> attributions,
+ int actionLabelRes, int actionIconRes, String actionUrl, String collectionId) {
+ if (mFailNextCall) {
+ return false;
+ }
+
+ mCurrentHomeWallpaper = wallpaperBitmap;
+ mCurrentLockWallpaper = wallpaperBitmap;
+ mHomeAttributions = attributions;
+ mHomeActionUrl = actionUrl;
+ return true;
+ }
+
+ @Override
+ public int setWallpaperBitmapInNextRotation(Bitmap wallpaperBitmap) {
+ mCurrentHomeWallpaper = wallpaperBitmap;
+ mCurrentLockWallpaper = wallpaperBitmap;
+ return 1;
+ }
+
+ @Override
+ public boolean finalizeWallpaperForNextRotation(List<String> attributions, String actionUrl,
+ int actionLabelRes, int actionIconRes, String collectionId, int wallpaperId) {
+ mHomeAttributions = attributions;
+ mHomeActionUrl = actionUrl;
+ return true;
+ }
+
+ /** Returns mock system wallpaper bitmap. */
+ public Bitmap getCurrentHomeWallpaper() {
+ return mCurrentHomeWallpaper;
+ }
+
+ /** Returns mock lock screen wallpaper bitmap. */
+ public Bitmap getCurrentLockWallpaper() {
+ return mCurrentLockWallpaper;
+ }
+
+ /** Returns mock home attributions. */
+ public List<String> getHomeAttributions() {
+ return mHomeAttributions;
+ }
+
+ /** Returns the home wallpaper action URL. */
+ public String getHomeActionUrl() {
+ return mHomeActionUrl;
+ }
+
+ /** Returns the Destination a wallpaper was most recently set on. */
+ @Destination
+ public int getLastDestination() {
+ return mDestination;
+ }
+
+ /**
+ * Sets whether the next "set wallpaper" operation should fail or succeed.
+ */
+ public void setFailNextCall(Boolean failNextCall) {
+ mFailNextCall = failNextCall;
+ }
+
+ /**
+ * Implemented so synchronous test methods can control the completion of what would otherwise be
+ * an asynchronous operation.
+ */
+ public void finishSettingWallpaper() {
+ if (mFailNextCall) {
+ mCallback.onError(null /* throwable */);
+ } else {
+ if (mDestination == DEST_HOME_SCREEN || mDestination == DEST_BOTH) {
+ mCurrentHomeWallpaper = mPendingHomeWallpaper;
+ mPendingHomeWallpaper = null;
+ }
+ if (mDestination == DEST_LOCK_SCREEN || mDestination == DEST_BOTH) {
+ mCurrentLockWallpaper = mPendingLockWallpaper;
+ mPendingLockWallpaper = null;
+ }
+ mCallback.onSuccess();
+ mWallpaperChangedNotifier.notifyWallpaperChanged();
+ }
+ }
+
+ @Override
+ public void setWallpaperInfoInPreview(WallpaperInfo wallpaperInfo) {
+ }
+
+ @Override
+ public void onLiveWallpaperSet() {
+ }
+
+ /** Returns the last requested wallpaper bitmap scale. */
+ public float getScale() {
+ return mScale;
+ }
+
+ /** Returns the last requested wallpaper crop. */
+ public Rect getCropRect() {
+ return mCropRect;
+ }
+
+ /** Returns the last selected wallpaper position option. */
+ @WallpaperPosition
+ public int getWallpaperPosition() {
+ return mWallpaperPosition;
+ }
+}