summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZimuzo Ezeozue <zezeozue@google.com>2022-04-11 16:23:33 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-04-11 16:23:33 +0000
commiteb30dc00a65168c57a9e2f6b73b1724f0a8d9a3b (patch)
treee58172ab69cfcc29b22bb818b09a8ce818a7f089
parent831137f172a2c6132f14bca3ab020854c2cccc8e (diff)
parent5675e56e0bcaff99aee49981d38286c43ca7eb94 (diff)
downloadMediaProvider-eb30dc00a65168c57a9e2f6b73b1724f0a8d9a3b.tar.gz
Merge "Fix flaky ItemsProviderTest" into sc-mainline-prod
-rw-r--r--src/com/android/providers/media/MediaProvider.java16
-rw-r--r--src/com/android/providers/media/photopicker/PickerSyncController.java13
-rw-r--r--src/com/android/providers/media/photopicker/data/PickerDbFacade.java7
-rw-r--r--tests/src/com/android/providers/media/photopicker/ItemsProviderTest.java6
-rw-r--r--tests/src/com/android/providers/media/scan/MediaScannerTest.java5
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
}