Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Unified Diff: extensions/renderer/resources/media_router_bindings.js

Issue 2111303003: [Media Router] Replace route messaging API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_test.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/resources/media_router_bindings.js
diff --git a/extensions/renderer/resources/media_router_bindings.js b/extensions/renderer/resources/media_router_bindings.js
index 86ea2173273d3493db74a10456731a3f580ef5a0..a54fb9843830df8a02bfd309ef2b7e614968677c 100644
--- a/extensions/renderer/resources/media_router_bindings.js
+++ b/extensions/renderer/resources/media_router_bindings.js
@@ -412,6 +412,15 @@ define('media_router_bindings', [
};
/**
+ * @param {string} routeId
+ * @param {!Array<!RouteMessage>} mesages
+ */
+ MediaRouter.prototype.onRouteMessagesReceived = function(routeId, messages) {
+ this.service_.onRouteMessagesReceived(
+ routeId, messages.map(messageToMojo_));
+ };
+
+ /**
* Object containing callbacks set by the provider manager.
*
* @constructor
@@ -454,6 +463,7 @@ define('media_router_bindings', [
this.sendRouteBinaryMessage = null;
/**
+ * TODO(imcheng): Remove in M55 (crbug.com/626395).
* @type {function(string):
* Promise.<{messages: Array.<RouteMessage>, error: boolean}>}
*/
@@ -462,6 +472,11 @@ define('media_router_bindings', [
/**
* @type {function(string)}
*/
+ this.startlisteningForRouteMessages = null;
+
+ /**
+ * @type {function(string)}
+ */
this.stopListeningForRouteMessages = null;
/**
@@ -537,7 +552,7 @@ define('media_router_bindings', [
'startObservingMediaRoutes',
'sendRouteMessage',
'sendRouteBinaryMessage',
- 'listenForRouteMessages',
+ 'startListeningForRouteMessages',
'stopListeningForRouteMessages',
'detachRoute',
'terminateRoute',
@@ -715,29 +730,47 @@ define('media_router_bindings', [
};
/**
- * Listen for next batch of messages from one of the routeIds.
+ * Listen for messages from a route.
* @param {!string} routeId
- * @return {!Promise.<{messages: Array.<RouteMessage>, error: boolean}>}
- * Resolved with a list of messages, and a boolean indicating if an error
- * occurred.
*/
- MediaRouteProvider.prototype.listenForRouteMessages = function(routeId) {
- return this.handlers_.listenForRouteMessages(routeId)
+ MediaRouteProvider.prototype.startListeningForRouteMessages = function(
+ routeId) {
+ if (this.handlers_.startListeningForRouteMessages) {
+ this.handlers_.startListeningForRouteMessages(routeId);
+ } else {
+ // Old API.
+ this.listenForRouteMessagesOld(routeId);
+ }
+ };
+
+
+ /**
+ * A hack to adapt new MR messaging API to old extension messaging API.
+ * TODO(imcheng): Remove in M55 (crbug.com/626395).
+ * @param {!string} routeId
+ */
+ MediaRouteProvider.prototype.listenForRouteMessagesOld = function(routeId) {
+ this.handlers_.listenForRouteMessages(routeId)
.then(function(messages) {
- return {'messages': messages.map(messageToMojo_), 'error': false};
- }, function() {
- return {'messages': [], 'error': true};
- });
+ // If messages is empty, then stopListeningForRouteMessages has been
+ // called. We don't need to send it back to MR.
+ if (messages.length > 0) {
+ // Send the messages back to MR, and listen for next batch of
+ // messages.
+ this.mediaRouter_.onRouteMessagesReceived(routeId, messages);
+ this.listenForRouteMessagesOld(routeId);
+ }
+ }.bind(this), function() {
+ // Ignore rejections.
+ }.bind(this));
};
/**
- * If there is an outstanding |listenForRouteMessages| promise for
- * |routeId|, resolve that promise with an empty array.
* @param {!string} routeId
*/
MediaRouteProvider.prototype.stopListeningForRouteMessages = function(
routeId) {
- return this.handlers_.stopListeningForRouteMessages(routeId);
+ this.handlers_.stopListeningForRouteMessages(routeId);
};
/**
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_test.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698