aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-04-10 02:13:21 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-04-10 02:13:21 +0000
commit0abfc701bd8640360b9b517c70a3d46b3a2143e6 (patch)
tree74353c7732e634466568cef5288d039520247bbc
parentc9afb4895d2687f18740f7f464bf4be47d98aed4 (diff)
parent849f50f4c4e0acada6a624721274f8f7deaeba80 (diff)
downloadtests-0abfc701bd8640360b9b517c70a3d46b3a2143e6.tar.gz
Snap for 6383144 from 849f50f4c4e0acada6a624721274f8f7deaeba80 to rvc-release
Change-Id: I79f299056f01217b7b766499005f88fb4f78201a
-rw-r--r--TestMediaApp/assets/media_items/album_art/art_nodes.json10
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java37
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java7
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java32
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaItemReader.java3
5 files changed, 69 insertions, 20 deletions
diff --git a/TestMediaApp/assets/media_items/album_art/art_nodes.json b/TestMediaApp/assets/media_items/album_art/art_nodes.json
index 692809f..abfc869 100644
--- a/TestMediaApp/assets/media_items/album_art/art_nodes.json
+++ b/TestMediaApp/assets/media_items/album_art/art_nodes.json
@@ -61,6 +61,16 @@
"DISPLAY_TITLE": "Nature files"
},
"INCLUDE":"media_items/album_art/nature/art_nature_files.json"
+ },
+ {
+ "FLAGS": "browsable",
+ "PLAYABLE_HINT": "GRID",
+ "METADATA": {
+ "MEDIA_ID": "album_art/art_nodes nature self updating",
+ "DISPLAY_TITLE": "Nature self updating"
+ },
+ "SELF_UPDATE_MS": "2000",
+ "INCLUDE":"media_items/album_art/nature/art_nature_512.json"
}
]
} \ No newline at end of file
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
index 7a62137..3c3eeb6 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
@@ -204,11 +204,24 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
addSearchResults(node, pat.matcher(""), hits, MAX_SEARCH_DEPTH);
result.sendResult(hits);
} else {
- List<MediaItem> items = new ArrayList<>(node.mChildren.size());
- for (TmaMediaItem child : node.mChildren) {
- items.add(child.toMediaItem());
+ List<TmaMediaItem> children = node.getChildren();
+ int childrenCount = children.size();
+ List<MediaItem> items = new ArrayList<>(childrenCount);
+ if (childrenCount <= 0) {
+ result.sendResult(items);
+ } else {
+ int selfUpdateDelay = node.getSelfUpdateDelay();
+ int toShow = (selfUpdateDelay > 0) ? 1 + node.mRevealCounter : childrenCount;
+ for (int childIndex = 0 ; childIndex < toShow; childIndex++) {
+ items.add(children.get(childIndex).toMediaItem());
+ }
+ result.sendResult(items);
+
+ if (selfUpdateDelay > 0) {
+ mHandler.postDelayed(new UpdateNodeTask(parentId), selfUpdateDelay);
+ node.mRevealCounter = (node.mRevealCounter + 1) % (childrenCount);
+ }
}
- result.sendResult(items);
}
};
if (delay == TmaReplyDelay.NONE) {
@@ -225,7 +238,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
return;
}
- for (TmaMediaItem child : node.mChildren) {
+ for (TmaMediaItem child : node.getChildren()) {
MediaItem item = child.toMediaItem();
CharSequence title = item.getDescription().getTitle();
if (title != null) {
@@ -240,4 +253,18 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
addSearchResults(child, matcher, hits, currentDepth - 1);
}
}
+
+ private class UpdateNodeTask implements Runnable {
+
+ private final String mNodeId;
+
+ UpdateNodeTask(@NonNull String nodeId) {
+ mNodeId = nodeId;
+ }
+
+ @Override
+ public void run() {
+ notifyChildrenChanged(mNodeId);
+ }
+ }
}
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java
index 327a2b6..5bd74ad 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java
@@ -66,8 +66,9 @@ class TmaLibrary {
TmaMediaItem getMediaItemById(String mediaId) {
TmaMediaItem result = mMediaItemsByMediaId.get(mediaId);
// Processing includes only on request allows recursive structures :-)
- if (result != null && !TextUtils.isEmpty(result.mInclude)) {
- result = result.append(loadAssetFile(result.mInclude).mChildren);
+ if (result != null && !TextUtils.isEmpty(result.mInclude)
+ && result.getChildren().isEmpty()) {
+ result.setChildren(loadAssetFile(result.mInclude).getChildren());
}
return result;
}
@@ -89,7 +90,7 @@ class TmaLibrary {
private void cacheMediaItem(TmaMediaItem item) {
String key = item.getMediaId();
if (mMediaItemsByMediaId.putIfAbsent(key, item) == null) {
- for (TmaMediaItem child : item.mChildren) {
+ for (TmaMediaItem child : item.getChildren()) {
cacheMediaItem(child);
}
} else {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
index af1b2e3..129e267 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
@@ -66,16 +66,17 @@ public class TmaMediaItem {
mNameId = name;
mIcon = icon;
}
-
}
private final int mFlags;
private final MediaMetadataCompat mMediaMetadata;
private final ContentStyle mPlayableStyle;
private final ContentStyle mBrowsableStyle;
+ private final int mSelfUpdateMs;
- /** Read only list. */
- final List<TmaMediaItem> mChildren;
+
+ /** Internally modifiable list (for includes). */
+ private final List<TmaMediaItem> mChildren;
/** Read only list. */
private final List<TmaMediaItem> mPlayableChildren;
/** Read only list. */
@@ -87,18 +88,20 @@ public class TmaMediaItem {
private @Nullable TmaMediaItem mParent;
int mHearts;
+ int mRevealCounter;
public TmaMediaItem(int flags, ContentStyle playableStyle, ContentStyle browsableStyle,
- MediaMetadataCompat metadata, List<TmaCustomAction> customActions,
- List<TmaMediaEvent> mediaEvents,
+ MediaMetadataCompat metadata, int selfUpdateMs,
+ List<TmaCustomAction> customActions, List<TmaMediaEvent> mediaEvents,
List<TmaMediaItem> children, String include) {
mFlags = flags;
mPlayableStyle = playableStyle;
mBrowsableStyle = browsableStyle;
mMediaMetadata = metadata;
+ mSelfUpdateMs = selfUpdateMs;
mCustomActions = Collections.unmodifiableList(customActions);
- mChildren = Collections.unmodifiableList(children);
+ mChildren = children;
mMediaEvents = Collections.unmodifiableList(mediaEvents);
mInclude = include;
List<TmaMediaItem> playableChildren = new ArrayList<>(children.size());
@@ -115,6 +118,14 @@ public class TmaMediaItem {
mParent = parent;
}
+ int getSelfUpdateDelay() {
+ return mSelfUpdateMs;
+ }
+
+ List<TmaMediaItem> getChildren() {
+ return Collections.unmodifiableList(mChildren);
+ }
+
@Nullable
TmaMediaItem getParent() {
return mParent;
@@ -155,12 +166,9 @@ public class TmaMediaItem {
return result;
}
- TmaMediaItem append(List<TmaMediaItem> children) {
- List<TmaMediaItem> allChildren = new ArrayList<>(mChildren.size() + children.size());
- allChildren.addAll(mChildren);
- allChildren.addAll(children);
- return new TmaMediaItem(mFlags, mPlayableStyle, mBrowsableStyle, mMediaMetadata,
- mCustomActions, mMediaEvents, allChildren, null);
+ void setChildren(List<TmaMediaItem> children) {
+ mChildren.clear();
+ mChildren.addAll(children);
}
void updateSessionMetadata(MediaSessionCompat session) {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaItemReader.java b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaItemReader.java
index 2d4b845..e62055d 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaItemReader.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaItemReader.java
@@ -24,6 +24,7 @@ import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.enumNames
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getArray;
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getEnum;
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getEnumArray;
+import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getInt;
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getString;
import android.util.Log;
@@ -55,6 +56,7 @@ class TmaMediaItemReader {
PLAYABLE_HINT,
BROWSABLE_HINT,
METADATA,
+ SELF_UPDATE_MS,
CHILDREN,
INCLUDE,
CUSTOM_ACTIONS,
@@ -114,6 +116,7 @@ class TmaMediaItemReader {
getEnum(json, Keys.PLAYABLE_HINT, mContentStyles, ContentStyle.NONE),
getEnum(json, Keys.BROWSABLE_HINT, mContentStyles, ContentStyle.NONE),
mMediaMetadataReader.fromJson(json.getJSONObject(Keys.METADATA.name())),
+ getInt(json, Keys.SELF_UPDATE_MS),
getEnumArray(json, Keys.CUSTOM_ACTIONS, mCustomActions),
mediaEvents, mediaItems, getString(json, Keys.INCLUDE));
} catch (JSONException e) {