1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.providers.media; 18 19 import static java.util.Objects.requireNonNull; 20 21 import androidx.annotation.NonNull; 22 import androidx.annotation.Nullable; 23 24 import java.util.Arrays; 25 import java.util.Collections; 26 import java.util.List; 27 import java.util.concurrent.Executor; 28 29 /** 30 * {@link ConfigStore} implementation that does not attempt to read the "real" configs (usually 31 * stored to {@link android.provider.DeviceConfig}) and instead simply returns default values. 32 */ 33 public class TestConfigStore implements ConfigStore { 34 private boolean mCloudMediaInPhotoPickerEnabled = false; 35 private @Nullable List<String> mAllowedCloudProviderPackages = null; 36 private @Nullable String mDefaultCloudProviderPackage = null; 37 private int mPickerSyncDelayMs = 0; 38 enableCloudMediaFeatureAndSetAllowedCloudProviderPackages(String... providers)39 public void enableCloudMediaFeatureAndSetAllowedCloudProviderPackages(String... providers) { 40 mAllowedCloudProviderPackages = Arrays.asList(providers); 41 enableCloudMediaFeature(); 42 } 43 enableCloudMediaFeature()44 public void enableCloudMediaFeature() { 45 mCloudMediaInPhotoPickerEnabled = true; 46 } 47 clearAllowedCloudProviderPackagesAndDisableCloudMediaFeature()48 public void clearAllowedCloudProviderPackagesAndDisableCloudMediaFeature() { 49 mAllowedCloudProviderPackages = null; 50 disableCloudMediaFeature(); 51 } 52 disableCloudMediaFeature()53 public void disableCloudMediaFeature() { 54 mCloudMediaInPhotoPickerEnabled = false; 55 } 56 57 @Override getAllowedCloudProviderPackages()58 public @NonNull List<String> getAllowedCloudProviderPackages() { 59 return mAllowedCloudProviderPackages != null ? mAllowedCloudProviderPackages 60 : Collections.emptyList(); 61 } 62 63 @Override isCloudMediaInPhotoPickerEnabled()64 public boolean isCloudMediaInPhotoPickerEnabled() { 65 return mCloudMediaInPhotoPickerEnabled; 66 } 67 setDefaultCloudProviderPackage(@onNull String packageName)68 public void setDefaultCloudProviderPackage(@NonNull String packageName) { 69 requireNonNull(packageName, "null packageName is not allowed. " 70 + "Consider clearDefaultCloudProviderPackage()"); 71 mDefaultCloudProviderPackage = packageName; 72 } 73 clearDefaultCloudProviderPackage()74 public void clearDefaultCloudProviderPackage() { 75 mDefaultCloudProviderPackage = null; 76 } 77 78 @Nullable 79 @Override getDefaultCloudProviderPackage()80 public String getDefaultCloudProviderPackage() { 81 return mDefaultCloudProviderPackage; 82 } 83 84 @Override getPickerSyncDelayMs()85 public int getPickerSyncDelayMs() { 86 return mPickerSyncDelayMs; 87 } 88 setPickerSyncDelayMs(int delay)89 public void setPickerSyncDelayMs(int delay) { 90 mPickerSyncDelayMs = delay; 91 } 92 93 @NonNull 94 @Override getTranscodeCompatManifest()95 public List<String> getTranscodeCompatManifest() { 96 return Collections.emptyList(); 97 } 98 99 @NonNull 100 @Override getTranscodeCompatStale()101 public List<String> getTranscodeCompatStale() { 102 return Collections.emptyList(); 103 } 104 105 @Override addOnChangeListener(@onNull Executor executor, @NonNull Runnable listener)106 public void addOnChangeListener(@NonNull Executor executor, @NonNull Runnable listener) { 107 // No-op. 108 } 109 } 110