diff options
author | Zimuzo Ezeozue <zezeozue@google.com> | 2022-04-11 16:23:33 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-04-11 16:23:33 +0000 |
commit | eb30dc00a65168c57a9e2f6b73b1724f0a8d9a3b (patch) | |
tree | e58172ab69cfcc29b22bb818b09a8ce818a7f089 | |
parent | 831137f172a2c6132f14bca3ab020854c2cccc8e (diff) | |
parent | 5675e56e0bcaff99aee49981d38286c43ca7eb94 (diff) | |
download | MediaProvider-eb30dc00a65168c57a9e2f6b73b1724f0a8d9a3b.tar.gz |
Merge "Fix flaky ItemsProviderTest" into sc-mainline-prod
5 files changed, 34 insertions, 13 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index 9fdf74f9b..d22a58bb9 100644 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -1021,7 +1021,7 @@ public class MediaProvider extends ContentProvider { MIGRATION_LISTENER, mIdGenerator); mExternalDbFacade = new ExternalDbFacade(getContext(), mExternalDatabase); mPickerDbFacade = new PickerDbFacade(context); - mPickerSyncController = new PickerSyncController(context, mPickerDbFacade); + mPickerSyncController = new PickerSyncController(context, mPickerDbFacade, this); mPickerDataLayer = new PickerDataLayer(context, mPickerDbFacade, mPickerSyncController); mPickerUriResolver = new PickerUriResolver(context, mPickerDbFacade); @@ -9641,6 +9641,20 @@ public class MediaProvider extends ContentProvider { } @VisibleForTesting + public int getIntDeviceConfig(String namespace, String key, int defaultValue) { + if (!canReadDeviceConfig(key, defaultValue)) { + return defaultValue; + } + + final long token = Binder.clearCallingIdentity(); + try { + return DeviceConfig.getInt(namespace, key, defaultValue); + } finally { + Binder.restoreCallingIdentity(token); + } + } + + @VisibleForTesting public String getStringDeviceConfig(String key, String defaultValue) { if (!canReadDeviceConfig(key, defaultValue)) { return defaultValue; diff --git a/src/com/android/providers/media/photopicker/PickerSyncController.java b/src/com/android/providers/media/photopicker/PickerSyncController.java index ca4b761c7..962fdc900 100644 --- a/src/com/android/providers/media/photopicker/PickerSyncController.java +++ b/src/com/android/providers/media/photopicker/PickerSyncController.java @@ -42,12 +42,14 @@ import android.os.Bundle; import android.os.Process; import android.provider.CloudMediaProvider; import android.provider.CloudMediaProviderContract; +import android.provider.DeviceConfig; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import androidx.annotation.GuardedBy; import androidx.annotation.VisibleForTesting; import com.android.modules.utils.BackgroundThread; +import com.android.providers.media.MediaProvider; import com.android.providers.media.photopicker.data.PickerDbFacade; import com.android.providers.media.R; import com.android.providers.media.util.StringUtils; @@ -66,6 +68,9 @@ import java.util.Set; */ public class PickerSyncController { private static final String TAG = "PickerSyncController"; + + public static final String PROP_DEFAULT_SYNC_DELAY_MS = "pickerdb.default_sync_delay_ms"; + private static final String PREFS_KEY_CLOUD_PROVIDER_AUTHORITY = "cloud_provider_authority"; private static final String PREFS_KEY_CLOUD_PROVIDER_PKGNAME = "cloud_provider_pkg_name"; private static final String PREFS_KEY_CLOUD_PROVIDER_UID = "cloud_provider_uid"; @@ -80,8 +85,6 @@ public class PickerSyncController { private static final String DEFAULT_CLOUD_PROVIDER_AUTHORITY = null; private static final String DEFAULT_CLOUD_PROVIDER_PKGNAME = null; private static final int DEFAULT_CLOUD_PROVIDER_UID = -1; - private static final long DEFAULT_SYNC_DELAY_MS = - PickerDbFacade.getDefaultPickerDbSyncDelayMs(); private static final int SYNC_TYPE_NONE = 0; private static final int SYNC_TYPE_MEDIA_INCREMENTAL = 1; @@ -109,8 +112,10 @@ public class PickerSyncController { @GuardedBy("mLock") private CloudProviderInfo mCloudProviderInfo; - public PickerSyncController(Context context, PickerDbFacade dbFacade) { - this(context, dbFacade, LOCAL_PICKER_PROVIDER_AUTHORITY, DEFAULT_SYNC_DELAY_MS); + public PickerSyncController(Context context, PickerDbFacade dbFacade, + MediaProvider mediaProvider) { + this(context, dbFacade, LOCAL_PICKER_PROVIDER_AUTHORITY, mediaProvider.getIntDeviceConfig( + DeviceConfig.NAMESPACE_STORAGE, PROP_DEFAULT_SYNC_DELAY_MS, 5000)); } @VisibleForTesting diff --git a/src/com/android/providers/media/photopicker/data/PickerDbFacade.java b/src/com/android/providers/media/photopicker/data/PickerDbFacade.java index c268e055d..3585a94e3 100644 --- a/src/com/android/providers/media/photopicker/data/PickerDbFacade.java +++ b/src/com/android/providers/media/photopicker/data/PickerDbFacade.java @@ -38,6 +38,7 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.os.SystemProperties; +import android.provider.DeviceConfig; import android.provider.CloudMediaProviderContract; import android.provider.MediaStore; import android.text.TextUtils; @@ -59,8 +60,6 @@ import java.util.Objects; * MediaProvider for the Photo Picker. */ public class PickerDbFacade { - public static final String PROP_DEFAULT_SYNC_DELAY_MS = - "persist.sys.photopicker.pickerdb.default_sync_delay_ms"; private static final String VIDEO_MIME_TYPES = "video/%"; private final Object mLock = new Object(); @@ -769,10 +768,6 @@ public class PickerDbFacade { return c; } - public static int getDefaultPickerDbSyncDelayMs() { - return SystemProperties.getInt(PROP_DEFAULT_SYNC_DELAY_MS, 5000); - } - private boolean isLocal(String authority) { return mLocalProvider.equals(authority); } diff --git a/tests/src/com/android/providers/media/photopicker/ItemsProviderTest.java b/tests/src/com/android/providers/media/photopicker/ItemsProviderTest.java index 204741958..0ba045f81 100644 --- a/tests/src/com/android/providers/media/photopicker/ItemsProviderTest.java +++ b/tests/src/com/android/providers/media/photopicker/ItemsProviderTest.java @@ -25,7 +25,6 @@ import static android.provider.CloudMediaProviderContract.AlbumColumns; import static android.provider.CloudMediaProviderContract.MediaColumns; import static android.provider.MediaStore.VOLUME_EXTERNAL; -import static com.android.providers.media.photopicker.data.PickerDbFacade.PROP_DEFAULT_SYNC_DELAY_MS; import static com.android.providers.media.util.MimeUtils.isImageMimeType; import static com.android.providers.media.util.MimeUtils.isVideoMimeType; @@ -42,12 +41,14 @@ import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.os.ParcelFileDescriptor; +import android.provider.DeviceConfig; import android.provider.MediaStore; import androidx.test.InstrumentationRegistry; import com.android.providers.media.photopicker.data.ExternalDbFacade; import com.android.providers.media.photopicker.data.ItemsProvider; +import com.android.providers.media.photopicker.data.PickerDbFacade; import com.android.providers.media.photopicker.data.model.Category; import com.android.providers.media.photopicker.data.model.Item; import com.android.providers.media.photopicker.data.model.UserId; @@ -89,7 +90,8 @@ public class ItemsProviderTest { Manifest.permission.INTERACT_ACROSS_USERS); // Remove sync delay to avoid flaky tests - final String setSyncDelayCommand = "setprop " + PROP_DEFAULT_SYNC_DELAY_MS + " 0"; + final String setSyncDelayCommand = + "device_config put storage pickerdb.default_sync_delay_ms 0"; uiAutomation.executeShellCommand(setSyncDelayCommand); final Context context = InstrumentationRegistry.getTargetContext(); diff --git a/tests/src/com/android/providers/media/scan/MediaScannerTest.java b/tests/src/com/android/providers/media/scan/MediaScannerTest.java index 96e90ccf5..afb7597c8 100644 --- a/tests/src/com/android/providers/media/scan/MediaScannerTest.java +++ b/tests/src/com/android/providers/media/scan/MediaScannerTest.java @@ -116,6 +116,11 @@ public class MediaScannerTest { } @Override + public int getIntDeviceConfig(String namespace, String key, int defaultValue) { + return 0; + } + + @Override public void addOnPropertiesChangedListener(OnPropertiesChangedListener listener) { // Ignore } |