diff options
Diffstat (limited to 'tests/src/com/android/wallpaper/testing/TestCategoryProvider.java')
-rw-r--r-- | tests/src/com/android/wallpaper/testing/TestCategoryProvider.java | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java new file mode 100644 index 0000000..310840c --- /dev/null +++ b/tests/src/com/android/wallpaper/testing/TestCategoryProvider.java @@ -0,0 +1,94 @@ +/* + * 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.os.Handler; + +import com.android.wallpaper.model.Category; +import com.android.wallpaper.model.CategoryProvider; +import com.android.wallpaper.model.CategoryReceiver; +import com.android.wallpaper.model.ImageCategory; +import com.android.wallpaper.model.WallpaperInfo; + +import java.util.ArrayList; +import java.util.List; + +/** + * Test implementation of {@link CategoryProvider}. + */ +public class TestCategoryProvider implements CategoryProvider { + private final List<Category> mCategories; + + public TestCategoryProvider() { + Category category1 = new ImageCategory( + "My photos" /* title */, + "image_wallpapers" /* collection */, + 0 /* priority */); + + ArrayList<WallpaperInfo> wallpapers = new ArrayList<>(); + WallpaperInfo wallpaperInfo = new com.android.wallpaper.testing.TestWallpaperInfo(0); + wallpapers.add(wallpaperInfo); + Category category2 = new com.android.wallpaper.testing.TestWallpaperCategory( + "Test category", "init_collection", wallpapers, + 1 /* priority */); + + mCategories = new ArrayList<>(); + mCategories.add(category1); + mCategories.add(category2); + } + + @Override + public void fetchCategories(CategoryReceiver receiver, boolean forceRefresh) { + // Mimic real behavior by fetching asynchronously. + new Handler().post(new Runnable() { + @Override + public void run() { + List<Category> categories = getTestCategories(); + for (Category category : categories) { + receiver.onCategoryReceived(category); + } + receiver.doneFetchingCategories(); + } + }); + } + + @Override + public int getSize() { + return mCategories == null ? 0 : mCategories.size(); + } + + @Override + public Category getCategory(int index) { + return mCategories == null ? null : mCategories.get(index); + } + + @Override + public Category getCategory(String collectionId) { + Category category; + for (int i = 0; i < mCategories.size(); i++) { + category = mCategories.get(i); + if (category.getCollectionId().equals(collectionId)) { + return category; + } + } + return null; + } + + /** Returns a list of test Category objects used by this TestCategoryProvider. */ + public List<Category> getTestCategories() { + return mCategories; + } +} |