blob: d6cae814fe994d1ddaf179c3e43d82e67f24c8b1 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview API for posting messages to a route and getting messages from
* the route.
*/
goog.provide('mr.MessagePort');
goog.provide('mr.MessagePortService');
/**
* @record
*/
mr.MessagePort = class {
/**
* Called to post a message to the sink via a media route.
* @param {!Object|string} message The message to post. Object will be
* serialized to a JSON string.
* @param {Object=} opt_extraInfo Extra info about how to send a message.
* @return {!Promise} Fulfilled when the message is posted, or rejected
* if there an error.
*/
sendMessage(message, opt_extraInfo) {}
/**
* Releases any resources used by this object.
*/
dispose() {}
};
/**
* The message handler to invoke when messages associated
* with the route arrives.
* @type {function((!Object|string))}
*/
mr.MessagePort.prototype.onMessage;
/**
* @record
*/
mr.MessagePortService = class {
/**
* Returns the MessagePort for internal communication with the provider.
* @param {string} routeId
* @return {!mr.MessagePort}
*/
getInternalMessenger(routeId) {}
/**
* @return {!mr.MessagePortService}
*/
static getService() {
return mr.MessagePortService.service_;
}
/**
* @param {!mr.MessagePortService} service
*/
static setService(service) {
if (!mr.MessagePortService.service_) {
mr.MessagePortService.service_ = service;
}
}
};
/** @private {!mr.MessagePortService} */
mr.MessagePortService.service_;