summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/wallpaper/testing/TestWallpaperInfo.java
blob: c0ccee6c03ea0f8846637e028e62f75711b8a0b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
/*
 * 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.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;

import com.android.wallpaper.asset.Asset;
import com.android.wallpaper.model.InlinePreviewIntentFactory;
import com.android.wallpaper.model.WallpaperInfo;

import java.util.Arrays;
import java.util.List;

/**
 * Test model object for a wallpaper coming from local drawable resources.
 */
public class TestWallpaperInfo extends WallpaperInfo {
    public static final int COLOR_BLACK = 0;
    public static final Parcelable.Creator<TestWallpaperInfo> CREATOR =
            new Parcelable.Creator<TestWallpaperInfo>() {
                @Override
                public TestWallpaperInfo createFromParcel(Parcel in) {
                    return new TestWallpaperInfo(in);
                }

                @Override
                public TestWallpaperInfo[] newArray(int size) {
                    return new TestWallpaperInfo[size];
                }
            };
    private int mPixelColor;
    private TestAsset mAsset;
    private TestAsset mThumbAsset;
    private List<String> mAttributions;
    private android.app.WallpaperInfo mWallpaperComponent;
    private String mActionUrl;
    private String mBaseImageUrl;
    private String mCollectionId;
    private String mWallpaperId;
    private boolean mIsAssetCorrupt;
    private int mBackupPermission;

    /** Constructs a test WallpaperInfo object representing a 1x1 wallpaper of the given color. */
    public TestWallpaperInfo(int pixelColor) {
        this(pixelColor, "test-wallpaper");
    }

    /** Constructs a test WallpaperInfo object representing a 1x1 wallpaper of the given color. */
    public TestWallpaperInfo(int pixelColor, String id) {
        mPixelColor = pixelColor;
        mAttributions = Arrays.asList("Test wallpaper");
        mWallpaperComponent = null;
        mIsAssetCorrupt = false;
        mBackupPermission = BACKUP_ALLOWED;
        mWallpaperId = id;
    }

    private TestWallpaperInfo(Parcel in) {
        mPixelColor = in.readInt();
        mAttributions = in.createStringArrayList();
        mActionUrl = in.readString();
        mBaseImageUrl = in.readString();
        mCollectionId = in.readString();
        mWallpaperId = in.readString();
        mIsAssetCorrupt = in.readInt() == 1;
        mBackupPermission = in.readInt();
    }

    @Override
    public Drawable getOverlayIcon(Context context) {
        return null;
    }

    @Override
    public List<String> getAttributions(Context context) {
        return mAttributions;
    }

    /**
     * Override default "Test wallpaper" attributions for testing.
     */
    public void setAttributions(List<String> attributions) {
        mAttributions = attributions;
    }

    @Override
    public String getActionUrl(Context unused) {
        return mActionUrl;
    }

    /** Sets the action URL for this wallpaper. */
    public void setActionUrl(String actionUrl) {
        mActionUrl = actionUrl;
    }

    @Override
    public String getBaseImageUrl() {
        return mBaseImageUrl;
    }

    /** Sets the base image URL for this wallpaper. */
    public void setBaseImageUrl(String baseImageUrl) {
        mBaseImageUrl = baseImageUrl;
    }

    @Override
    public String getCollectionId(Context unused) {
        return mCollectionId;
    }

    /** Sets the collection ID for this wallpaper. */
    public void setCollectionId(String collectionId) {
        mCollectionId = collectionId;
    }

    @Override
    public String getWallpaperId() {
        return mWallpaperId;
    }

    /** Sets the ID for this wallpaper. */
    public void setWallpaperId(String wallpaperId) {
        mWallpaperId = wallpaperId;
    }

    @Override
    public Asset getAsset(Context context) {
        if (mAsset == null) {
            mAsset = new TestAsset(mPixelColor, mIsAssetCorrupt);
        }
        return mAsset;
    }

    @Override
    public Asset getThumbAsset(Context context) {
        if (mThumbAsset == null) {
            mThumbAsset = new TestAsset(mPixelColor, mIsAssetCorrupt);
        }
        return mThumbAsset;
    }

    @Override
    public void showPreview(Activity srcActivity,
            InlinePreviewIntentFactory inlinePreviewIntentFactory, int requestCode) {
        srcActivity.startActivityForResult(
                inlinePreviewIntentFactory.newIntent(srcActivity, this), requestCode);
    }

    @Override
    @BackupPermission
    public int getBackupPermission() {
        return mBackupPermission;
    }

    public void setBackupPermission(@BackupPermission int backupPermission) {
        mBackupPermission = backupPermission;
    }

    @Override
    public android.app.WallpaperInfo getWallpaperComponent() {
        return mWallpaperComponent;
    }

    public void setWallpaperComponent(android.app.WallpaperInfo wallpaperComponent) {
        mWallpaperComponent = wallpaperComponent;
    }

    /**
     * Simulates that the {@link Asset} instances returned by calls to #getAsset and #getThumbAsset
     * on
     * this object are "corrupt" and will fail to perform decode operations such as #decodeBitmap,
     * #decodeBitmapRegion, #decodeRawDimensions, etc (these methods will call their callbacks with
     * null instead of meaningful objects).
     */
    public void corruptAssets() {
        mIsAssetCorrupt = true;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(mPixelColor);
        parcel.writeStringList(mAttributions);
        parcel.writeString(mActionUrl);
        parcel.writeString(mBaseImageUrl);
        parcel.writeString(mCollectionId);
        parcel.writeString(mWallpaperId);
        parcel.writeInt(mIsAssetCorrupt ? 1 : 0);
        parcel.writeInt(mBackupPermission);
    }

    @Override
    public boolean equals(Object object) {
        if (object == this) {
            return true;
        }
        if (object instanceof TestWallpaperInfo) {
            return mPixelColor == ((TestWallpaperInfo) object).mPixelColor;
        }
        return false;
    }

    @Override
    public int hashCode() {
        return mPixelColor;
    }
}