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

Side by Side Diff: lib/subscriptionClasses.js

Issue 11153017: Improve Synchronizer functionality (Closed)
Patch Set: Created July 17, 2013, 12:32 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2013 Eyeo GmbH 3 * Copyright (C) 2006-2013 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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 */ 177 */
178 Subscription.fromObject = function(obj) 178 Subscription.fromObject = function(obj)
179 { 179 {
180 let result; 180 let result;
181 try 181 try
182 { 182 {
183 obj.url = Services.io.newURI(obj.url, null, null).spec; 183 obj.url = Services.io.newURI(obj.url, null, null).spec;
184 184
185 // URL is valid - this is a downloadable subscription 185 // URL is valid - this is a downloadable subscription
186 result = new DownloadableSubscription(obj.url, obj.title); 186 result = new DownloadableSubscription(obj.url, obj.title);
187 if ("nextURL" in obj)
188 result.nextURL = obj.nextURL;
189 if ("downloadStatus" in obj) 187 if ("downloadStatus" in obj)
190 result._downloadStatus = obj.downloadStatus; 188 result._downloadStatus = obj.downloadStatus;
191 if ("lastModified" in obj)
192 result.lastModified = obj.lastModified;
193 if ("lastSuccess" in obj) 189 if ("lastSuccess" in obj)
194 result.lastSuccess = parseInt(obj.lastSuccess) || 0; 190 result.lastSuccess = parseInt(obj.lastSuccess) || 0;
195 if ("lastCheck" in obj) 191 if ("lastCheck" in obj)
196 result._lastCheck = parseInt(obj.lastCheck) || 0; 192 result._lastCheck = parseInt(obj.lastCheck) || 0;
197 if ("expires" in obj) 193 if ("expires" in obj)
198 result.expires = parseInt(obj.expires) || 0; 194 result.expires = parseInt(obj.expires) || 0;
199 if ("softExpiration" in obj) 195 if ("softExpiration" in obj)
200 result.softExpiration = parseInt(obj.softExpiration) || 0; 196 result.softExpiration = parseInt(obj.softExpiration) || 0;
201 if ("errors" in obj) 197 if ("errors" in obj)
202 result._errors = parseInt(obj.errors) || 0; 198 result._errors = parseInt(obj.errors) || 0;
199 if ("version" in obj)
200 result.version = parseInt(obj.version) || 0;
203 if ("requiredVersion" in obj) 201 if ("requiredVersion" in obj)
204 { 202 {
205 let {addonVersion} = require("info"); 203 let {addonVersion} = require("info");
206 result.requiredVersion = obj.requiredVersion; 204 result.requiredVersion = obj.requiredVersion;
207 if (Services.vc.compare(result.requiredVersion, addonVersion) > 0) 205 if (Services.vc.compare(result.requiredVersion, addonVersion) > 0)
208 result.upgradeRequired = true; 206 result.upgradeRequired = true;
209 } 207 }
210 if ("alternativeLocations" in obj)
211 result.alternativeLocations = obj.alternativeLocations;
212 if ("homepage" in obj) 208 if ("homepage" in obj)
213 result._homepage = obj.homepage; 209 result._homepage = obj.homepage;
214 if ("lastDownload" in obj) 210 if ("lastDownload" in obj)
215 result._lastDownload = parseInt(obj.lastDownload) || 0; 211 result._lastDownload = parseInt(obj.lastDownload) || 0;
216 } 212 }
217 catch (e) 213 catch (e)
218 { 214 {
219 // Invalid URL - custom filter group 215 // Invalid URL - custom filter group
220 if (!("title" in obj)) 216 if (!("title" in obj))
221 { 217 {
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 448
453 DownloadableSubscription.prototype = 449 DownloadableSubscription.prototype =
454 { 450 {
455 __proto__: RegularSubscription.prototype, 451 __proto__: RegularSubscription.prototype,
456 452
457 _downloadStatus: null, 453 _downloadStatus: null,
458 _lastCheck: 0, 454 _lastCheck: 0,
459 _errors: 0, 455 _errors: 0,
460 456
461 /** 457 /**
462 * Next URL the downloaded should be attempted from (in case of redirects)
463 * @type String
464 */
465 nextURL: null,
466
467 /**
468 * Status of the last download (ID of a string) 458 * Status of the last download (ID of a string)
469 * @type String 459 * @type String
470 */ 460 */
471 get downloadStatus() this._downloadStatus, 461 get downloadStatus() this._downloadStatus,
472 set downloadStatus(value) 462 set downloadStatus(value)
473 { 463 {
474 let oldValue = this._downloadStatus; 464 let oldValue = this._downloadStatus;
475 this._downloadStatus = value; 465 this._downloadStatus = value;
476 FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue); 466 FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue);
477 return this._downloadStatus; 467 return this._downloadStatus;
478 }, 468 },
479 469
480 /** 470 /**
481 * Value of the Last-Modified header returned by the server on last download
482 * @type String
483 */
484 lastModified: null,
485
486 /**
487 * Time of the last successful download (in seconds since the beginning of the 471 * Time of the last successful download (in seconds since the beginning of the
488 * epoch). 472 * epoch).
489 */ 473 */
490 lastSuccess: 0, 474 lastSuccess: 0,
491 475
492 /** 476 /**
493 * Time when the subscription was considered for an update last time (in secon ds 477 * Time when the subscription was considered for an update last time (in secon ds
494 * since the beginning of the epoch). This will be used to increase softExpira tion 478 * since the beginning of the epoch). This will be used to increase softExpira tion
495 * if the user doesn't use Adblock Plus for some time. 479 * if the user doesn't use Adblock Plus for some time.
496 * @type Number 480 * @type Number
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 if (value != this._errors) 513 if (value != this._errors)
530 { 514 {
531 let oldValue = this._errors; 515 let oldValue = this._errors;
532 this._errors = value; 516 this._errors = value;
533 FilterNotifier.triggerListeners("subscription.errors", this, value, oldVal ue); 517 FilterNotifier.triggerListeners("subscription.errors", this, value, oldVal ue);
534 } 518 }
535 return this._errors; 519 return this._errors;
536 }, 520 },
537 521
538 /** 522 /**
523 * Version of the subscription data retrieved on last successful download
524 * @type Number
525 */
526 version: 0,
527
528 /**
539 * Minimal Adblock Plus version required for this subscription 529 * Minimal Adblock Plus version required for this subscription
540 * @type String 530 * @type String
541 */ 531 */
542 requiredVersion: null, 532 requiredVersion: null,
543 533
544 /** 534 /**
545 * Should be true if requiredVersion is higher than current Adblock Plus versi on 535 * Should be true if requiredVersion is higher than current Adblock Plus versi on
546 * @type Boolean 536 * @type Boolean
547 */ 537 */
548 upgradeRequired: false, 538 upgradeRequired: false,
549 539
550 /** 540 /**
551 * Value of the X-Alternative-Locations header: comma-separated list of URLs
552 * with their weighting factors, e.g.: http://foo.example.com/;q=0.5,http://ba r.example.com/;q=2
553 * @type String
554 */
555 alternativeLocations: null,
556
557 /**
558 * See Subscription.serialize() 541 * See Subscription.serialize()
559 */ 542 */
560 serialize: function(buffer) 543 serialize: function(buffer)
561 { 544 {
562 RegularSubscription.prototype.serialize.call(this, buffer); 545 RegularSubscription.prototype.serialize.call(this, buffer);
563 if (this.nextURL)
564 buffer.push("nextURL=" + this.nextURL);
565 if (this.downloadStatus) 546 if (this.downloadStatus)
566 buffer.push("downloadStatus=" + this.downloadStatus); 547 buffer.push("downloadStatus=" + this.downloadStatus);
567 if (this.lastModified)
568 buffer.push("lastModified=" + this.lastModified);
569 if (this.lastSuccess) 548 if (this.lastSuccess)
570 buffer.push("lastSuccess=" + this.lastSuccess); 549 buffer.push("lastSuccess=" + this.lastSuccess);
571 if (this.lastCheck) 550 if (this.lastCheck)
572 buffer.push("lastCheck=" + this.lastCheck); 551 buffer.push("lastCheck=" + this.lastCheck);
573 if (this.expires) 552 if (this.expires)
574 buffer.push("expires=" + this.expires); 553 buffer.push("expires=" + this.expires);
575 if (this.softExpiration) 554 if (this.softExpiration)
576 buffer.push("softExpiration=" + this.softExpiration); 555 buffer.push("softExpiration=" + this.softExpiration);
577 if (this.errors) 556 if (this.errors)
578 buffer.push("errors=" + this.errors); 557 buffer.push("errors=" + this.errors);
558 if (this.version)
559 buffer.push("version=" + this.version);
579 if (this.requiredVersion) 560 if (this.requiredVersion)
580 buffer.push("requiredVersion=" + this.requiredVersion); 561 buffer.push("requiredVersion=" + this.requiredVersion);
581 if (this.alternativeLocations)
582 buffer.push("alternativeLocations=" + this.alternativeLocations);
583 } 562 }
584 }; 563 };
OLDNEW
« lib/downloader.js ('K') | « lib/downloader.js ('k') | lib/synchronizer.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld