diff options
author | Arnaud Berry <arnaudberry@google.com> | 2019-08-30 16:35:26 -0700 |
---|---|---|
committer | Arnaud Berry <arnaudberry@google.com> | 2019-08-30 16:42:59 -0700 |
commit | ead1cd2f7761a2b00d585beb749c5ac68ecf3f38 (patch) | |
tree | 66379347c7f2f5a76b9078e123109e240f7a724a /TestMediaApp/src/com/android/car/media/testmediaapp | |
parent | 304a3dd3c1608f8ffd163a6d3625ecca1b1a79be (diff) | |
download | tests-ead1cd2f7761a2b00d585beb749c5ac68ecf3f38.tar.gz |
Add pref to control the new delay in TmaAssetProvider#openAssetFile
Bug: 140314643
Test: manual
Change-Id: I636e649435543adc073102de4eea130985eeca57
Diffstat (limited to 'TestMediaApp/src/com/android/car/media/testmediaapp')
5 files changed, 34 insertions, 13 deletions
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaAssetProvider.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaAssetProvider.java index 15406a3..fc9fd49 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaAssetProvider.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaAssetProvider.java @@ -24,6 +24,8 @@ import android.net.Uri; import android.text.TextUtils; import android.util.Log; +import com.android.car.media.testmediaapp.prefs.TmaPrefs; + import java.io.FileNotFoundException; import java.io.IOException; @@ -45,10 +47,17 @@ public class TmaAssetProvider extends ContentProvider { return prefix + localArt; } + private int mAssetDelay = 0; + @Override public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException { Log.i(TAG, "TmaAssetProvider#openAssetFile " + uri); + try { + Thread.sleep(mAssetDelay + (int)(mAssetDelay * (Math.random()))); + } catch (InterruptedException ignored) { + } + String file_path = uri.getPath(); if (TextUtils.isEmpty(file_path)) throw new FileNotFoundException(); try { @@ -64,7 +73,9 @@ public class TmaAssetProvider extends ContentProvider { @Override public boolean onCreate() { - return false; + TmaPrefs.getInstance(getContext()).mAssetReplyDelay.registerChangeListener( + (oldValue, newValue) -> mAssetDelay = newValue.mReplyDelayMs); + return true; } @Override diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java index c795610..a51e623 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java @@ -22,7 +22,6 @@ import android.os.Handler; import android.support.v4.media.MediaBrowserCompat.MediaItem; import android.support.v4.media.session.MediaSessionCompat; import android.support.v4.media.session.PlaybackStateCompat; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -30,7 +29,7 @@ import androidx.media.MediaBrowserServiceCompat; import com.android.car.media.testmediaapp.loader.TmaLoader; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType; -import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaNodeReplyDelay; +import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay; import com.android.car.media.testmediaapp.prefs.TmaPrefs; import java.util.ArrayList; @@ -139,7 +138,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat { private void getMediaItemsWithDelay(@NonNull String parentId, @NonNull Result<List<MediaItem>> result, @Nullable String filter) { // TODO: allow per item override of the delay ? - TmaNodeReplyDelay delay = mPrefs.mRootReplyDelay.getValue(); + TmaReplyDelay delay = mPrefs.mRootReplyDelay.getValue(); Runnable task = () -> { TmaMediaItem node; if (TmaAccountType.NONE.equals(mPrefs.mAccountType.getValue())) { @@ -164,7 +163,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat { result.sendResult(items); } }; - if (delay == TmaNodeReplyDelay.NONE) { + if (delay == TmaReplyDelay.NONE) { task.run(); } else { result.detach(); diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java index cbbf92b..ad870b6 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java @@ -51,17 +51,19 @@ public class TmaEnumPrefs { } /** For simulating various reply speeds. */ - public enum TmaNodeReplyDelay implements EnumPrefValue { + public enum TmaReplyDelay implements EnumPrefValue { NONE("None", "none", 0), SHORT("Short", "short", 50), + SHORT_PLUS("Short+", "short+", 150), MEDIUM("Medium", "medium", 500), + MEDIUM_PLUS("Medium+", "medium+", 2000), LONG("Long", "long", 5000), EXTRA_LONG("Extra-Long", "extra-long", 10000); private final PrefValueImpl mPrefValue; public final int mReplyDelayMs; - TmaNodeReplyDelay(String displayTitle, String id, int delayMs) { + TmaReplyDelay(String displayTitle, String id, int delayMs) { mPrefValue = new PrefValueImpl(displayTitle + "(" + delayMs + ")", id); mReplyDelayMs = delayMs; } diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java index e3f9417..3305a06 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java @@ -24,7 +24,7 @@ import androidx.preference.PreferenceManager; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType; -import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaNodeReplyDelay; +import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay; import java.util.HashMap; import java.util.Map; @@ -40,7 +40,10 @@ public class TmaPrefs { public final PrefEntry<TmaBrowseNodeType> mRootNodeType; /** Wait time before sending a node reply, unless overridden in json (when supported). */ - public final PrefEntry<TmaNodeReplyDelay> mRootReplyDelay; + public final PrefEntry<TmaReplyDelay> mRootReplyDelay; + + /** Wait time for openAssetFile. */ + public final PrefEntry<TmaReplyDelay> mAssetReplyDelay; public synchronized static TmaPrefs getInstance(Context context) { @@ -58,7 +61,8 @@ public class TmaPrefs { private enum TmaPrefKey { ACCOUNT_TYPE_KEY, ROOT_NODE_TYPE_KEY, - ROOT_REPLY_DELAY_KEY + ROOT_REPLY_DELAY_KEY, + ASSET_REPLY_DELAY_KEY } /** @@ -120,7 +124,10 @@ public class TmaPrefs { TmaBrowseNodeType.values(), TmaBrowseNodeType.NULL); mRootReplyDelay = new EnumPrefEntry<>(TmaPrefKey.ROOT_REPLY_DELAY_KEY, - TmaNodeReplyDelay.values(), TmaNodeReplyDelay.NONE); + TmaReplyDelay.values(), TmaReplyDelay.NONE); + + mAssetReplyDelay = new EnumPrefEntry<>(TmaPrefKey.ASSET_REPLY_DELAY_KEY, + TmaReplyDelay.values(), TmaReplyDelay.NONE); } diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefsFragment.java b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefsFragment.java index 31cf4ae..482de16 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefsFragment.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefsFragment.java @@ -26,7 +26,7 @@ import androidx.preference.PreferenceScreen; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType; -import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaNodeReplyDelay; +import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay; import com.android.car.media.testmediaapp.prefs.TmaPrefs.PrefEntry; public class TmaPrefsFragment extends PreferenceFragmentCompat { @@ -43,7 +43,9 @@ public class TmaPrefsFragment extends PreferenceFragmentCompat { screen.addPreference(createEnumPref(context, "Root node type", prefs.mRootNodeType, TmaBrowseNodeType.values())); screen.addPreference(createEnumPref(context, "Root reply delay", prefs.mRootReplyDelay, - TmaNodeReplyDelay.values())); + TmaReplyDelay.values())); + screen.addPreference(createEnumPref(context, "Asset delay: random value in [v, 2v]", + prefs.mAssetReplyDelay, TmaReplyDelay.values())); setPreferenceScreen(screen); } |