| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2016 Eyeo GmbH |    3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  108    */ |  108    */ | 
|  109   onDownloadSuccess: null, |  109   onDownloadSuccess: null, | 
|  110  |  110  | 
|  111   /** |  111   /** | 
|  112    * Callback to be triggered whenever a download fails. |  112    * Callback to be triggered whenever a download fails. | 
|  113    * @type Function |  113    * @type Function | 
|  114    */ |  114    */ | 
|  115   onDownloadError: null, |  115   onDownloadError: null, | 
|  116  |  116  | 
|  117   /** |  117   /** | 
 |  118    * Callback to be triggered for POST request data generation. | 
 |  119    * @type Function | 
 |  120    */ | 
 |  121   generateRequestData: null, | 
 |  122  | 
 |  123   /** | 
 |  124    * List of valid responses. | 
 |  125    * @type Array | 
 |  126    */ | 
 |  127   validResponses: [200], | 
 |  128  | 
 |  129   /** | 
|  118    * Checks whether anything needs downloading. |  130    * Checks whether anything needs downloading. | 
|  119    */ |  131    */ | 
|  120   _doCheck: function() |  132   _doCheck: function() | 
|  121   { |  133   { | 
|  122     let now = Date.now(); |  134     let now = Date.now(); | 
|  123     for (let downloadable of this.dataSource()) |  135     for (let downloadable of this.dataSource()) | 
|  124     { |  136     { | 
|  125       if (downloadable.lastCheck && now - downloadable.lastCheck > this.maxAbsen
     ceInterval) |  137       if (downloadable.lastCheck && now - downloadable.lastCheck > this.maxAbsen
     ceInterval) | 
|  126       { |  138       { | 
|  127         // No checks for a long time interval - user must have been offline, e.g
     . |  139         // No checks for a long time interval - user must have been offline, e.g
     . | 
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  243         } |  255         } | 
|  244  |  256  | 
|  245         this.onDownloadError(downloadable, downloadUrl, error, channelStatus, re
     sponseStatus, redirectCallback); |  257         this.onDownloadError(downloadable, downloadUrl, error, channelStatus, re
     sponseStatus, redirectCallback); | 
|  246       } |  258       } | 
|  247     }.bind(this); |  259     }.bind(this); | 
|  248  |  260  | 
|  249     try |  261     try | 
|  250     { |  262     { | 
|  251       request = new XMLHttpRequest(); |  263       request = new XMLHttpRequest(); | 
|  252       request.mozBackgroundRequest = true; |  264       request.mozBackgroundRequest = true; | 
|  253       request.open("GET", downloadUrl); |  265       request.open(this.generateRequestData ? "POST" : "GET", downloadUrl); | 
|  254     } |  266     } | 
|  255     catch (e) |  267     catch (e) | 
|  256     { |  268     { | 
|  257       errorCallback("synchronize_invalid_url"); |  269       errorCallback("synchronize_invalid_url"); | 
|  258       return; |  270       return; | 
|  259     } |  271     } | 
|  260  |  272  | 
|  261     try { |  273     try { | 
|  262       request.overrideMimeType("text/plain"); |  274       request.overrideMimeType("text/plain"); | 
|  263       request.channel.loadFlags = request.channel.loadFlags | |  275       request.channel.loadFlags = request.channel.loadFlags | | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|  283     }.bind(this), false); |  295     }.bind(this), false); | 
|  284  |  296  | 
|  285     request.addEventListener("load", function(event) |  297     request.addEventListener("load", function(event) | 
|  286     { |  298     { | 
|  287       if (onShutdown.done) |  299       if (onShutdown.done) | 
|  288         return; |  300         return; | 
|  289  |  301  | 
|  290       delete this._downloading[downloadable.url]; |  302       delete this._downloading[downloadable.url]; | 
|  291  |  303  | 
|  292       // Status will be 0 for non-HTTP requests |  304       // Status will be 0 for non-HTTP requests | 
|  293       if (request.status && request.status != 200) |  305       if (request.status && this.validResponses.indexOf(request.status) == -1) | 
|  294       { |  306       { | 
|  295         errorCallback("synchronize_connection_error"); |  307         errorCallback("synchronize_connection_error"); | 
|  296         return; |  308         return; | 
|  297       } |  309       } | 
|  298  |  310  | 
|  299       downloadable.downloadCount++; |  311       downloadable.downloadCount++; | 
|  300  |  312  | 
|  301       this.onDownloadSuccess(downloadable, request.responseText, errorCallback, 
     function redirectCallback(url) |  313       this.onDownloadSuccess(downloadable, request.responseText, errorCallback, 
     function redirectCallback(url) | 
|  302       { |  314       { | 
|  303         if (redirects >= this.maxRedirects) |  315         if (redirects >= this.maxRedirects) | 
|  304           errorCallback("synchronize_connection_error"); |  316           errorCallback("synchronize_connection_error"); | 
|  305         else |  317         else | 
|  306         { |  318         { | 
|  307           downloadable.redirectURL = url; |  319           downloadable.redirectURL = url; | 
|  308           this._download(downloadable, redirects + 1); |  320           this._download(downloadable, redirects + 1); | 
|  309         } |  321         } | 
|  310       }.bind(this)); |  322       }.bind(this)); | 
|  311     }.bind(this), false); |  323     }.bind(this), false); | 
|  312  |  324  | 
|  313     request.send(null); |  325     if (this.generateRequestData) | 
 |  326     { | 
 |  327       Promise.resolve(this.generateRequestData(downloadable)) | 
 |  328         .then(data => { | 
 |  329           request.setRequestHeader("Content-Type", "application/json"); | 
 |  330           request.send(JSON.stringify(data)); | 
 |  331         });  | 
 |  332     } | 
 |  333     else | 
 |  334       request.send(null); | 
|  314  |  335  | 
|  315     this._downloading[downloadable.url] = true; |  336     this._downloading[downloadable.url] = true; | 
|  316     if (this.onDownloadStarted) |  337     if (this.onDownloadStarted) | 
|  317       this.onDownloadStarted(downloadable); |  338       this.onDownloadStarted(downloadable); | 
|  318   }, |  339   }, | 
|  319  |  340  | 
|  320   /** |  341   /** | 
|  321    * Produces a soft and a hard expiration interval for a given supplied |  342    * Produces a soft and a hard expiration interval for a given supplied | 
|  322    * expiration interval. |  343    * expiration interval. | 
|  323    * @return {Array} soft and hard expiration interval |  344    * @return {Array} soft and hard expiration interval | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  385    * @type Integer |  406    * @type Integer | 
|  386    */ |  407    */ | 
|  387   hardExpiration: 0, |  408   hardExpiration: 0, | 
|  388    |  409    | 
|  389   /** |  410   /** | 
|  390    * Number indicating how often the object was downloaded. |  411    * Number indicating how often the object was downloaded. | 
|  391    * @type Integer |  412    * @type Integer | 
|  392    */ |  413    */ | 
|  393   downloadCount: 0, |  414   downloadCount: 0, | 
|  394 }; |  415 }; | 
| OLD | NEW |