Commit 8e100e89 authored by mfoltz's avatar mfoltz Committed by Commit bot

[Media Router] Adds a pre-invocation hook to Media Router bindings.

This hook allows the Media Router component to properly record the cause of
event page wakeups that are caused by invoking the Media Route Provider API.

BUG=

Review-Url: https://codereview.chromium.org/2422773004
Cr-Commit-Position: refs/heads/master@{#427097}
parent c37cd75b
...@@ -545,6 +545,10 @@ define('media_router_bindings', [ ...@@ -545,6 +545,10 @@ define('media_router_bindings', [
* @param {!MediaRouterHandlers} handlers * @param {!MediaRouterHandlers} handlers
*/ */
MediaRouteProvider.prototype.setHandlers = function(handlers) { MediaRouteProvider.prototype.setHandlers = function(handlers) {
// TODO(mfoltz): Remove when component that supports this method is
// rolled out to all Chrome channels in M56.
if (!handlers['onBeforeInvokeHandler'])
handlers['onBeforeInvokeHandler'] = () => {};
this.handlers_ = handlers; this.handlers_ = handlers;
var requiredHandlers = [ var requiredHandlers = [
'stopObservingMediaRoutes', 'stopObservingMediaRoutes',
...@@ -563,6 +567,7 @@ define('media_router_bindings', [ ...@@ -563,6 +567,7 @@ define('media_router_bindings', [
'enableMdnsDiscovery', 'enableMdnsDiscovery',
'updateMediaSinks', 'updateMediaSinks',
'searchSinks', 'searchSinks',
'onBeforeInvokeHandler'
]; ];
requiredHandlers.forEach(function(nextHandler) { requiredHandlers.forEach(function(nextHandler) {
if (handlers[nextHandler] === undefined) { if (handlers[nextHandler] === undefined) {
...@@ -579,6 +584,7 @@ define('media_router_bindings', [ ...@@ -579,6 +584,7 @@ define('media_router_bindings', [
*/ */
MediaRouteProvider.prototype.startObservingMediaSinks = MediaRouteProvider.prototype.startObservingMediaSinks =
function(sourceUrn) { function(sourceUrn) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.startObservingMediaSinks(sourceUrn); this.handlers_.startObservingMediaSinks(sourceUrn);
}; };
...@@ -588,6 +594,7 @@ define('media_router_bindings', [ ...@@ -588,6 +594,7 @@ define('media_router_bindings', [
*/ */
MediaRouteProvider.prototype.stopObservingMediaSinks = MediaRouteProvider.prototype.stopObservingMediaSinks =
function(sourceUrn) { function(sourceUrn) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.stopObservingMediaSinks(sourceUrn); this.handlers_.stopObservingMediaSinks(sourceUrn);
}; };
...@@ -611,7 +618,8 @@ define('media_router_bindings', [ ...@@ -611,7 +618,8 @@ define('media_router_bindings', [
*/ */
MediaRouteProvider.prototype.createRoute = MediaRouteProvider.prototype.createRoute =
function(sourceUrn, sinkId, presentationId, origin, tabId, function(sourceUrn, sinkId, presentationId, origin, tabId,
timeout, incognito) { timeout, incognito) {
this.handlers_.onBeforeInvokeHandler();
return this.handlers_.createRoute( return this.handlers_.createRoute(
sourceUrn, sinkId, presentationId, origin, tabId, sourceUrn, sinkId, presentationId, origin, tabId,
Math.floor(timeout.microseconds / 1000), incognito) Math.floor(timeout.microseconds / 1000), incognito)
...@@ -642,6 +650,7 @@ define('media_router_bindings', [ ...@@ -642,6 +650,7 @@ define('media_router_bindings', [
MediaRouteProvider.prototype.joinRoute = MediaRouteProvider.prototype.joinRoute =
function(sourceUrn, presentationId, origin, tabId, timeout, function(sourceUrn, presentationId, origin, tabId, timeout,
incognito) { incognito) {
this.handlers_.onBeforeInvokeHandler();
return this.handlers_.joinRoute( return this.handlers_.joinRoute(
sourceUrn, presentationId, origin, tabId, sourceUrn, presentationId, origin, tabId,
Math.floor(timeout.microseconds / 1000), incognito) Math.floor(timeout.microseconds / 1000), incognito)
...@@ -673,6 +682,7 @@ define('media_router_bindings', [ ...@@ -673,6 +682,7 @@ define('media_router_bindings', [
MediaRouteProvider.prototype.connectRouteByRouteId = MediaRouteProvider.prototype.connectRouteByRouteId =
function(sourceUrn, routeId, presentationId, origin, tabId, function(sourceUrn, routeId, presentationId, origin, tabId,
timeout, incognito) { timeout, incognito) {
this.handlers_.onBeforeInvokeHandler();
return this.handlers_.connectRouteByRouteId( return this.handlers_.connectRouteByRouteId(
sourceUrn, routeId, presentationId, origin, tabId, sourceUrn, routeId, presentationId, origin, tabId,
Math.floor(timeout.microseconds / 1000), incognito) Math.floor(timeout.microseconds / 1000), incognito)
...@@ -692,6 +702,7 @@ define('media_router_bindings', [ ...@@ -692,6 +702,7 @@ define('media_router_bindings', [
* message and code if the operation failed. * message and code if the operation failed.
*/ */
MediaRouteProvider.prototype.terminateRoute = function(routeId) { MediaRouteProvider.prototype.terminateRoute = function(routeId) {
this.handlers_.onBeforeInvokeHandler();
// TODO(crbug.com/627967): Remove code path that doesn't expect a Promise // TODO(crbug.com/627967): Remove code path that doesn't expect a Promise
// in M56. // in M56.
var maybePromise = this.handlers_.terminateRoute(routeId); var maybePromise = this.handlers_.terminateRoute(routeId);
...@@ -716,7 +727,8 @@ define('media_router_bindings', [ ...@@ -716,7 +727,8 @@ define('media_router_bindings', [
* or false on failure. * or false on failure.
*/ */
MediaRouteProvider.prototype.sendRouteMessage = function( MediaRouteProvider.prototype.sendRouteMessage = function(
routeId, message) { routeId, message) {
this.handlers_.onBeforeInvokeHandler();
return this.handlers_.sendRouteMessage(routeId, message) return this.handlers_.sendRouteMessage(routeId, message)
.then(function() { .then(function() {
return {'sent': true}; return {'sent': true};
...@@ -733,7 +745,8 @@ define('media_router_bindings', [ ...@@ -733,7 +745,8 @@ define('media_router_bindings', [
* or false on failure. * or false on failure.
*/ */
MediaRouteProvider.prototype.sendRouteBinaryMessage = function( MediaRouteProvider.prototype.sendRouteBinaryMessage = function(
routeId, data) { routeId, data) {
this.handlers_.onBeforeInvokeHandler();
return this.handlers_.sendRouteBinaryMessage(routeId, data) return this.handlers_.sendRouteBinaryMessage(routeId, data)
.then(function() { .then(function() {
return {'sent': true}; return {'sent': true};
...@@ -748,6 +761,7 @@ define('media_router_bindings', [ ...@@ -748,6 +761,7 @@ define('media_router_bindings', [
*/ */
MediaRouteProvider.prototype.startListeningForRouteMessages = function( MediaRouteProvider.prototype.startListeningForRouteMessages = function(
routeId) { routeId) {
this.handlers_.onBeforeInvokeHandler();
if (this.handlers_.startListeningForRouteMessages) { if (this.handlers_.startListeningForRouteMessages) {
this.handlers_.startListeningForRouteMessages(routeId); this.handlers_.startListeningForRouteMessages(routeId);
} else { } else {
...@@ -763,6 +777,7 @@ define('media_router_bindings', [ ...@@ -763,6 +777,7 @@ define('media_router_bindings', [
* @param {!string} routeId * @param {!string} routeId
*/ */
MediaRouteProvider.prototype.listenForRouteMessagesOld = function(routeId) { MediaRouteProvider.prototype.listenForRouteMessagesOld = function(routeId) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.listenForRouteMessages(routeId) this.handlers_.listenForRouteMessages(routeId)
.then(function(messages) { .then(function(messages) {
// If messages is empty, then stopListeningForRouteMessages has been // If messages is empty, then stopListeningForRouteMessages has been
...@@ -783,6 +798,7 @@ define('media_router_bindings', [ ...@@ -783,6 +798,7 @@ define('media_router_bindings', [
*/ */
MediaRouteProvider.prototype.stopListeningForRouteMessages = function( MediaRouteProvider.prototype.stopListeningForRouteMessages = function(
routeId) { routeId) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.stopListeningForRouteMessages(routeId); this.handlers_.stopListeningForRouteMessages(routeId);
}; };
...@@ -802,6 +818,7 @@ define('media_router_bindings', [ ...@@ -802,6 +818,7 @@ define('media_router_bindings', [
* @param {!string} sourceUrn * @param {!string} sourceUrn
*/ */
MediaRouteProvider.prototype.startObservingMediaRoutes = function(sourceUrn) { MediaRouteProvider.prototype.startObservingMediaRoutes = function(sourceUrn) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.startObservingMediaRoutes(sourceUrn); this.handlers_.startObservingMediaRoutes(sourceUrn);
}; };
...@@ -811,6 +828,7 @@ define('media_router_bindings', [ ...@@ -811,6 +828,7 @@ define('media_router_bindings', [
* @param {!string} sourceUrn * @param {!string} sourceUrn
*/ */
MediaRouteProvider.prototype.stopObservingMediaRoutes = function(sourceUrn) { MediaRouteProvider.prototype.stopObservingMediaRoutes = function(sourceUrn) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.stopObservingMediaRoutes(sourceUrn); this.handlers_.stopObservingMediaRoutes(sourceUrn);
}; };
...@@ -818,6 +836,7 @@ define('media_router_bindings', [ ...@@ -818,6 +836,7 @@ define('media_router_bindings', [
* Enables mDNS device discovery. * Enables mDNS device discovery.
*/ */
MediaRouteProvider.prototype.enableMdnsDiscovery = function() { MediaRouteProvider.prototype.enableMdnsDiscovery = function() {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.enableMdnsDiscovery(); this.handlers_.enableMdnsDiscovery();
}; };
...@@ -826,6 +845,7 @@ define('media_router_bindings', [ ...@@ -826,6 +845,7 @@ define('media_router_bindings', [
* @param {!string} sourceUrn * @param {!string} sourceUrn
*/ */
MediaRouteProvider.prototype.updateMediaSinks = function(sourceUrn) { MediaRouteProvider.prototype.updateMediaSinks = function(sourceUrn) {
this.handlers_.onBeforeInvokeHandler();
this.handlers_.updateMediaSinks(sourceUrn); this.handlers_.updateMediaSinks(sourceUrn);
}; };
...@@ -850,6 +870,7 @@ define('media_router_bindings', [ ...@@ -850,6 +870,7 @@ define('media_router_bindings', [
if (!this.handlers_.searchSinks) { if (!this.handlers_.searchSinks) {
return Promise.resolve({'sink_id': ''}); return Promise.resolve({'sink_id': ''});
} }
this.handlers_.onBeforeInvokeHandler();
return Promise.resolve({ return Promise.resolve({
'sink_id': this.handlers_.searchSinks(sinkId, sourceUrn, searchCriteria) 'sink_id': this.handlers_.searchSinks(sinkId, sourceUrn, searchCriteria)
}); });
...@@ -861,4 +882,3 @@ define('media_router_bindings', [ ...@@ -861,4 +882,3 @@ define('media_router_bindings', [
return mediaRouter; return mediaRouter;
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment