diff options
Diffstat (limited to 'data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js')
-rw-r--r-- | data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js | 300 |
1 files changed, 150 insertions, 150 deletions
diff --git a/data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js b/data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js index f9134bc..4fb35e6 100644 --- a/data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js +++ b/data/extensions/https-everywhere-eff@eff.org/chrome/content/code/Cookie.js @@ -1,150 +1,150 @@ -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function Cookie(s, host) {
- this.parse(s, host);
-}
-Cookie.computeId = function(c) {
- return c.name + ";" + c.host + "/" + c.path;
-};
-Cookie.find = function(f) {
- var cc = Cookie.prototype.cookieManager.enumerator;
- var c;
- while (cc.hasMoreElements()) {
- if (f(c = cc.getNext())) return c;
- }
- return null;
-};
-
-Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' };
-Cookie.prototype = {
-
- name: '',
- value: '',
- source: '',
- domain: '',
- host: '',
- rawHost: '',
- path: '',
- secure: false,
- httponly: false,
- session: true,
- expires: 0,
-
- id: '',
-
-
- toString: function() {
- var c = [this['name'] + "=" + this.value];
- var v;
- const aa = Cookie.attributes;
- for (var k in aa) {
- var p = aa[k];
- v = this[k];
- switch(typeof(v)) {
- case "string":
- if (v) c.push(p + "=" + v);
- break;
- case "boolean":
- if (v) c.push(p);
- break;
- case "number":
- if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString());
- break;
- }
- }
- return c.join("; ");
- },
- parse: function(s, host) {
- var p;
- if (this.source) {
- // cleanup for recycle
- for (p in this) {
- if (typeof (p) != "function") delete this[p];
- }
- }
- this.source = s;
- this.host = host;
-
- var parts = s.split(/;\s*/);
- var nv = parts.shift().split("=");
-
- this.name = nv.shift() || '';
- this.value = nv.join('=') || '';
-
- var n, v;
- for each (p in parts) {
- nv = p.split("=");
- switch (n = nv[0].toLowerCase()) {
- case 'expires':
- v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000);
- break;
- case 'domain':
- case 'path':
- v = nv[1] || '';
- break;
- case 'secure':
- case 'httponly':
- v = true;
- break;
- default:
- n = 'unknown';
- }
- this[n] = v;
- }
- if (!this.expires) {
- this.session = true;
- this.expires = Math.round(new Date() / 1000) + 31536000;
- }
- if (this.domain) {
- if (!this.isDomain) this.domain = "." + this.domain;
- this.host = this.domain;
- }
- this.rawHost = this.host.replace(/^\./, '');
-
- this.id = Cookie.computeId(this);
- },
-
-
- get cookieManager() {
- delete Cookie.prototype.cookieManager;
- var cman = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager);
- return Cookie.prototype.cookieManager = cman;
- },
- belongsTo: function(host, path) {
- if (path && this.path && path.indexOf(this.path) != 0) return false;
- if (host == this.rawHost) return true;
- var d = this.domain;
- return d && (host == d || this.isDomain && host.slice(-d.length) == d);
- },
- save: function() {
- this.save = ("cookieExists" in this.cookieManager)
- ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); }
- : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);}
- ;
- return this.save();
- },
- exists: function() {
- var cc = this.cookieManager.enumerator;
- while(cc.hasMoreElements()) {
- if (this.sameAs(cc.getNext())) return true;
- }
- return false;
- },
-
- sameAs: function(c) {
- (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2);
- return Cookie.computeId(c) == this.id;
- },
-
- // nsICookie2 interface extras
- get isSecure() { return this.secure; },
- get expiry() { return this.expires; },
- get isSession() { return this.session; },
- get isHttpOnly() { return this.httponly; },
- get isDomain() { return this.domain && this.domain[0] == '.'; },
- policy: 0,
- status: 0,
- QueryInterface: XPCOMUtils.generateQI([Ci.nsICookie, Ci.nsICookie2])
-
-};
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +function Cookie(s, host) { + this.parse(s, host); +} +Cookie.computeId = function(c) { + return c.name + ";" + c.host + "/" + c.path; +}; +Cookie.find = function(f) { + var cc = Cookie.prototype.cookieManager.enumerator; + var c; + while (cc.hasMoreElements()) { + if (f(c = cc.getNext())) return c; + } + return null; +}; + +Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' }; +Cookie.prototype = { + + name: '', + value: '', + source: '', + domain: '', + host: '', + rawHost: '', + path: '', + secure: false, + httponly: false, + session: true, + expires: 0, + + id: '', + + + toString: function() { + var c = [this['name'] + "=" + this.value]; + var v; + const aa = Cookie.attributes; + for (var k in aa) { + var p = aa[k]; + v = this[k]; + switch(typeof(v)) { + case "string": + if (v) c.push(p + "=" + v); + break; + case "boolean": + if (v) c.push(p); + break; + case "number": + if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString()); + break; + } + } + return c.join("; "); + }, + parse: function(s, host) { + var p; + if (this.source) { + // cleanup for recycle + for (p in this) { + if (typeof (p) != "function") delete this[p]; + } + } + this.source = s; + this.host = host; + + var parts = s.split(/;\s*/); + var nv = parts.shift().split("="); + + this.name = nv.shift() || ''; + this.value = nv.join('=') || ''; + + var n, v; + for each (p in parts) { + nv = p.split("="); + switch (n = nv[0].toLowerCase()) { + case 'expires': + v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000); + break; + case 'domain': + case 'path': + v = nv[1] || ''; + break; + case 'secure': + case 'httponly': + v = true; + break; + default: + n = 'unknown'; + } + this[n] = v; + } + if (!this.expires) { + this.session = true; + this.expires = Math.round(new Date() / 1000) + 31536000; + } + if (this.domain) { + if (!this.isDomain) this.domain = "." + this.domain; + this.host = this.domain; + } + this.rawHost = this.host.replace(/^\./, ''); + + this.id = Cookie.computeId(this); + }, + + + get cookieManager() { + delete Cookie.prototype.cookieManager; + var cman = Cc["@mozilla.org/cookiemanager;1"] + .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager); + return Cookie.prototype.cookieManager = cman; + }, + belongsTo: function(host, path) { + if (path && this.path && path.indexOf(this.path) != 0) return false; + if (host == this.rawHost) return true; + var d = this.domain; + return d && (host == d || this.isDomain && host.slice(-d.length) == d); + }, + save: function() { + this.save = ("cookieExists" in this.cookieManager) + ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); } + : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);} + ; + return this.save(); + }, + exists: function() { + var cc = this.cookieManager.enumerator; + while(cc.hasMoreElements()) { + if (this.sameAs(cc.getNext())) return true; + } + return false; + }, + + sameAs: function(c) { + (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2); + return Cookie.computeId(c) == this.id; + }, + + // nsICookie2 interface extras + get isSecure() { return this.secure; }, + get expiry() { return this.expires; }, + get isSession() { return this.session; }, + get isHttpOnly() { return this.httponly; }, + get isDomain() { return this.domain && this.domain[0] == '.'; }, + policy: 0, + status: 0, + QueryInterface: XPCOMUtils.generateQI([Ci.nsICookie, Ci.nsICookie2]) + +}; |