aboutsummaryrefslogtreecommitdiff
path: root/TestMediaApp/src/com/android/car/media/testmediaapp
diff options
context:
space:
mode:
authorArnaud Berry <arnaudberry@google.com>2019-08-13 15:09:33 -0700
committerArnaud Berry <arnaudberry@google.com>2019-08-13 15:10:54 -0700
commit30bb5db80c06ba9787b14ff1a87f0902405cebe1 (patch)
tree99de0fb738f119c4c88db58ce244c436536aa73f /TestMediaApp/src/com/android/car/media/testmediaapp
parenteb22c0abe7bf08ea0270398523ab51c108d40482 (diff)
downloadtests-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')
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java2
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java25
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java1
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java8
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));
}
}