From 8588b856b5a63462123a7da6ed86b1158cca3238 Mon Sep 17 00:00:00 2001 From: hensm Date: Sat, 12 Jan 2019 13:47:49 +0000 Subject: [PATCH] Fix chrome.cast.media class implementations --- .../media/classes/EditTracksInfoRequest.js | 1 + .../media/classes/GenericMediaMetadata.js | 8 ++++++-- .../shim/media/classes/GetStatusRequest.js | 3 +-- ext/src/shim/media/classes/LoadRequest.js | 11 +++++++---- ext/src/shim/media/classes/Media.js | 19 +++++++------------ ext/src/shim/media/classes/MediaInfo.js | 4 ++-- .../shim/media/classes/MovieMediaMetadata.js | 8 ++++++-- .../media/classes/MusicTrackMediaMetadata.js | 9 +++++++-- ext/src/shim/media/classes/PauseRequest.js | 2 +- .../shim/media/classes/PhotoMediaMetadata.js | 7 +++++-- ext/src/shim/media/classes/PlayRequest.js | 2 +- .../media/classes/QueueInsertItemsRequest.js | 5 ++++- ext/src/shim/media/classes/QueueItem.js | 9 +++++---- .../shim/media/classes/QueueLoadRequest.js | 5 ++++- .../media/classes/QueueRemoveItemsRequest.js | 5 ++++- .../media/classes/QueueReorderItemsRequest.js | 6 ++++-- .../classes/QueueSetPropertiesRequest.js | 6 +++--- .../media/classes/QueueUpdateItemsRequest.js | 9 ++++++--- ext/src/shim/media/classes/SeekRequest.js | 2 +- ext/src/shim/media/classes/StopRequest.js | 2 +- ext/src/shim/media/classes/TextTrackStyle.js | 2 +- ext/src/shim/media/classes/Track.js | 2 +- .../shim/media/classes/TvShowMediaMetadata.js | 11 +++++++++-- ext/src/shim/media/classes/VolumeRequest.js | 2 +- test/spec/shim/media/Media.spec.js | 1 + 25 files changed, 89 insertions(+), 52 deletions(-) diff --git a/ext/src/shim/media/classes/EditTracksInfoRequest.js b/ext/src/shim/media/classes/EditTracksInfoRequest.js index 3d44281..8f3daeb 100644 --- a/ext/src/shim/media/classes/EditTracksInfoRequest.js +++ b/ext/src/shim/media/classes/EditTracksInfoRequest.js @@ -3,6 +3,7 @@ export default class EditTracksInfoRequest { constructor (opt_activeTrackIds = null, opt_textTrackStyle = null) { this.activeTrackIds = opt_activeTrackIds; + this.requestId = 0; this.textTrackStyle = opt_textTrackStyle; } } diff --git a/ext/src/shim/media/classes/GenericMediaMetadata.js b/ext/src/shim/media/classes/GenericMediaMetadata.js index f32c5c9..83ff3b8 100644 --- a/ext/src/shim/media/classes/GenericMediaMetadata.js +++ b/ext/src/shim/media/classes/GenericMediaMetadata.js @@ -1,11 +1,15 @@ "use strict"; +import { MetadataType } from "../enums"; + export default class GenericMediaMetadata { constructor () { - this.images = []; - this.metadataType = null; + this.images = null; + this.metadataType = MetadataType.GENERIC; this.releaseDate = null; + this.releaseYear = null; this.subtitle = null; this.title = null; + this.type = MetadataType.GENERIC; } } diff --git a/ext/src/shim/media/classes/GetStatusRequest.js b/ext/src/shim/media/classes/GetStatusRequest.js index 234e277..afb7a47 100644 --- a/ext/src/shim/media/classes/GetStatusRequest.js +++ b/ext/src/shim/media/classes/GetStatusRequest.js @@ -2,7 +2,6 @@ export default class GetStatusRequest { constructor () { - castConsole.info('GetStatusRequest'); - this.customData = {}; + this.customData = null; } } diff --git a/ext/src/shim/media/classes/LoadRequest.js b/ext/src/shim/media/classes/LoadRequest.js index c96ef5f..5b3cbda 100644 --- a/ext/src/shim/media/classes/LoadRequest.js +++ b/ext/src/shim/media/classes/LoadRequest.js @@ -2,10 +2,13 @@ export default class LoadRequest { constructor (mediaInfo) { - this.activeTrackIds = []; - this.autoplay = false; - this.currentTime = 0; - this.customData = {}; + this.activeTrackIds = null; + this.autoplay = true; + this.currentTime = null; + this.customData = null; this.media = mediaInfo; + this.requestId = 0; + this.sessionId = null; + this.type = "LOAD"; } } diff --git a/ext/src/shim/media/classes/Media.js b/ext/src/shim/media/classes/Media.js index ea851d0..e4c2326 100644 --- a/ext/src/shim/media/classes/Media.js +++ b/ext/src/shim/media/classes/Media.js @@ -19,26 +19,21 @@ export default class Media { constructor (sessionId, mediaSessionId, _internalSessionId) { this._id = uuid(); - this.activeTrackIds = []; - this.currentItemId = 1; - this.customData = {}; + this.activeTrackIds = null; + this.currentItemId = null; + this.customData = null; this.currentTime = 0; this.idleReason = null; - this.items = []; + this.items = null; this.loadingItemId = null; this.media = null; this.mediaSessionId = mediaSessionId; this.playbackRate = 1; - this.playerState = PlayerState.PAUSED; + this.playerState = PlayerState.IDLE; this.preloadedItemId = null; - this.RepeatMode = RepeatMode.OFF; + this.repeatMode = RepeatMode.OFF; this.sessionId = sessionId; - this.supportedMediaCommands = [ - MediaCommand.PAUSE - , MediaCommand.SEEK - , MediaCommand.STREAM_VOLUME - , MediaCommand.STREAM_MUTE - ]; + this.supportedMediaCommands = []; this.volume = new Volume(); this._sendMessage("bridge:bridgemedia/initialize", { diff --git a/ext/src/shim/media/classes/MediaInfo.js b/ext/src/shim/media/classes/MediaInfo.js index a911cad..90e40ca 100644 --- a/ext/src/shim/media/classes/MediaInfo.js +++ b/ext/src/shim/media/classes/MediaInfo.js @@ -6,11 +6,11 @@ export default class MediaInfo { constructor (contentId, contentType) { this.contentId = contentId; this.contentType = contentType; - this.customData = {}; + this.customData = null; this.duration = null; this.metadata = null; this.streamType = StreamType.BUFFERED; this.textTrackStyle = null; - this.tracks = []; + this.tracks = null; } } diff --git a/ext/src/shim/media/classes/MovieMediaMetadata.js b/ext/src/shim/media/classes/MovieMediaMetadata.js index 3fc3e09..5df3b67 100644 --- a/ext/src/shim/media/classes/MovieMediaMetadata.js +++ b/ext/src/shim/media/classes/MovieMediaMetadata.js @@ -1,12 +1,16 @@ "use strict"; +import { MetadataType } from "../enums"; + export default class MovieMediaMetadata { constructor () { - this.images = []; - this.metadataType = null; + this.images = null; + this.metadataType = MetadataType.MOVIE; this.releaseDate = null; + this.releaseYear = null; this.studio = null; this.subtitle = null; this.title = null; + this.type = MetadataType.MOVIE; } } diff --git a/ext/src/shim/media/classes/MusicTrackMediaMetadata.js b/ext/src/shim/media/classes/MusicTrackMediaMetadata.js index 4d997d4..09b5703 100644 --- a/ext/src/shim/media/classes/MusicTrackMediaMetadata.js +++ b/ext/src/shim/media/classes/MusicTrackMediaMetadata.js @@ -1,17 +1,22 @@ "use strict"; +import { MetadataType } from "../enums"; + export default class MusicTrackMediaMetadata { constructor () { this.albumArtist = null; this.albumName = null; this.artist = null; + this.artistName = null; this.composer = null; this.discNumber = null; - this.images = []; - this.metadataType = this.type = 3; + this.images = null; + this.metadataType = MetadataType.MUSIC_TRACK; this.releaseDate = null; + this.releaseYear = null; this.songName = null; this.title = null; this.trackNumber = null; + this.type = MetadataType.MUSIC_TRACK; } } diff --git a/ext/src/shim/media/classes/PauseRequest.js b/ext/src/shim/media/classes/PauseRequest.js index 59711aa..a7340da 100644 --- a/ext/src/shim/media/classes/PauseRequest.js +++ b/ext/src/shim/media/classes/PauseRequest.js @@ -2,6 +2,6 @@ export default class PauseRequest { constructor () { - this.customData = {}; + this.customData = null; } } diff --git a/ext/src/shim/media/classes/PhotoMediaMetadata.js b/ext/src/shim/media/classes/PhotoMediaMetadata.js index ab3a87b..577e313 100644 --- a/ext/src/shim/media/classes/PhotoMediaMetadata.js +++ b/ext/src/shim/media/classes/PhotoMediaMetadata.js @@ -1,16 +1,19 @@ "use strict"; +import { MetadataType } from "../enums"; + export default class PhotoMediaMetadata { constructor () { this.artist = null; this.creationDateTime = null; this.height = null; - this.images = []; + this.images = null; this.latitude = null; this.location = null; this.longitude = null; - this.metadataType = null; + this.metadataType = MetadataType.PHOTO; this.title = null; + this.type = MetadataType.PHOTO; this.width = null; } } diff --git a/ext/src/shim/media/classes/PlayRequest.js b/ext/src/shim/media/classes/PlayRequest.js index a680947..a92328c 100644 --- a/ext/src/shim/media/classes/PlayRequest.js +++ b/ext/src/shim/media/classes/PlayRequest.js @@ -2,6 +2,6 @@ export default class PlayRequest { constructor () { - this.customData = {}; + this.customData = null; } } diff --git a/ext/src/shim/media/classes/QueueInsertItemsRequest.js b/ext/src/shim/media/classes/QueueInsertItemsRequest.js index db68021..7d73513 100644 --- a/ext/src/shim/media/classes/QueueInsertItemsRequest.js +++ b/ext/src/shim/media/classes/QueueInsertItemsRequest.js @@ -2,8 +2,11 @@ export default class QueueInsertItemsRequest { constructor (itemsToInsert) { - this.customData = {}; + this.customData = null; this.insertBefore = null; this.items = itemsToInsert; + this.requestId = null; + this.sessionId = null; + this.type = "QUEUE_INSERT"; } } diff --git a/ext/src/shim/media/classes/QueueItem.js b/ext/src/shim/media/classes/QueueItem.js index 967846d..e7ed34b 100644 --- a/ext/src/shim/media/classes/QueueItem.js +++ b/ext/src/shim/media/classes/QueueItem.js @@ -2,12 +2,13 @@ export default class QueueItem { constructor (mediaInfo) { - this.activeTrackIds = []; - this.autoplay = false; - this.customData = {}; + this.activeTrackIds = null; + this.autoplay = true; + this.customData = null; this.itemId = null; this.media = mediaInfo; - this.preloadTime = 10; + this.playbackDuration = null; + this.preloadTime = 0; this.startTime = 0; } } diff --git a/ext/src/shim/media/classes/QueueLoadRequest.js b/ext/src/shim/media/classes/QueueLoadRequest.js index 1cea612..dc36b5e 100644 --- a/ext/src/shim/media/classes/QueueLoadRequest.js +++ b/ext/src/shim/media/classes/QueueLoadRequest.js @@ -4,9 +4,12 @@ import { RepeatMode } from "../enums"; export default class QueueLoadRequest { constructor (items) { - this.customData = {}; + this.customData = null; this.items = items; this.repeatMode = RepeatMode.OFF; + this.requestId = null; + this.sessionId = null; this.startIndex = 0; + this.type = "QUEUE_LOAD"; } } diff --git a/ext/src/shim/media/classes/QueueRemoveItemsRequest.js b/ext/src/shim/media/classes/QueueRemoveItemsRequest.js index beb8a4c..4f3c586 100644 --- a/ext/src/shim/media/classes/QueueRemoveItemsRequest.js +++ b/ext/src/shim/media/classes/QueueRemoveItemsRequest.js @@ -2,7 +2,10 @@ export default class QueueRemoveItemsRequest { constructor (itemIdsToRemove) { - this.customData = {}; + this.customData = null; this.itemIds = itemIdsToRemove; + this.requestId = null; + this.sessionId = null; + this.type = "QUEUE_REMOVE"; } } diff --git a/ext/src/shim/media/classes/QueueReorderItemsRequest.js b/ext/src/shim/media/classes/QueueReorderItemsRequest.js index 52b59a2..37229da 100644 --- a/ext/src/shim/media/classes/QueueReorderItemsRequest.js +++ b/ext/src/shim/media/classes/QueueReorderItemsRequest.js @@ -2,9 +2,11 @@ export default class QueueReorderItemsRequest { constructor (itemIdsToReorder) { - this.customData = {}; - this.type = "QUEUE_REORDER"; + this.customData = null; this.insertBefore = null; this.itemIds = itemIdsToReorder; + this.requestId = null; + this.sessionId = null; + this.type = "QUEUE_REORDER"; } } diff --git a/ext/src/shim/media/classes/QueueSetPropertiesRequest.js b/ext/src/shim/media/classes/QueueSetPropertiesRequest.js index 279ed09..c1e2006 100644 --- a/ext/src/shim/media/classes/QueueSetPropertiesRequest.js +++ b/ext/src/shim/media/classes/QueueSetPropertiesRequest.js @@ -2,10 +2,10 @@ export default class QueueSetPropertiesRequest { constructor () { - this.type = "QUEUE_UPDATE"; - this.customData = {}; + this.customData = null; this.repeatMode = null; - this.sessionId = null; this.requestId = null; + this.sessionId = null; + this.type = "QUEUE_UPDATE"; } } diff --git a/ext/src/shim/media/classes/QueueUpdateItemsRequest.js b/ext/src/shim/media/classes/QueueUpdateItemsRequest.js index fda11fe..b9cfb3d 100644 --- a/ext/src/shim/media/classes/QueueUpdateItemsRequest.js +++ b/ext/src/shim/media/classes/QueueUpdateItemsRequest.js @@ -1,8 +1,11 @@ "use strict"; export default class QueueUpdateItemsRequest { - constructor () { - this.customData = {}; - this.items = []; + constructor (itemsToUpdate) { + this.customData = null; + this.items = itemsToUpdate; + this.requestId = null; + this.sessionId = null; + this.type = "QUEUE_UPDATE"; } } diff --git a/ext/src/shim/media/classes/SeekRequest.js b/ext/src/shim/media/classes/SeekRequest.js index 54078f6..29fd580 100644 --- a/ext/src/shim/media/classes/SeekRequest.js +++ b/ext/src/shim/media/classes/SeekRequest.js @@ -3,7 +3,7 @@ export default class SeekRequest { constructor () { this.currentTime = null; - this.customData = {}; + this.customData = null; this.resumeState = null; } } diff --git a/ext/src/shim/media/classes/StopRequest.js b/ext/src/shim/media/classes/StopRequest.js index d9ee118..35be356 100644 --- a/ext/src/shim/media/classes/StopRequest.js +++ b/ext/src/shim/media/classes/StopRequest.js @@ -2,6 +2,6 @@ export default class StopRequest { constructor () { - this.customData = {}; + this.customData = null; } } diff --git a/ext/src/shim/media/classes/TextTrackStyle.js b/ext/src/shim/media/classes/TextTrackStyle.js index 3837ad7..01aa3f4 100644 --- a/ext/src/shim/media/classes/TextTrackStyle.js +++ b/ext/src/shim/media/classes/TextTrackStyle.js @@ -3,7 +3,7 @@ export default class TextTrackStyle { constructor () { this.backgroundColor = null; - this.customData = {}; + this.customData = null; this.edgeColor = null; this.edgeType = null; this.fontFamily = null; diff --git a/ext/src/shim/media/classes/Track.js b/ext/src/shim/media/classes/Track.js index 6eb18f7..dcd32ce 100644 --- a/ext/src/shim/media/classes/Track.js +++ b/ext/src/shim/media/classes/Track.js @@ -2,7 +2,7 @@ export default class Track { constructor (trackId, trackType) { - this.customData = {}; + this.customData = null; this.language = null; this.name = null; this.subtype = null; diff --git a/ext/src/shim/media/classes/TvShowMediaMetadata.js b/ext/src/shim/media/classes/TvShowMediaMetadata.js index cb57724..de02768 100644 --- a/ext/src/shim/media/classes/TvShowMediaMetadata.js +++ b/ext/src/shim/media/classes/TvShowMediaMetadata.js @@ -1,13 +1,20 @@ "use strict"; +import { MetadataType } from "../enums"; + export default class TvShowMediaMetadata { constructor () { this.episode = null; - this.images = []; - this.metadataType = null; + this.episodeNumber = null; + this.episodeTitle = null; + this.images = null; + this.metadataType = MetadataType.TV_SHOW; this.originalAirdate = null; + this.releaseYear = null; this.season = null; + this.seasonNumber = null; this.seriesTitle = null; this.title = null; + this.type = MetadataType.TV_SHOW; } } diff --git a/ext/src/shim/media/classes/VolumeRequest.js b/ext/src/shim/media/classes/VolumeRequest.js index 525e37d..c6173d3 100644 --- a/ext/src/shim/media/classes/VolumeRequest.js +++ b/ext/src/shim/media/classes/VolumeRequest.js @@ -2,7 +2,7 @@ export default class VolumeRequest { constructor (volume) { + this.customData = null; this.volume = volume; - this.customData = {}; } } diff --git a/test/spec/shim/media/Media.spec.js b/test/spec/shim/media/Media.spec.js index 6355ac8..0ea2b47 100644 --- a/test/spec/shim/media/Media.spec.js +++ b/test/spec/shim/media/Media.spec.js @@ -6,6 +6,7 @@ describe("chrome.cast.media.Media", () => { expect(media.activeTrackIds).toBe(null); expect(media.currentItemId).toBe(null); + expect(media.currentTime).toBe(0); expect(media.customData).toBe(null); expect(media.idleReason).toBe(null); expect(media.items).toBe(null);