From d6175f4c3f31efca13239ae4c85a972686695307 Mon Sep 17 00:00:00 2001 From: helderwiki Date: Thu, 27 Feb 2014 10:33:46 -0300 Subject: [PATCH] mediawiki.api: Emit warning when deprecated callback parameters are used The "ok" and "err" parameters have been deprecated since 031910f7fe. Bug: 61372 Change-Id: I38faa01128a66a7a4442602b29a6492c7e073e20 --- .../mediawiki.api/mediawiki.api.category.js | 19 ++++++++++++--- resources/mediawiki.api/mediawiki.api.edit.js | 23 +++++++++++++++---- resources/mediawiki.api/mediawiki.api.js | 5 ++++ .../mediawiki.api/mediawiki.api.parse.js | 6 ++++- .../mediawiki.api/mediawiki.api.watch.js | 13 +++++++---- 5 files changed, 53 insertions(+), 13 deletions(-) diff --git a/resources/mediawiki.api/mediawiki.api.category.js b/resources/mediawiki.api/mediawiki.api.category.js index d61c1c63f6..57eda3df99 100644 --- a/resources/mediawiki.api/mediawiki.api.category.js +++ b/resources/mediawiki.api/mediawiki.api.category.js @@ -3,6 +3,7 @@ */ ( function ( mw, $ ) { + var msg = 'Use of mediawiki.api callback params is deprecated. Use the Promise instead.'; $.extend( mw.Api.prototype, { /** * Determine if a category exists. @@ -18,7 +19,11 @@ apiPromise; // Backwards compatibility (< MW 1.20) - d.done( ok ).fail( err ); + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + d.done( ok ).fail( err ); + } apiPromise = this.get( { prop: 'categoryinfo', @@ -55,7 +60,11 @@ apiPromise; // Backwards compatibility (< MW 1.20) - d.done( ok ).fail( err ); + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + d.done( ok ).fail( err ); + } // Fetch with allpages to only get categories that have a corresponding description page. apiPromise = this.get( { @@ -94,7 +103,11 @@ apiPromise; // Backwards compatibility (< MW 1.20) - d.done( ok ).fail( err ); + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + d.done( ok ).fail( err ); + } apiPromise = this.get( { prop: 'categories', diff --git a/resources/mediawiki.api/mediawiki.api.edit.js b/resources/mediawiki.api/mediawiki.api.edit.js index cc83a4b819..91d9b8f9fc 100644 --- a/resources/mediawiki.api/mediawiki.api.edit.js +++ b/resources/mediawiki.api/mediawiki.api.edit.js @@ -3,6 +3,7 @@ */ ( function ( mw, $ ) { + var msg = 'Use of mediawiki.api callback params is deprecated. Use the Promise instead.'; $.extend( mw.Api.prototype, { /** @@ -16,19 +17,27 @@ * @return {jQuery.Promise} See #post */ postWithEditToken: function ( params, ok, err ) { + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + } return this.postWithToken( 'edit', params ).done( ok ).fail( err ); }, /** * Api helper to grab an edit token. * - * @param {Function} [ok] Success callback - * @param {Function} [err] Error callback + * @param {Function} [ok] Success callback (deprecated) + * @param {Function} [err] Error callback (deprecated) * @return {jQuery.Promise} * @return {Function} return.done * @return {string} return.done.token Received token. */ getEditToken: function ( ok, err ) { + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + } return this.getToken( 'edit' ).done( ok ).fail( err ); }, @@ -38,11 +47,15 @@ * @param {mw.Title|String} title Target page * @param {string} header * @param {string} message wikitext message - * @param {Function} [ok] Success handler - * @param {Function} [err] Error handler + * @param {Function} [ok] Success handler (deprecated) + * @param {Function} [err] Error handler (deprecated) * @return {jQuery.Promise} */ newSection: function ( title, header, message, ok, err ) { + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); + } return this.postWithEditToken( { action: 'edit', section: 'new', @@ -50,7 +63,7 @@ title: title.toString(), summary: header, text: message - }, ok, err ); + } ).done( ok ).fail( err ); } } ); diff --git a/resources/mediawiki.api/mediawiki.api.js b/resources/mediawiki.api/mediawiki.api.js index 0024f4b06b..749086218e 100644 --- a/resources/mediawiki.api/mediawiki.api.js +++ b/resources/mediawiki.api/mediawiki.api.js @@ -118,6 +118,7 @@ ajax: function ( parameters, ajaxOptions ) { var token, apiDeferred = $.Deferred(), + msg = 'Use of mediawiki.api callback params is deprecated. Use the Promise instead.', xhr; parameters = $.extend( {}, this.defaults.parameters, parameters ); @@ -141,10 +142,14 @@ // Backwards compatibility: Before MediaWiki 1.20, // callbacks were done with the 'ok' and 'err' property in ajaxOptions. if ( ajaxOptions.ok ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); apiDeferred.done( ajaxOptions.ok ); delete ajaxOptions.ok; } if ( ajaxOptions.err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( msg ); apiDeferred.fail( ajaxOptions.err ); delete ajaxOptions.err; } diff --git a/resources/mediawiki.api/mediawiki.api.parse.js b/resources/mediawiki.api/mediawiki.api.parse.js index c4d23b827d..1c04b178e7 100644 --- a/resources/mediawiki.api/mediawiki.api.parse.js +++ b/resources/mediawiki.api/mediawiki.api.parse.js @@ -19,7 +19,11 @@ apiPromise; // Backwards compatibility (< MW 1.20) - d.done( ok ).fail( err ); + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( 'Use of mediawiki.api callback params is deprecated. Use the Promise instead.' ); + d.done( ok ).fail( err ); + } apiPromise = this.get( { action: 'parse', diff --git a/resources/mediawiki.api/mediawiki.api.watch.js b/resources/mediawiki.api/mediawiki.api.watch.js index ab8a5127de..fbfe27df8e 100644 --- a/resources/mediawiki.api/mediawiki.api.watch.js +++ b/resources/mediawiki.api/mediawiki.api.watch.js @@ -19,12 +19,17 @@ * @return {string} return.done.watch.message Parsed HTML of the confirmational interface message */ function doWatchInternal( page, ok, err, addParams ) { - var params, - d = $.Deferred(), - apiPromise; + // XXX: Parameter addParams is undocumented because we inherit this + // documentation in the public method.. + var params, apiPromise, + d = $.Deferred(); // Backwards compatibility (< MW 1.20) - d.done( ok ).fail( err ); + if ( ok || err ) { + mw.track( 'mw.deprecate', 'api.cbParam' ); + mw.log.warn( 'Use of mediawiki.api callback params is deprecated. Use the Promise instead.' ); + d.done( ok ).fail( err ); + } params = { action: 'watch', -- 2.20.1