Merge pull request #4608 from tolu/chrome-cast

chrome: Add queue-interface for cast
This commit is contained in:
Masahiro Wakame
2015-06-18 14:13:42 +09:00
+337 -90
View File
@@ -106,13 +106,14 @@ declare module chrome.cast {
}
/**
* @const {!Array.<number>}
* @see https://developers.google.com/cast/docs/reference/chrome/
* @const {!Array<number>}
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.VERSION
*/
var VERSION: Array<number>;
/**
* @type {boolean}
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.isAvailable
*/
var isAvailable: boolean;
@@ -169,7 +170,7 @@ declare module chrome.cast {
): void
/**
* @param {!Array.<chrome.cast.Receiver>} receivers
* @param {!Array<chrome.cast.Receiver>} receivers
* @param {function()} successCallback
* @param {function(chrome.cast.Error)} errorCallback
*/
@@ -188,13 +189,13 @@ declare module chrome.cast {
receiver: chrome.cast.Receiver,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
): void
interface ApiConfig {
/**
* @param {!chrome.cast.SessionRequest} sessionRequest
* @param {function(!chrome.cast.Session)} sessionListener
* @param {function(!chrome.cast.ReceiverAvailability,Array.<Object>)}
* @param {function(!chrome.cast.ReceiverAvailability,Array<Object>)}
* receiverListener
* @param {chrome.cast.AutoJoinPolicy=} opt_autoJoinPolicy
* @param {chrome.cast.DefaultActionPolicy=} opt_defaultActionPolicy
@@ -206,8 +207,8 @@ declare module chrome.cast {
sessionListener: (session: chrome.cast.Session) => void,
receiverListener: (receiverAvailability: chrome.cast.ReceiverAvailability) => void,
autoJoinPolicy?: chrome.cast.AutoJoinPolicy,
defaultActionPolicy: chrome.cast.DefaultActionPolicy
);
defaultActionPolicy?: chrome.cast.DefaultActionPolicy
):ApiConfig;
sessionRequest: chrome.cast.SessionRequest;
sessionListener: (session: chrome.cast.Session) => void;
@@ -216,19 +217,19 @@ declare module chrome.cast {
defaultActionPolicy: chrome.cast.DefaultActionPolicy;
}
/**
* @param {!chrome.cast.ErrorCode} code
* @param {string=} opt_description
* @param {Object=} opt_details
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Error
*/
interface Error {
/**
* @param {!chrome.cast.ErrorCode} code
* @param {string=} opt_description
* @param {Object=} opt_details
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Error
*/
new(
code: chrome.cast.ErrorCode,
description?: string,
details?: Object
);
):Error;
code: chrome.cast.ErrorCode;
description?: string;
@@ -244,7 +245,7 @@ declare module chrome.cast {
*/
new(
url: string
);
):Image;
url: string;
height?: number;
@@ -252,10 +253,14 @@ declare module chrome.cast {
}
interface SenderApplication {
/**
* @param {!chrome.cast.SenderPlatform} platform
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SenderApplication
*/
new(
platform: chrome.cast.SenderPlatform
);
):SenderApplication;
platform: chrome.cast.SenderPlatform;
url?: string;
@@ -265,7 +270,7 @@ declare module chrome.cast {
interface SessionRequest {
/**
* @param {string} appId
* @param {!Array.<chrome.cast.Capability>=} opt_capabilities
* @param {!Array<chrome.cast.Capability>=} opt_capabilities
* @param {number=} opt_timeout
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest
@@ -274,7 +279,7 @@ declare module chrome.cast {
appId: string,
capabilities?: Array<chrome.cast.Capability>,
timeout?: number
);
):SessionRequest;
appId: string;
capabilities: Array<chrome.cast.Capability>;
@@ -287,7 +292,7 @@ declare module chrome.cast {
* @param {string} sessionId
* @param {string} appId
* @param {string} displayName
* @param {!Array.<chrome.cast.Image>} appImages
* @param {!Array<chrome.cast.Image>} appImages
* @param {!chrome.cast.Receiver} receiver
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session
@@ -298,7 +303,7 @@ declare module chrome.cast {
displayName: string,
appImages: Array<chrome.cast.Image>,
receiver: chrome.cast.Receiver
);
):Session;
sessionId: string;
appId: string;
@@ -319,7 +324,7 @@ declare module chrome.cast {
newLevel: number,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {boolean} muted
@@ -330,7 +335,7 @@ declare module chrome.cast {
muted: boolean,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {function()} successCallback
@@ -339,7 +344,7 @@ declare module chrome.cast {
leave(
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {function()} successCallback
@@ -348,7 +353,7 @@ declare module chrome.cast {
stop(
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {string} namespace
@@ -361,21 +366,21 @@ declare module chrome.cast {
message: string,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {function(boolean)} listener
*/
addUpdateListener(
listener: (boolean) => void
)
listener: (isAlive:boolean) => void
):void
/**
* @param {function(boolean)} listener
*/
removeUpdateListener(
listener: (boolean) => void
)
listener: (isAlive:boolean) => void
):void
/**
* @param {string} namespace
@@ -383,8 +388,8 @@ declare module chrome.cast {
*/
addMessageListener(
namespace: string,
listener: (string, string) => void
)
listener: (namespace: string, message: string) => void
):void
/**
* @param {string} namespace
@@ -392,22 +397,22 @@ declare module chrome.cast {
*/
removeMessageListener(
namespace: string,
listener: (string, string) => void
)
listener: (namespace:string, message:string) => void
):void
/**
* @param {function(!chrome.cast.media.Media)} listener
*/
addMediaListener(
listener: (media: chrome.cast.media.Media) => void
)
):void
/**
* @param {function(!chrome.cast.media.Media)} listener
*/
removeMediaListener(
listener: (media: chrome.cast.media.Media) => void
)
):void
/**
* @param {!chrome.cast.media.LoadRequest} loadRequest
@@ -418,14 +423,25 @@ declare module chrome.cast {
loadRequest: chrome.cast.media.LoadRequest,
successCallback: (media: chrome.cast.media.Media) => void,
errorCallback: (error: chrome.cast.Error) => void
)
):void
/**
* @param {!chrome.cast.media.QueueLoadRequest} queueLoadRequest
* @param {function(!chrome.cast.media.Media)} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueLoad(
queueLoadRequest: chrome.cast.media.QueueLoadRequest,
successCallback: (media: chrome.cast.media.Media) => void,
errorCallback: (error: chrome.cast.Error) => void
):void
}
interface Receiver {
/**
* @param {string} label
* @param {string} friendlyName
* @param {Array.<chrome.cast.Capability>=} opt_capabilities
* @param {Array<chrome.cast.Capability>=} opt_capabilities
* @param {chrome.cast.Volume=} opt_volume
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver
@@ -435,7 +451,7 @@ declare module chrome.cast {
friendlyName: string,
capabilities?: Array<chrome.cast.Capability>,
volume?: chrome.cast.Volume
);
):Receiver;
label: string;
friendlyName: string;
@@ -448,14 +464,14 @@ declare module chrome.cast {
interface ReceiverDisplayStatus {
/**
* @param {string} statusText
* @param {!Array.<chrome.cast.Image>} appImages
* @param {!Array<chrome.cast.Image>} appImages
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ReceiverDisplayStatus
*/
new(
statusText: string,
appImages: Array<chrome.cast.Image>
);
):ReceiverDisplayStatus;
statusText: string;
appImages: Array<chrome.cast.Image>;
@@ -471,7 +487,7 @@ declare module chrome.cast {
new(
level?: number,
muted?: boolean
);
):Volume;
level?: number;
muted?: boolean;
@@ -479,6 +495,9 @@ declare module chrome.cast {
}
declare module chrome.cast.media {
var DEFAULT_MEDIA_RECEIVER_APP_ID: string;
/**
* @enum {string}
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MediaCommand
@@ -542,7 +561,111 @@ declare module chrome.cast.media {
FINISHED: string;
ERROR: string;
}
/**
* @enum {string}
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.RepeatMode
*/
interface RepeatMode {
OFF:string;
ALL:string;
SINGLE:string;
ALL_AND_SHUFFLE:string;
}
interface QueueItem {
/**
* @param {!chrome.cast.media.MediaInfo} mediaInfo
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueItem
*/
new(
mediaInfo: chrome.cast.media.MediaInfo
):QueueItem;
activeTrackIds: Array<Number>;
autoplay: boolean;
customData: Object;
itemId: number;
media: chrome.cast.media.MediaInfo;
preloadTime: number;
startTime: number;
}
interface QueueLoadRequest {
/**
* @param {!Array<chrome.cast.media.QueueItem>} items
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueLoadRequest
*/
new(
items: Array<chrome.cast.media.QueueItem>
):QueueLoadRequest;
customData: Object;
items: Array<chrome.cast.media.QueueItem>;
repeatMode: chrome.cast.media.RepeatMode;
startIndex: number;
}
interface QueueInsertItemsRequest {
/**
* @param {!Array<chrome.cast.media.QueueItem>}
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueInsertItemsRequest
*/
new(
itemsToInsert: Array<chrome.cast.media.QueueItem>
):QueueInsertItemsRequest;
customData: Object;
insertBefore:number;
items: Array<chrome.cast.media.QueueItem>;
}
interface QueueRemoveItemsRequest {
/**
* @param {!Array<number>}
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueRemoveItemsRequest
*/
new(
itemIdsToRemove: Array<number>
):QueueRemoveItemsRequest;
customData: Object;
itemIds: Array<number>;
}
interface QueueReorderItemsRequest {
/**
* @param {!Array<number>}
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueReorderItemsRequest
*/
new(
itemIdsToReorder: Array<number>
):QueueReorderItemsRequest;
customData: Object;
insertBefore: number;
itemIds: Array<number>;
}
interface QueueUpdateItemsRequest {
/**
* @param {!Array<chrome.cast.media.QueueItem>}
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueUpdateItemsRequest
*/
new(
itemsToUpdate: Array<chrome.cast.media.QueueItem>
):QueueUpdateItemsRequest;
customData: Object;
item: Array<chrome.cast.media.QueueItem>;
}
/**
* @enum {string}
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TrackType
@@ -617,7 +740,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.GetStatusRequest
*/
new();
new():GetStatusRequest;
customData: Object;
}
@@ -627,7 +750,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PauseRequest
*/
new();
new():PauseRequest;
customData: Object;
}
@@ -637,7 +760,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PlayRequest
*/
new();
new():PlayRequest;
customData: Object;
}
@@ -647,7 +770,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.SeekRequest
*/
new();
new():SeekRequest;
currentTime: number;
resumeState: chrome.cast.media.ResumeState;
@@ -659,7 +782,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.StopRequest
*/
new();
new():StopRequest;
customData: Object;
}
@@ -672,7 +795,7 @@ declare module chrome.cast.media {
*/
new(
volume: chrome.cast.Volume
);
):VolumeRequest;
volume: chrome.cast.Volume;
customData: Object;
@@ -686,7 +809,7 @@ declare module chrome.cast.media {
*/
new(
mediaInfo: chrome.cast.media.MediaInfo
);
):LoadRequest;
activeTrackIds: Array<number>;
autoplay: boolean;
@@ -697,7 +820,7 @@ declare module chrome.cast.media {
interface EditTracksInfoRequest {
/**
* @param {Array.<number>=} opt_activeTrackIds
* @param {Array<number>=} opt_activeTrackIds
* @param {chrome.cast.media.TextTrackStyle=} opt_textTrackStyle
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.EditTracksInfoRequest
@@ -705,7 +828,7 @@ declare module chrome.cast.media {
new(
activeTrackIds?: Array<number>,
textTrackStyle?: chrome.cast.media.TextTrackStyle
);
):EditTracksInfoRequest;
activeTrackIds: Array<number>;
textTrackStyle: chrome.cast.media.TextTrackStyle;
@@ -716,17 +839,17 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.GenericMediaMetadata
*/
new();
new():GenericMediaMetadata;
metadataType: chrome.cast.media.MetadataType;
title: string;
subtitle: string;
images: Array<chrome.cast.Image>;
metadataType: chrome.cast.media.MetadataType;
releaseDate: string;
// Deprecated
type: chrome.cast.media.MetadataType;
/** @deprecated. Use releaseDate instead. */
releaseYear: number;
subtitle: string;
title: string;
/** @deprecated. Use metadataType instead. */
type: chrome.cast.media.MetadataType;
}
interface MovieMediaMetadata {
@@ -734,18 +857,18 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MovieMediaMetadata
*/
new();
new():MovieMediaMetadata;
images: Array<chrome.cast.Image>;
metadataType: chrome.cast.media.MetadataType;
releaseDate: string;
/** @deprecated. Use releaseDate instead. */
releaseYear: number;
subtitle: string;
title: string;
studio: string;
subtitle: string;
images: Array<chrome.cast.Image>;
releaseDate: string;
// Deprecated
/** @deprecated. Use metadataType instead. */
type: chrome.cast.media.MetadataType;
releaseYear: number;
}
interface TvShowMediaMetadata {
@@ -753,7 +876,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TvShowMediaMetadata
*/
new();
new(): TvShowMediaMetadata;
metadataType: chrome.cast.media.MetadataType;
seriesTitle: string;
@@ -763,11 +886,15 @@ declare module chrome.cast.media {
images: Array<chrome.cast.Image>;
originalAirdate: string;
// Deprecated
/** @deprecated. Use metadataType instead. */
type: chrome.cast.media.MetadataType;
/** @deprecated. Use title instead. */
episodeTitle: string;
/** @deprecated. Use season instead. */
seasonNumber: number;
/** @deprecated. Use episode instead. */
episodeNumber: number;
/** @deprecated. Use originalAirdate instead. */
releaseYear: number;
}
@@ -776,7 +903,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MusicTrackMediaMetadata
*/
new();
new(): MusicTrackMediaMetadata;
metadataType: chrome.cast.media.MetadataType;
albumName: string;
@@ -790,9 +917,11 @@ declare module chrome.cast.media {
images: Array<chrome.cast.Image>;
releaseDate: string;
// Deprecated
/** @deprecated. Use metadataType instead. */
type: chrome.cast.media.MetadataType;
/** @deprecated. Use artist instead. */
artistName: string;
/** @deprecated. Use releaseDate instead. */
releaseYear: number;
}
@@ -801,7 +930,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PhotoMediaMetadata
*/
new();
new(): PhotoMediaMetadata;
metadataType: chrome.cast.media.MetadataType;
title: string;
@@ -814,7 +943,7 @@ declare module chrome.cast.media {
height: number;
creationDateTime: string;
// Deprecated
/** @deprecated. Use metadataType instead. */
type: chrome.cast.media.MetadataType;
}
@@ -828,7 +957,7 @@ declare module chrome.cast.media {
new(
contentId: string,
contentType: string
);
): MediaInfo;
contentId: string;
streamType: chrome.cast.media.StreamType;
@@ -850,20 +979,25 @@ declare module chrome.cast.media {
new(
sessionId: string,
mediaSessionId: number
);
): Media;
sessionId: string;
mediaSessionId: number;
activeTrackIds: Array<number>;
currentItemId: number;
customData: Object;
idleReason: chrome.cast.media.IdleReason;
items: Array<chrome.cast.media.QueueItem>;
loadingItemId: number;
media: chrome.cast.media.MediaInfo;
mediaSessionId: number;
playbackRate: number;
playerState: chrome.cast.media.PlayerState;
preloadedItemId: number;
repeatMode: chrome.cast.media.RepeatMode;
sessionId: string;
supportedMediaCommands: Array<chrome.cast.media.MediaCommand>;
volume: chrome.cast.Volume;
idleReason: chrome.cast.media.IdleReason;
activeTrackIds: Array<number>;
customData: Object;
// Deprecated
/** @deprecated. Use getEstimatedTime instead */
currentTime: number;
/**
@@ -955,22 +1089,130 @@ declare module chrome.cast.media {
* @param {function(boolean)} listener
*/
addUpdateListener(
listener: (boolean) => void
)
listener: (isAlive:boolean) => void
): void
/**
* @param {function(boolean)} listener
*/
removeUpdateListener(
listener: (boolean) => void
)
listener: (isAlive:boolean) => void
): void
// Deprecated
/**
* @return {number}
* @suppress {deprecated} Uses currentTime member to compute estimated time.
*/
getEstimatedTime(): number
/**
* @param {!chrome.cast.media.QueueItem} item
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueAppendItem (
item: chrome.cast.media.QueueItem,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!chrome.cast.media.QueueInsertItemsRequest} queueInsertItemsRequest
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueInsertItems (
queueInsertItemsRequest: chrome.cast.media.QueueInsertItemsRequest,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!number} itemId
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueJumpToItem (
itemId: number,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!number} itemId
* @param {!number} newIndex
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueMoveItemToNewIndex (
itemId: number,
newIndex: number,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueNext (
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queuePrev (
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!number} itemId
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueRemoveItem (
itemId: number,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!chrome.cast.media.QueueReorderItemsRequest} queueReorderItemsRequest
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueReorderItems (
queueReorderItemsRequest: chrome.cast.media.QueueReorderItemsRequest,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!chrome.cast.media.RepeatMode} repeatMode
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueSetRepeatMode (
repeatMode: chrome.cast.media.RepeatMode,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
/**
* @param {!chrome.cast.media.QueueUpdateItemsRequest} queueUpdateItemsRequest
* @param {function()} successCallback
* @param {function(!chrome.cast.Error)} errorCallback
*/
queueUpdateItems (
queueUpdateItemsRequest: chrome.cast.media.QueueUpdateItemsRequest,
successCallback: Function,
errorCallback: (error: chrome.cast.Error) => void
): void
}
interface Track {
@@ -983,7 +1225,7 @@ declare module chrome.cast.media {
new(
trackId: number,
trackType: chrome.cast.media.TrackType
);
): Track;
trackId: number;
trackContentId: string;
@@ -1000,7 +1242,7 @@ declare module chrome.cast.media {
* @constructor
* @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TextTrackStyle
*/
new();
new(): TextTrackStyle;
foregroundColor: string;
backgroundColor: string;
@@ -1030,4 +1272,9 @@ declare module chrome.cast.media.timeout {
var stop: number;
var setVolume: number;
var editTracksInfo: number;
var queueInsert: number;
var queueLoad: number;
var queueRemove: number;
var queueReorder: number;
var queueUpdate: number;
}