diff options
author | Arnaud Berry <arnaudberry@google.com> | 2019-08-13 15:09:33 -0700 |
---|---|---|
committer | Arnaud Berry <arnaudberry@google.com> | 2019-08-13 15:10:54 -0700 |
commit | 30bb5db80c06ba9787b14ff1a87f0902405cebe1 (patch) | |
tree | 99de0fb738f119c4c88db58ce244c436536aa73f /TestMediaApp/src/com/android/car/media/testmediaapp | |
parent | eb22c0abe7bf08ea0270398523ab51c108d40482 (diff) | |
download | tests-30bb5db80c06ba9787b14ff1a87f0902405cebe1.tar.gz |
Add ability to throw exceptions when playing media items
Test: manual
Change-Id: I94a1a08e601bda8750797e5d1b20a04e93471382
Diffstat (limited to 'TestMediaApp/src/com/android/car/media/testmediaapp')
4 files changed, 31 insertions, 5 deletions
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java index 8292064..c795610 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java @@ -105,7 +105,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat { TmaMediaEvent.StateErrorCode.AUTHENTICATION_EXPIRED, getResources().getString(R.string.no_account), getResources().getString(R.string.select_account), - TmaMediaEvent.ResolutionIntent.PREFS, 0)); + TmaMediaEvent.ResolutionIntent.PREFS, 0, null)); } else { // TODO don't reset error in all cases... PlaybackStateCompat.Builder playbackState = new PlaybackStateCompat.Builder(); diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java index 3bec7ac..f6ec8af 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java @@ -42,15 +42,18 @@ import static android.support.v4.media.session.PlaybackStateCompat.STATE_SKIPPIN import static android.support.v4.media.session.PlaybackStateCompat.STATE_STOPPED; import android.support.v4.media.session.PlaybackStateCompat.State; +import android.util.Log; /** * Contains the info needed to generate a new playback state. */ public class TmaMediaEvent { + private static final String TAG = "TmaMediaEvent"; + public static final TmaMediaEvent INSTANT_PLAYBACK = new TmaMediaEvent(EventState.PLAYING, StateErrorCode.UNKNOWN_ERROR, null, null, - ResolutionIntent.NONE, 0); + ResolutionIntent.NONE, 0, null); /** The name of each entry is the value used in the json file. */ public enum EventState { @@ -109,21 +112,38 @@ public class TmaMediaEvent { final ResolutionIntent mResolutionIntent; /** How long to wait before sending the event to the app. */ final int mPostDelayMs; + private final String mExceptionClass; public TmaMediaEvent(EventState state, StateErrorCode errorCode, String errorMessage, - String actionLabel, ResolutionIntent resolutionIntent, int postDelayMs) { + String actionLabel, ResolutionIntent resolutionIntent, int postDelayMs, + String exceptionClass) { mState = state; mErrorCode = errorCode; mErrorMessage = errorMessage; mActionLabel = actionLabel; mResolutionIntent = resolutionIntent; mPostDelayMs = postDelayMs; + mExceptionClass = exceptionClass; } boolean premiumAccountRequired() { return mState == EventState.ERROR && mErrorCode == StateErrorCode.PREMIUM_ACCOUNT_REQUIRED; } + void maybeThrow() { + if (mExceptionClass != null) { + RuntimeException exception = null; + try { + Class aClass = Class.forName(mExceptionClass); + exception = (RuntimeException) aClass.newInstance(); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + Log.e(TAG, "Class error for " + mExceptionClass + " : " + e); + } + + if (exception != null) throw exception; + } + } + @Override public String toString() { return "TmaMediaEvent{" + @@ -133,6 +153,7 @@ public class TmaMediaEvent { ", mActionLabel='" + mActionLabel + '\'' + ", mResolutionIntent=" + mResolutionIntent + ", mPostDelayMs=" + mPostDelayMs + + ", mExceptionClass=" + mExceptionClass + '}'; } } diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java index c6213b2..dc368ea 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java @@ -226,6 +226,7 @@ public class TmaPlayer extends MediaSessionCompat.Callback { if (mActiveItem == null) return; TmaMediaEvent event = mActiveItem.mMediaEvents.get(mNextEventIndex); + event.maybeThrow(); if (event.premiumAccountRequired() && TmaAccountType.PAID.equals(mPrefs.mAccountType.getValue())) { diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java index b6d1a7a..c2e573a 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java @@ -21,6 +21,8 @@ import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getEnum; import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getInt; import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getString; +import android.util.Log; + import androidx.annotation.Nullable; import com.android.car.media.testmediaapp.TmaMediaEvent; @@ -52,7 +54,8 @@ class TmaMediaEventReader { ACTION_LABEL, INTENT, /** How long to wait before sending the event to the app. */ - POST_DELAY_MS + POST_DELAY_MS, + THROW_EXCEPTION } private static TmaMediaEventReader sInstance; @@ -83,6 +86,7 @@ class TmaMediaEventReader { getString(json, Keys.ERROR_MESSAGE), getString(json, Keys.ACTION_LABEL), getEnum(json, Keys.INTENT, mResolutionIntents, ResolutionIntent.NONE), - getInt(json, Keys.POST_DELAY_MS)); + getInt(json, Keys.POST_DELAY_MS), + getString(json, Keys.THROW_EXCEPTION)); } } |