jenkins-bot has submitted this change and it was merged.

Change subject: mediawiki.api: Add xhr.abort method to promise object
......................................................................


mediawiki.api: Add xhr.abort method to promise object

jQuery.ajax does the same internally to extend the promise.

Change-Id: I3a8ae7a4c92dda5038cf7722ebd1d41dab0a7ef9
---
M resources/mediawiki.api/mediawiki.api.category.js
M resources/mediawiki.api/mediawiki.api.edit.js
M resources/mediawiki.api/mediawiki.api.js
M resources/mediawiki.api/mediawiki.api.parse.js
M resources/mediawiki.api/mediawiki.api.watch.js
5 files changed, 31 insertions(+), 23 deletions(-)

Approvals:
  Krinkle: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/mediawiki.api/mediawiki.api.category.js 
b/resources/mediawiki.api/mediawiki.api.category.js
index 4de5291..8bba1fc 100644
--- a/resources/mediawiki.api/mediawiki.api.category.js
+++ b/resources/mediawiki.api/mediawiki.api.category.js
@@ -14,12 +14,13 @@
                 * @return {boolean} return.done.isCategory Whether the 
category exists.
                 */
                isCategory: function ( title, ok, err ) {
-                       var d = $.Deferred();
+                       var d = $.Deferred(),
+                               apiPromise;
                        // Backwards compatibility (< MW 1.20)
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       apiPromise = this.get( {
                                        prop: 'categoryinfo',
                                        titles: title.toString()
                                } )
@@ -36,7 +37,7 @@
                                })
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                },
 
                /**
@@ -50,13 +51,14 @@
                 * @return {String[]} return.done.categories Matched categories
                 */
                getCategoriesByPrefix: function ( prefix, ok, err ) {
-                       var d = $.Deferred();
+                       var d = $.Deferred(),
+                               apiPromise;
                        // Backwards compatibility (< MW 1.20)
                        d.done( ok );
                        d.fail( err );
 
                        // Fetch with allpages to only get categories that have 
a corresponding description page.
-                       this.get( {
+                       apiPromise = this.get( {
                                        list: 'allpages',
                                        apprefix: prefix,
                                        apnamespace: 
mw.config.get('wgNamespaceIds').category
@@ -72,7 +74,7 @@
                                })
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                },
 
 
@@ -88,12 +90,13 @@
                 *  if title was not found.
                 */
                getCategories: function ( title, ok, err, async ) {
-                       var d = $.Deferred();
+                       var d = $.Deferred(),
+                               apiPromise;
                        // Backwards compatibility (< MW 1.20)
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       apiPromise = this.get( {
                                        prop: 'categories',
                                        titles: title.toString()
                                }, {
@@ -114,10 +117,10 @@
                                                } );
                                        }
                                        d.resolve( ret );
-                               })
+                               } )
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                }
 
        } );
diff --git a/resources/mediawiki.api/mediawiki.api.edit.js 
b/resources/mediawiki.api/mediawiki.api.edit.js
index 3c775ad..2cd1b92 100644
--- a/resources/mediawiki.api/mediawiki.api.edit.js
+++ b/resources/mediawiki.api/mediawiki.api.edit.js
@@ -57,12 +57,13 @@
                 * @return {string} return.done.token Received token.
                 */
                getEditToken: function ( ok, err ) {
-                       var d = $.Deferred();
+                       var d = $.Deferred(),
+                               apiPromise;
                        // Backwards compatibility (< MW 1.20)
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       apiPromise = this.get( {
                                        action: 'tokens',
                                        type: 'edit'
                                }, {
@@ -87,7 +88,7 @@
                                })
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                },
 
                /**
diff --git a/resources/mediawiki.api/mediawiki.api.js 
b/resources/mediawiki.api/mediawiki.api.js
index cf7443f..142c454 100644
--- a/resources/mediawiki.api/mediawiki.api.js
+++ b/resources/mediawiki.api/mediawiki.api.js
@@ -115,7 +115,8 @@
                 */
                ajax: function ( parameters, ajaxOptions ) {
                        var token,
-                               apiDeferred = $.Deferred();
+                               apiDeferred = $.Deferred(),
+                               xhr;
 
                        parameters = $.extend( {}, this.defaults.parameters, 
parameters );
                        ajaxOptions = $.extend( {}, this.defaults.ajax, 
ajaxOptions );
@@ -147,7 +148,7 @@
                        }
 
                        // Make the AJAX request
-                       $.ajax( ajaxOptions )
+                       xhr = $.ajax( ajaxOptions )
                                // If AJAX fails, reject API call with error 
code 'http'
                                // and details in second argument.
                                .fail( function ( xhr, textStatus, exception ) {
@@ -172,9 +173,9 @@
                                } );
 
                        // Return the Promise
-                       return apiDeferred.promise().fail( function ( code, 
details ) {
+                       return apiDeferred.promise( { abort: xhr.abort } 
).fail( function ( code, details ) {
                                mw.log( 'mw.Api error: ', code, details );
-                       });
+                       } );
                }
 
        };
diff --git a/resources/mediawiki.api/mediawiki.api.parse.js 
b/resources/mediawiki.api/mediawiki.api.parse.js
index ea0388c..4044655 100644
--- a/resources/mediawiki.api/mediawiki.api.parse.js
+++ b/resources/mediawiki.api/mediawiki.api.parse.js
@@ -15,12 +15,13 @@
                 * @return {string} return.done.data Parsed HTML of `wikitext`.
                 */
                parse: function ( wikitext, ok, err ) {
-                       var d = $.Deferred();
+                       var d = $.Deferred(),
+                               apiPromise;
                        // Backwards compatibility (< MW 1.20)
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       apiPromise = this.get( {
                                        action: 'parse',
                                        text: wikitext
                                } )
@@ -31,7 +32,7 @@
                                } )
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                }
        } );
 
diff --git a/resources/mediawiki.api/mediawiki.api.watch.js 
b/resources/mediawiki.api/mediawiki.api.watch.js
index c86a90a..e2be5c7 100644
--- a/resources/mediawiki.api/mediawiki.api.watch.js
+++ b/resources/mediawiki.api/mediawiki.api.watch.js
@@ -19,7 +19,9 @@
         * @return {string} return.done.watch.message Parsed HTML of the 
confirmational interface message
         */
        function doWatchInternal( page, ok, err, addParams ) {
-               var params, d = $.Deferred();
+               var params,
+                       d = $.Deferred(),
+                       apiPromise;
                // Backwards compatibility (< MW 1.20)
                d.done( ok );
                d.fail( err );
@@ -35,13 +37,13 @@
                        $.extend( params, addParams );
                }
 
-               this.post( params )
+               apiPromise = this.post( params )
                        .done( function ( data ) {
                                d.resolve( data.watch );
                        } )
                        .fail( d.reject );
 
-               return d.promise();
+               return d.promise( { abort: apiPromise.abort } );
        }
 
        $.extend( mw.Api.prototype, {

-- 
To view, visit https://gerrit.wikimedia.org/r/56323
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I3a8ae7a4c92dda5038cf7722ebd1d41dab0a7ef9
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to