From 7da84505b7e67bde08d9dc67cbc4b1b262274d78 Mon Sep 17 00:00:00 2001 From: hensm Date: Tue, 19 Mar 2019 19:16:02 +0000 Subject: [PATCH] Expose types via cast/media exports --- ext/src/shim/cast/index.ts | 248 +++++++++--------- ext/src/shim/cast/media/index.ts | 30 +-- .../framework/classes/ApplicationMetadata.ts | 7 +- ext/src/shim/framework/classes/CastContext.ts | 3 - ext/src/shim/framework/classes/CastOptions.ts | 5 +- ext/src/shim/framework/classes/CastSession.ts | 17 +- .../classes/MediaSessionEventData.ts | 4 +- .../shim/framework/classes/RemotePlayer.ts | 4 +- .../classes/SessionStateEventData.ts | 2 - ext/src/shim/framework/index.ts | 2 +- ext/src/shim/index.ts | 4 +- 11 files changed, 161 insertions(+), 165 deletions(-) diff --git a/ext/src/shim/cast/index.ts b/ext/src/shim/cast/index.ts index 3221b0d..7e009ab 100755 --- a/ext/src/shim/cast/index.ts +++ b/ext/src/shim/cast/index.ts @@ -24,7 +24,7 @@ import { AutoJoinPolicy , SessionStatus , VolumeControlType } from "./enums"; -import media from "./media"; +import * as media from "./media"; import { requestSession as requestSessionTimeout } from "../timeout"; @@ -53,138 +53,146 @@ const receiverListeners = new Set(); let sessionSuccessCallback: RequestSessionSuccessCallback; let sessionErrorCallback: ErrorCallback; -export default { + +export { // Enums AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState , ErrorCode, ReceiverAction, ReceiverAvailability, ReceiverType , SenderPlatform, SessionStatus, VolumeControlType // Classes - , ApiConfig, DialRequest, Error: Error_, Image: Image_ - , Receiver, ReceiverDisplayStatus, SenderApplication, Session - , SessionRequest, Timeout, Volume + , ApiConfig, DialRequest, Receiver, ReceiverDisplayStatus + , SenderApplication, Session, SessionRequest, Timeout + , Volume - , VERSION: [1, 2] - , isAvailable: false - , timeout: new Timeout() + , Error_ as Error + , Image_ as Image - // chrome.cast.media namespace , media - - - , addReceiverActionListener: ( - listener: ReceiverActionListener): void => { - - console.info("fx_cast (Debug): cast.addReceiverActionListener"); - receiverListeners.add(listener); - } - - , initialize: ( - newApiConfig: ApiConfig - , successCallback: SuccessCallback - , errorCallback: ErrorCallback): void => { - - console.info("fx_cast (Debug): cast.initialize"); - - // Already initialized - if (apiConfig) { - errorCallback(new Error_(ErrorCode.INVALID_PARAMETER)); - return; - } - - apiConfig = newApiConfig; - - sendMessageResponse({ - subject: "bridge:/startDiscovery" - }); - - apiConfig.receiverListener(receiverList.length - ? ReceiverAvailability.AVAILABLE - : ReceiverAvailability.UNAVAILABLE); - - successCallback(); - } - - , logMessage: (message: string): void => { - /* tslint:disable-next-line:no-console */ - console.log("CAST MSG:", message); - } - - , precache: (data: string): void => { - console.info("STUB :: cast.precache"); - } - - , removeReceiverActionListener: ( - listener: ReceiverActionListener): void => { - - receiverListeners.delete(listener); - } - - , requestSession: ( - successCallback: RequestSessionSuccessCallback - , errorCallback: ErrorCallback - , sessionRequest: SessionRequest - = apiConfig.sessionRequest): void => { - - console.info("fx_cast (Debug): cast.requestSession"); - - // Called before initialization - if (!apiConfig) { - errorCallback(new Error_(ErrorCode.API_NOT_INITIALIZED)); - return; - } - - // Already requesting session - if (sessionRequestInProgress) { - errorCallback(new Error_(ErrorCode.INVALID_PARAMETER - , "Session request already in progress.")); - return; - } - - // No available receivers - if (!receiverList.length) { - errorCallback(new Error_(ErrorCode.RECEIVER_UNAVAILABLE)); - return; - } - - sessionRequestInProgress = true; - - sessionSuccessCallback = successCallback; - sessionErrorCallback = errorCallback; - - // Open destination chooser - sendMessageResponse({ - subject: "main:/openPopup" - }); - } - - , requestSessionById: (sessionId: string): void => { - console.info("STUB :: cast.requestSessionById"); - } - - , setCustomReceivers: ( - receivers: Receiver[] - , successCallback: SuccessCallback - , errorCallback: ErrorCallback): void => { - - console.info("STUB :: cast.setCustomReceivers"); - } - - , setPageContext: (win: Window): void => { - console.info("STUB :: cast.setPageContext"); - } - - , setReceiverDisplayStatus: (sessionId: string): void => { - console.info("STUB :: cast.setReceiverDisplayStatus"); - } - - , unescape: (escaped: string): string => { - return unescape(escaped); - } }; +export let isAvailable = false; +export const timeout = new Timeout(); +export const VERSION = [1, 2]; + +export function addReceiverActionListener ( + listener: ReceiverActionListener): void { + + console.info("fx_cast (Debug): cast.addReceiverActionListener"); + receiverListeners.add(listener); +}; + +export function initialize ( + newApiConfig: ApiConfig + , successCallback: SuccessCallback + , errorCallback: ErrorCallback): void { + + console.info("fx_cast (Debug): cast.initialize"); + + // Already initialized + if (apiConfig) { + errorCallback(new Error_(ErrorCode.INVALID_PARAMETER)); + return; + } + + apiConfig = newApiConfig; + + sendMessageResponse({ + subject: "bridge:/startDiscovery" + }); + + apiConfig.receiverListener(receiverList.length + ? ReceiverAvailability.AVAILABLE + : ReceiverAvailability.UNAVAILABLE); + + successCallback(); +}; + +export function logMessage (message: string): void { + /* tslint:disable-next-line:no-console */ + console.log("CAST MSG:", message); +}; + +export function precache (data: string): void { + console.info("STUB :: cast.precache"); +}; + +export function removeReceiverActionListener ( + listener: ReceiverActionListener): void { + + receiverListeners.delete(listener); +}; + +export function requestSession ( + successCallback: RequestSessionSuccessCallback + , errorCallback: ErrorCallback + , sessionRequest: SessionRequest + = apiConfig.sessionRequest): void { + + console.info("fx_cast (Debug): cast.requestSession"); + + // Called before initialization + if (!apiConfig) { + errorCallback(new Error_(ErrorCode.API_NOT_INITIALIZED)); + return; + } + + // Already requesting session + if (sessionRequestInProgress) { + errorCallback(new Error_(ErrorCode.INVALID_PARAMETER + , "Session request already in progress.")); + return; + } + + // No available receivers + if (!receiverList.length) { + errorCallback(new Error_(ErrorCode.RECEIVER_UNAVAILABLE)); + return; + } + + sessionRequestInProgress = true; + + sessionSuccessCallback = successCallback; + sessionErrorCallback = errorCallback; + + // Open destination chooser + sendMessageResponse({ + subject: "main:/openPopup" + }); +}; + +export function requestSessionById (sessionId: string): void { + console.info("STUB :: cast.requestSessionById"); +}; + +export function setCustomReceivers ( + receivers: Receiver[] + , successCallback: SuccessCallback + , errorCallback: ErrorCallback): void { + + console.info("STUB :: cast.setCustomReceivers"); +}; + +export function setPageContext (win: Window): void { + console.info("STUB :: cast.setPageContext"); +}; + +export function setReceiverDisplayStatus (sessionId: string): void { + console.info("STUB :: cast.setReceiverDisplayStatus"); +}; + +export function unescape (escaped: string): string { + return unescape(escaped); +}; + + onMessage(message => { switch (message.subject) { + case "shim:/initialized": { + isAvailable = true; + break; + } + /** * Cast destination found (serviceUp). Set the API availability * property and call the page event function (__onGCastApiAvailable). diff --git a/ext/src/shim/cast/media/index.ts b/ext/src/shim/cast/media/index.ts index 5591613..cb2ff62 100755 --- a/ext/src/shim/cast/media/index.ts +++ b/ext/src/shim/cast/media/index.ts @@ -40,7 +40,7 @@ import { IdleReason , TrackType } from "./enums"; -export default { +export { // Enums IdleReason, MediaCommand, MetadataType, PlayerState , RepeatMode, ResumeState, StreamType, TextTrackEdgeType @@ -55,18 +55,18 @@ export default { , QueueReorderItemsRequest, QueueSetPropertiesRequest, QueueUpdateItemsRequest , SeekRequest, StopRequest, TextTrackStyle, Track , TvShowMediaMetadata, VolumeRequest - - , timeout: { - editTracksInfo: 0 - , getStatus: 0 - , load: 0 - , pause: 0 - , play: 0 - , queue: 0 - , seek: 0 - , setVolume: 0 - , stop: 0 - } - - , DEFAULT_MEDIA_RECEIVER_APP_ID: "CC1AD845" }; + +export const timeout = { + editTracksInfo: 0 + , getStatus: 0 + , load: 0 + , pause: 0 + , play: 0 + , queue: 0 + , seek: 0 + , setVolume: 0 + , stop: 0 +}; + +export const DEFAULT_MEDIA_RECEIVER_APP_ID = "CC1AD845"; diff --git a/ext/src/shim/framework/classes/ApplicationMetadata.ts b/ext/src/shim/framework/classes/ApplicationMetadata.ts index bce105a..606746d 100644 --- a/ext/src/shim/framework/classes/ApplicationMetadata.ts +++ b/ext/src/shim/framework/classes/ApplicationMetadata.ts @@ -1,16 +1,15 @@ "use strict"; -import Image from "../../cast/classes/Image"; -import Session from "../../cast/classes/Session"; +import * as cast from "../../cast"; export default class ApplicationMetadata { public applicationId: string; - public images: Image[]; + public images: cast.Image[]; public name: string; public namespaces: string[]; - constructor (sessionObj: Session) { + constructor (sessionObj: cast.Session) { this.applicationId = sessionObj.appId; this.images = sessionObj.appImages; this.name = sessionObj.displayName; diff --git a/ext/src/shim/framework/classes/CastContext.ts b/ext/src/shim/framework/classes/CastContext.ts index 277b887..0f2f0cb 100644 --- a/ext/src/shim/framework/classes/CastContext.ts +++ b/ext/src/shim/framework/classes/CastContext.ts @@ -1,8 +1,5 @@ "use strict"; -import Image from "../../cast/classes/Image"; -import Session from "../../cast/classes/Session"; - import CastOptions from "./CastOptions"; import CastSession from "./CastSession"; import CastStateEventData from "./CastStateEventData"; diff --git a/ext/src/shim/framework/classes/CastOptions.ts b/ext/src/shim/framework/classes/CastOptions.ts index 71939ee..36ebd97 100644 --- a/ext/src/shim/framework/classes/CastOptions.ts +++ b/ext/src/shim/framework/classes/CastOptions.ts @@ -1,9 +1,10 @@ "use strict"; -import { AutoJoinPolicy } from "../../cast/enums"; +import * as cast from "../../cast"; + export default class CastOptions { - public autoJoinPolicy: string = AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED; + public autoJoinPolicy: string = cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED; public language: string = null; public receiverApplicationId: string = null; public resumeSavedSession: boolean = true; diff --git a/ext/src/shim/framework/classes/CastSession.ts b/ext/src/shim/framework/classes/CastSession.ts index 5294f77..7b6ec0b 100644 --- a/ext/src/shim/framework/classes/CastSession.ts +++ b/ext/src/shim/framework/classes/CastSession.ts @@ -1,11 +1,6 @@ "use strict"; -import Image from "../../cast/classes/Image"; -import Receiver from "../../cast/classes/Receiver"; -import Session from "../../cast/classes/Session"; - -import LoadRequest from "../../cast/media/classes/LoadRequest"; -import Media from "../../cast/media/classes/Media"; +import * as cast from "../../cast"; import ActiveInputStateEventData from "./ActiveInputStateEventData"; import ApplicationMetadata from "./ApplicationMetadata"; @@ -26,7 +21,7 @@ type MessageListener = (namespace: string, message: string) => void; export default class CastSession { - constructor (sessionObj: Session, state: string) { + constructor (sessionObj: cast.Session, state: string) { console.info("STUB :: CastSession#constructor"); } @@ -64,12 +59,12 @@ export default class CastSession { } // @ts-ignore - public getCastDevice (): Receiver { + public getCastDevice (): cast.Receiver { console.info("STUB :: CastSession#getCastDevice"); } // @ts-ignore - public getMediaSession (): Media { + public getMediaSession (): cast.media.Media { console.info("STUB :: CastSession#getMediaSession"); } @@ -79,7 +74,7 @@ export default class CastSession { } // @ts-ignore - public getSessionObj (): Session { + public getSessionObj (): cast.Session { console.info("STUB :: CastSession#getSessionObj"); } @@ -99,7 +94,7 @@ export default class CastSession { } // @ts-ignore - public loadMedia (loadRequest: LoadRequest): Promise { + public loadMedia (loadRequest: cast.media.LoadRequest): Promise { console.info("STUB :: CastSession#loadMedia"); } diff --git a/ext/src/shim/framework/classes/MediaSessionEventData.ts b/ext/src/shim/framework/classes/MediaSessionEventData.ts index b402e98..84610ce 100644 --- a/ext/src/shim/framework/classes/MediaSessionEventData.ts +++ b/ext/src/shim/framework/classes/MediaSessionEventData.ts @@ -1,6 +1,6 @@ "use strict"; -import Media from "../../cast/media/classes/Media"; +import * as cast from "../../cast"; import EventData from "./EventData"; @@ -9,7 +9,7 @@ import { SessionEventType } from "../enums"; export default class ApplicationStatusEventData extends EventData { constructor ( - public mediaSession: Media) { + public mediaSession: cast.media.Media) { super(SessionEventType.MEDIA_SESSION); } diff --git a/ext/src/shim/framework/classes/RemotePlayer.ts b/ext/src/shim/framework/classes/RemotePlayer.ts index 758084e..476a628 100644 --- a/ext/src/shim/framework/classes/RemotePlayer.ts +++ b/ext/src/shim/framework/classes/RemotePlayer.ts @@ -1,6 +1,6 @@ "use strict"; -import MediaInfo from "../../cast/media/classes/MediaInfo"; +import * as cast from "../../cast"; import RemotePlayerController from "./RemotePlayerController"; @@ -25,7 +25,7 @@ export default class RemotePlayer { public isMediaLoaded = false; public isMuted = false; public isPaused = false; - public mediaInfo: MediaInfo = null; + public mediaInfo: cast.media.MediaInfo = null; public playerState: string = null; public savedPlayerState: SavedPlayerState = null; public statusText = ""; diff --git a/ext/src/shim/framework/classes/SessionStateEventData.ts b/ext/src/shim/framework/classes/SessionStateEventData.ts index 137c340..d8c81dd 100644 --- a/ext/src/shim/framework/classes/SessionStateEventData.ts +++ b/ext/src/shim/framework/classes/SessionStateEventData.ts @@ -1,7 +1,5 @@ "use strict"; -import { ErrorCode } from "../../cast/enums"; - import CastSession from "./CastSession"; import EventData from "./EventData"; diff --git a/ext/src/shim/framework/index.ts b/ext/src/shim/framework/index.ts index 885c0e2..491500a 100644 --- a/ext/src/shim/framework/index.ts +++ b/ext/src/shim/framework/index.ts @@ -1,6 +1,6 @@ "use strict"; -import cast from "../cast"; +import * as cast from "../cast"; import ActiveInputStateEventData from "./classes/ActiveInputStateEventData"; import ApplicationMetadata from "./classes/ApplicationMetadata"; diff --git a/ext/src/shim/index.ts b/ext/src/shim/index.ts index eb3ca04..92fddbf 100755 --- a/ext/src/shim/index.ts +++ b/ext/src/shim/index.ts @@ -1,6 +1,6 @@ "use strict"; -import cast from "./cast"; +import * as cast from "./cast"; import { onMessage } from "./messageBridge"; @@ -35,8 +35,6 @@ onMessage(message => { case "shim:/initialized": { const bridgeInfo = message.data; - cast.isAvailable = true; - // Call page's API loaded function if defined const readyFunction = global.__onGCastApiAvailable; if (readyFunction && typeof readyFunction === "function") {