Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/downloader.js

Issue 11153017: Improve Synchronizer functionality (Closed)
Patch Set: Fixed nits Created Nov. 5, 2013, 6:39 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/downloader.js
===================================================================
--- a/lib/downloader.js
+++ b/lib/downloader.js
@@ -63,17 +63,17 @@ Downloader.prototype =
*/
dataSource: null,
/**
* Maximal time interval that the checks can be left out until the soft
* expiration interval increases.
* @type Integer
*/
- maxAbsenseInterval: 1 * MILLIS_IN_DAY,
+ maxAbsenceInterval: 1 * MILLIS_IN_DAY,
/**
* Minimal time interval before retrying a download after an error.
* @type Integer
*/
minRetryInterval: 1 * MILLIS_IN_DAY,
/**
@@ -117,17 +117,17 @@ Downloader.prototype =
/**
* Checks whether anything needs downloading.
*/
_doCheck: function()
{
let now = Date.now();
for each (let downloadable in this.dataSource())
{
- if (downloadable.lastCheck && now - downloadable.lastCheck > this.maxAbsenseInterval)
+ if (downloadable.lastCheck && now - downloadable.lastCheck > this.maxAbsenceInterval)
{
// No checks for a long time interval - user must have been offline, e.g.
// during a weekend. Increase soft expiration to prevent load peaks on the
// server.
downloadable.softExpiration += now - downloadable.lastCheck;
}
downloadable.lastCheck = now;
@@ -166,20 +166,19 @@ Downloader.prototype =
* Checks whether an address is currently being downloaded.
*/
isDownloading: function(/**String*/ url) /**Boolean*/
{
return url in this._downloading;
},
/**
- * Starts a download.
- * @param {Downloadable} url the object to be downloaded
+ * Starts downloading for an object.
*/
- download: function(downloadable)
+ download: function(/**Downloadable*/ downloadable)
{
// Make sure to detach download from the current execution context
Utils.runAsync(this._download.bind(this, downloadable, 0));
},
/**
* Generates the real download URL for an object by appending various
* parameters.
@@ -199,59 +198,59 @@ Downloader.prototype =
"&platform=" + encodeURIComponent(platform) +
"&platformVersion=" + encodeURIComponent(platformVersion) +
"&lastVersion=" + encodeURIComponent(downloadable.lastVersion);
return url;
},
_download: function(downloadable, redirects)
{
- if (downloadable.url in this._downloading)
+ if (this.isDownloading(downloadable.url))
return;
- let downloadURL = this.getDownloadUrl(downloadable);
+ let downloadUrl = this.getDownloadUrl(downloadable);
let request = null;
let errorCallback = function errorCallback(error)
{
let channelStatus = -1;
try
{
channelStatus = request.channel.status;
} catch (e) {}
let responseStatus = request.status;
Cu.reportError("Adblock Plus: Downloading URL " + downloadable.url + " failed (" + error + ")\n" +
- "Download address: " + downloadURL + "\n" +
+ "Download address: " + downloadUrl + "\n" +
"Channel status: " + channelStatus + "\n" +
"Server response: " + responseStatus);
if (this.onDownloadError)
{
// Allow one extra redirect if the error handler gives us a redirect URL
let redirectCallback = null;
if (redirects <= this.maxRedirects)
{
redirectCallback = function redirectCallback(url)
{
downloadable.redirectURL = url;
this._download(downloadable, redirects + 1);
}.bind(this);
}
- this.onDownloadError(downloadable, downloadURL, error, channelStatus, responseStatus, redirectCallback);
+ this.onDownloadError(downloadable, downloadUrl, error, channelStatus, responseStatus, redirectCallback);
}
}.bind(this);
try
{
request = new XMLHttpRequest();
request.mozBackgroundRequest = true;
- request.open("GET", downloadURL);
+ request.open("GET", downloadUrl);
}
catch (e)
{
errorCallback("synchronize_invalid_url");
return;
}
try {
@@ -299,20 +298,21 @@ Downloader.prototype =
else
{
downloadable.redirectURL = url;
this._download(downloadable, redirects + 1);
}
}.bind(this));
}.bind(this), false);
+ request.send(null);
+
this._downloading[downloadable.url] = true;
if (this.onDownloadStarted)
this.onDownloadStarted(downloadable);
- request.send(null);
},
/**
* Produces a soft and a hard expiration interval for a given supplied
* expiration interval.
* @return {Array} soft and hard expiration interval
*/
processExpirationInterval: function(/**Integer*/ interval)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld