Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(778)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js b/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
index 092245af4c9c3094343cba4cc58f51d96ca8a9f4..0d98001b1ba612ccbc37c3523e574cdf126bd352 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/CookieParser.js
@@ -27,7 +27,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
// Ideally, we would rely on platform support for parsing a cookie, since
// this would save us from any potential inconsistency. However, exposing
// platform cookie parsing logic would require quite a bit of additional
@@ -36,350 +35,331 @@
// only required on the server side.
/**
- * @constructor
- * @param {!WebInspector.Target} target
+ * @unrestricted
*/
-WebInspector.CookieParser = function(target)
-{
+WebInspector.CookieParser = class {
+ /**
+ * @param {!WebInspector.Target} target
+ */
+ constructor(target) {
this._target = target;
+ }
+
+ /**
+ * @param {!WebInspector.Target} target
+ * @param {string|undefined} header
+ * @return {?Array.<!WebInspector.Cookie>}
+ */
+ static parseCookie(target, header) {
+ return (new WebInspector.CookieParser(target)).parseCookie(header);
+ }
+
+ /**
+ * @param {!WebInspector.Target} target
+ * @param {string|undefined} header
+ * @return {?Array.<!WebInspector.Cookie>}
+ */
+ static parseSetCookie(target, header) {
+ return (new WebInspector.CookieParser(target)).parseSetCookie(header);
+ }
+
+ /**
+ * @return {!Array.<!WebInspector.Cookie>}
+ */
+ cookies() {
+ return this._cookies;
+ }
+
+ /**
+ * @param {string|undefined} cookieHeader
+ * @return {?Array.<!WebInspector.Cookie>}
+ */
+ parseCookie(cookieHeader) {
+ if (!this._initialize(cookieHeader))
+ return null;
+
+ for (var kv = this._extractKeyValue(); kv; kv = this._extractKeyValue()) {
+ if (kv.key.charAt(0) === '$' && this._lastCookie)
+ this._lastCookie.addAttribute(kv.key.slice(1), kv.value);
+ else if (kv.key.toLowerCase() !== '$version' && typeof kv.value === 'string')
+ this._addCookie(kv, WebInspector.Cookie.Type.Request);
+ this._advanceAndCheckCookieDelimiter();
+ }
+ this._flushCookie();
+ return this._cookies;
+ }
+
+ /**
+ * @param {string|undefined} setCookieHeader
+ * @return {?Array.<!WebInspector.Cookie>}
+ */
+ parseSetCookie(setCookieHeader) {
+ if (!this._initialize(setCookieHeader))
+ return null;
+ for (var kv = this._extractKeyValue(); kv; kv = this._extractKeyValue()) {
+ if (this._lastCookie)
+ this._lastCookie.addAttribute(kv.key, kv.value);
+ else
+ this._addCookie(kv, WebInspector.Cookie.Type.Response);
+ if (this._advanceAndCheckCookieDelimiter())
+ this._flushCookie();
+ }
+ this._flushCookie();
+ return this._cookies;
+ }
+
+ /**
+ * @param {string|undefined} headerValue
+ * @return {boolean}
+ */
+ _initialize(headerValue) {
+ this._input = headerValue;
+ if (typeof headerValue !== 'string')
+ return false;
+ this._cookies = [];
+ this._lastCookie = null;
+ this._originalInputLength = this._input.length;
+ return true;
+ }
+
+ _flushCookie() {
+ if (this._lastCookie)
+ this._lastCookie.setSize(this._originalInputLength - this._input.length - this._lastCookiePosition);
+ this._lastCookie = null;
+ }
+
+ /**
+ * @return {?WebInspector.CookieParser.KeyValue}
+ */
+ _extractKeyValue() {
+ if (!this._input || !this._input.length)
+ return null;
+ // Note: RFCs offer an option for quoted values that may contain commas and semicolons.
+ // Many browsers/platforms do not support this, however (see http://webkit.org/b/16699
+ // and http://crbug.com/12361). The logic below matches latest versions of IE, Firefox,
+ // Chrome and Safari on some old platforms. The latest version of Safari supports quoted
+ // cookie values, though.
+ var keyValueMatch = /^[ \t]*([^\s=;]+)[ \t]*(?:=[ \t]*([^;\n]*))?/.exec(this._input);
+ if (!keyValueMatch) {
+ console.log('Failed parsing cookie header before: ' + this._input);
+ return null;
+ }
+
+ var result = new WebInspector.CookieParser.KeyValue(
+ keyValueMatch[1], keyValueMatch[2] && keyValueMatch[2].trim(), this._originalInputLength - this._input.length);
+ this._input = this._input.slice(keyValueMatch[0].length);
+ return result;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ _advanceAndCheckCookieDelimiter() {
+ var match = /^\s*[\n;]\s*/.exec(this._input);
+ if (!match)
+ return false;
+ this._input = this._input.slice(match[0].length);
+ return match[0].match('\n') !== null;
+ }
+
+ /**
+ * @param {!WebInspector.CookieParser.KeyValue} keyValue
+ * @param {!WebInspector.Cookie.Type} type
+ */
+ _addCookie(keyValue, type) {
+ if (this._lastCookie)
+ this._lastCookie.setSize(keyValue.position - this._lastCookiePosition);
+ // Mozilla bug 169091: Mozilla, IE and Chrome treat single token (w/o "=") as
+ // specifying a value for a cookie with empty name.
+ this._lastCookie = typeof keyValue.value === 'string' ?
+ new WebInspector.Cookie(this._target, keyValue.key, keyValue.value, type) :
+ new WebInspector.Cookie(this._target, '', keyValue.key, type);
+ this._lastCookiePosition = keyValue.position;
+ this._cookies.push(this._lastCookie);
+ }
};
/**
- * @constructor
- * @param {string} key
- * @param {string|undefined} value
- * @param {number} position
+ * @unrestricted
*/
-WebInspector.CookieParser.KeyValue = function(key, value, position)
-{
+WebInspector.CookieParser.KeyValue = class {
+ /**
+ * @param {string} key
+ * @param {string|undefined} value
+ * @param {number} position
+ */
+ constructor(key, value, position) {
this.key = key;
this.value = value;
this.position = position;
+ }
};
-WebInspector.CookieParser.prototype = {
- /**
- * @return {!Array.<!WebInspector.Cookie>}
- */
- cookies: function()
- {
- return this._cookies;
- },
-
- /**
- * @param {string|undefined} cookieHeader
- * @return {?Array.<!WebInspector.Cookie>}
- */
- parseCookie: function(cookieHeader)
- {
- if (!this._initialize(cookieHeader))
- return null;
-
- for (var kv = this._extractKeyValue(); kv; kv = this._extractKeyValue()) {
- if (kv.key.charAt(0) === "$" && this._lastCookie)
- this._lastCookie.addAttribute(kv.key.slice(1), kv.value);
- else if (kv.key.toLowerCase() !== "$version" && typeof kv.value === "string")
- this._addCookie(kv, WebInspector.Cookie.Type.Request);
- this._advanceAndCheckCookieDelimiter();
- }
- this._flushCookie();
- return this._cookies;
- },
-
- /**
- * @param {string|undefined} setCookieHeader
- * @return {?Array.<!WebInspector.Cookie>}
- */
- parseSetCookie: function(setCookieHeader)
- {
- if (!this._initialize(setCookieHeader))
- return null;
- for (var kv = this._extractKeyValue(); kv; kv = this._extractKeyValue()) {
- if (this._lastCookie)
- this._lastCookie.addAttribute(kv.key, kv.value);
- else
- this._addCookie(kv, WebInspector.Cookie.Type.Response);
- if (this._advanceAndCheckCookieDelimiter())
- this._flushCookie();
- }
- this._flushCookie();
- return this._cookies;
- },
-
- /**
- * @param {string|undefined} headerValue
- * @return {boolean}
- */
- _initialize: function(headerValue)
- {
- this._input = headerValue;
- if (typeof headerValue !== "string")
- return false;
- this._cookies = [];
- this._lastCookie = null;
- this._originalInputLength = this._input.length;
- return true;
- },
-
- _flushCookie: function()
- {
- if (this._lastCookie)
- this._lastCookie.setSize(this._originalInputLength - this._input.length - this._lastCookiePosition);
- this._lastCookie = null;
- },
-
- /**
- * @return {?WebInspector.CookieParser.KeyValue}
- */
- _extractKeyValue: function()
- {
- if (!this._input || !this._input.length)
- return null;
- // Note: RFCs offer an option for quoted values that may contain commas and semicolons.
- // Many browsers/platforms do not support this, however (see http://webkit.org/b/16699
- // and http://crbug.com/12361). The logic below matches latest versions of IE, Firefox,
- // Chrome and Safari on some old platforms. The latest version of Safari supports quoted
- // cookie values, though.
- var keyValueMatch = /^[ \t]*([^\s=;]+)[ \t]*(?:=[ \t]*([^;\n]*))?/.exec(this._input);
- if (!keyValueMatch) {
- console.log("Failed parsing cookie header before: " + this._input);
- return null;
- }
-
- var result = new WebInspector.CookieParser.KeyValue(keyValueMatch[1], keyValueMatch[2] && keyValueMatch[2].trim(), this._originalInputLength - this._input.length);
- this._input = this._input.slice(keyValueMatch[0].length);
- return result;
- },
-
- /**
- * @return {boolean}
- */
- _advanceAndCheckCookieDelimiter: function()
- {
- var match = /^\s*[\n;]\s*/.exec(this._input);
- if (!match)
- return false;
- this._input = this._input.slice(match[0].length);
- return match[0].match("\n") !== null;
- },
-
- /**
- * @param {!WebInspector.CookieParser.KeyValue} keyValue
- * @param {!WebInspector.Cookie.Type} type
- */
- _addCookie: function(keyValue, type)
- {
- if (this._lastCookie)
- this._lastCookie.setSize(keyValue.position - this._lastCookiePosition);
- // Mozilla bug 169091: Mozilla, IE and Chrome treat single token (w/o "=") as
- // specifying a value for a cookie with empty name.
- this._lastCookie = typeof keyValue.value === "string" ? new WebInspector.Cookie(this._target, keyValue.key, keyValue.value, type) :
- new WebInspector.Cookie(this._target, "", keyValue.key, type);
- this._lastCookiePosition = keyValue.position;
- this._cookies.push(this._lastCookie);
- }
-};
-
-/**
- * @param {!WebInspector.Target} target
- * @param {string|undefined} header
- * @return {?Array.<!WebInspector.Cookie>}
- */
-WebInspector.CookieParser.parseCookie = function(target, header)
-{
- return (new WebInspector.CookieParser(target)).parseCookie(header);
-};
-
-/**
- * @param {!WebInspector.Target} target
- * @param {string|undefined} header
- * @return {?Array.<!WebInspector.Cookie>}
- */
-WebInspector.CookieParser.parseSetCookie = function(target, header)
-{
- return (new WebInspector.CookieParser(target)).parseSetCookie(header);
-};
/**
- * @constructor
- * @param {!WebInspector.Target} target
- * @param {string} name
- * @param {string} value
- * @param {?WebInspector.Cookie.Type} type
+ * @unrestricted
*/
-WebInspector.Cookie = function(target, name, value, type)
-{
+WebInspector.Cookie = class {
+ /**
+ * @param {!WebInspector.Target} target
+ * @param {string} name
+ * @param {string} value
+ * @param {?WebInspector.Cookie.Type} type
+ */
+ constructor(target, name, value, type) {
this._target = target;
this._name = name;
this._value = value;
this._type = type;
this._attributes = {};
-};
-
-WebInspector.Cookie.prototype = {
- /**
- * @return {string}
- */
- name: function()
- {
- return this._name;
- },
-
- /**
- * @return {string}
- */
- value: function()
- {
- return this._value;
- },
-
- /**
- * @return {?WebInspector.Cookie.Type}
- */
- type: function()
- {
- return this._type;
- },
-
- /**
- * @return {boolean}
- */
- httpOnly: function()
- {
- return "httponly" in this._attributes;
- },
-
- /**
- * @return {boolean}
- */
- secure: function()
- {
- return "secure" in this._attributes;
- },
-
- /**
- * @return {string}
- */
- sameSite: function()
- {
- return this._attributes["samesite"];
- },
-
- /**
- * @return {boolean}
- */
- session: function()
- {
- // RFC 2965 suggests using Discard attribute to mark session cookies, but this does not seem to be widely used.
- // Check for absence of explicitly max-age or expiry date instead.
- return !("expires" in this._attributes || "max-age" in this._attributes);
- },
-
- /**
- * @return {string}
- */
- path: function()
- {
- return this._attributes["path"];
- },
-
- /**
- * @return {string}
- */
- port: function()
- {
- return this._attributes["port"];
- },
-
- /**
- * @return {string}
- */
- domain: function()
- {
- return this._attributes["domain"];
- },
-
- /**
- * @return {string}
- */
- expires: function()
- {
- return this._attributes["expires"];
- },
-
- /**
- * @return {string}
- */
- maxAge: function()
- {
- return this._attributes["max-age"];
- },
-
- /**
- * @return {number}
- */
- size: function()
- {
- return this._size;
- },
-
- /**
- * @param {number} size
- */
- setSize: function(size)
- {
- this._size = size;
- },
-
- /**
- * @return {?Date}
- */
- expiresDate: function(requestDate)
- {
- // RFC 6265 indicates that the max-age attribute takes precedence over the expires attribute
- if (this.maxAge()) {
- var targetDate = requestDate === null ? new Date() : requestDate;
- return new Date(targetDate.getTime() + 1000 * this.maxAge());
- }
-
- if (this.expires())
- return new Date(this.expires());
-
- return null;
- },
-
- /**
- * @return {!Object}
- */
- attributes: function()
- {
- return this._attributes;
- },
-
- /**
- * @param {string} key
- * @param {string=} value
- */
- addAttribute: function(key, value)
- {
- this._attributes[key.toLowerCase()] = value;
- },
-
- /**
- * @param {function(?Protocol.Error)=} callback
- */
- remove: function(callback)
- {
- this._target.networkAgent().deleteCookie(this.name(), (this.secure() ? "https://" : "http://") + this.domain() + this.path(), callback);
+ }
+
+ /**
+ * @return {string}
+ */
+ name() {
+ return this._name;
+ }
+
+ /**
+ * @return {string}
+ */
+ value() {
+ return this._value;
+ }
+
+ /**
+ * @return {?WebInspector.Cookie.Type}
+ */
+ type() {
+ return this._type;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ httpOnly() {
+ return 'httponly' in this._attributes;
+ }
+
+ /**
+ * @return {boolean}
+ */
+ secure() {
+ return 'secure' in this._attributes;
+ }
+
+ /**
+ * @return {string}
+ */
+ sameSite() {
+ return this._attributes['samesite'];
+ }
+
+ /**
+ * @return {boolean}
+ */
+ session() {
+ // RFC 2965 suggests using Discard attribute to mark session cookies, but this does not seem to be widely used.
+ // Check for absence of explicitly max-age or expiry date instead.
+ return !('expires' in this._attributes || 'max-age' in this._attributes);
+ }
+
+ /**
+ * @return {string}
+ */
+ path() {
+ return this._attributes['path'];
+ }
+
+ /**
+ * @return {string}
+ */
+ port() {
+ return this._attributes['port'];
+ }
+
+ /**
+ * @return {string}
+ */
+ domain() {
+ return this._attributes['domain'];
+ }
+
+ /**
+ * @return {string}
+ */
+ expires() {
+ return this._attributes['expires'];
+ }
+
+ /**
+ * @return {string}
+ */
+ maxAge() {
+ return this._attributes['max-age'];
+ }
+
+ /**
+ * @return {number}
+ */
+ size() {
+ return this._size;
+ }
+
+ /**
+ * @param {number} size
+ */
+ setSize(size) {
+ this._size = size;
+ }
+
+ /**
+ * @return {?Date}
+ */
+ expiresDate(requestDate) {
+ // RFC 6265 indicates that the max-age attribute takes precedence over the expires attribute
+ if (this.maxAge()) {
+ var targetDate = requestDate === null ? new Date() : requestDate;
+ return new Date(targetDate.getTime() + 1000 * this.maxAge());
}
+
+ if (this.expires())
+ return new Date(this.expires());
+
+ return null;
+ }
+
+ /**
+ * @return {!Object}
+ */
+ attributes() {
+ return this._attributes;
+ }
+
+ /**
+ * @param {string} key
+ * @param {string=} value
+ */
+ addAttribute(key, value) {
+ this._attributes[key.toLowerCase()] = value;
+ }
+
+ /**
+ * @param {function(?Protocol.Error)=} callback
+ */
+ remove(callback) {
+ this._target.networkAgent().deleteCookie(
+ this.name(), (this.secure() ? 'https://' : 'http://') + this.domain() + this.path(), callback);
+ }
};
/**
* @enum {number}
*/
WebInspector.Cookie.Type = {
- Request: 0,
- Response: 1
+ Request: 0,
+ Response: 1
};
WebInspector.Cookies = {};
@@ -387,28 +367,26 @@ WebInspector.Cookies = {};
/**
* @param {function(!Array.<!WebInspector.Cookie>)} callback
*/
-WebInspector.Cookies.getCookiesAsync = function(callback)
-{
- var allCookies = [];
- /**
- * @param {!WebInspector.Target} target
- * @param {?Protocol.Error} error
- * @param {!Array.<!NetworkAgent.Cookie>} cookies
- */
- function mycallback(target, error, cookies)
- {
- if (error) {
- console.error(error);
- return;
- }
- for (var i = 0; i < cookies.length; ++i)
- allCookies.push(WebInspector.Cookies._parseProtocolCookie(target, cookies[i]));
+WebInspector.Cookies.getCookiesAsync = function(callback) {
+ var allCookies = [];
+ /**
+ * @param {!WebInspector.Target} target
+ * @param {?Protocol.Error} error
+ * @param {!Array.<!NetworkAgent.Cookie>} cookies
+ */
+ function mycallback(target, error, cookies) {
+ if (error) {
+ console.error(error);
+ return;
}
-
- var barrier = new CallbackBarrier();
- for (var target of WebInspector.targetManager.targets(WebInspector.Target.Capability.Network))
- target.networkAgent().getCookies(barrier.createCallback(mycallback.bind(null, target)));
- barrier.callWhenDone(callback.bind(null, allCookies));
+ for (var i = 0; i < cookies.length; ++i)
+ allCookies.push(WebInspector.Cookies._parseProtocolCookie(target, cookies[i]));
+ }
+
+ var barrier = new CallbackBarrier();
+ for (var target of WebInspector.targetManager.targets(WebInspector.Target.Capability.Network))
+ target.networkAgent().getCookies(barrier.createCallback(mycallback.bind(null, target)));
+ barrier.callWhenDone(callback.bind(null, allCookies));
};
/**
@@ -416,22 +394,21 @@ WebInspector.Cookies.getCookiesAsync = function(callback)
* @param {!NetworkAgent.Cookie} protocolCookie
* @return {!WebInspector.Cookie}
*/
-WebInspector.Cookies._parseProtocolCookie = function(target, protocolCookie)
-{
- var cookie = new WebInspector.Cookie(target, protocolCookie.name, protocolCookie.value, null);
- cookie.addAttribute("domain", protocolCookie["domain"]);
- cookie.addAttribute("path", protocolCookie["path"]);
- cookie.addAttribute("port", protocolCookie["port"]);
- if (protocolCookie["expires"])
- cookie.addAttribute("expires", protocolCookie["expires"]);
- if (protocolCookie["httpOnly"])
- cookie.addAttribute("httpOnly");
- if (protocolCookie["secure"])
- cookie.addAttribute("secure");
- if (protocolCookie["sameSite"])
- cookie.addAttribute("sameSite", protocolCookie["sameSite"]);
- cookie.setSize(protocolCookie["size"]);
- return cookie;
+WebInspector.Cookies._parseProtocolCookie = function(target, protocolCookie) {
+ var cookie = new WebInspector.Cookie(target, protocolCookie.name, protocolCookie.value, null);
+ cookie.addAttribute('domain', protocolCookie['domain']);
+ cookie.addAttribute('path', protocolCookie['path']);
+ cookie.addAttribute('port', protocolCookie['port']);
+ if (protocolCookie['expires'])
+ cookie.addAttribute('expires', protocolCookie['expires']);
+ if (protocolCookie['httpOnly'])
+ cookie.addAttribute('httpOnly');
+ if (protocolCookie['secure'])
+ cookie.addAttribute('secure');
+ if (protocolCookie['sameSite'])
+ cookie.addAttribute('sameSite', protocolCookie['sameSite']);
+ cookie.setSize(protocolCookie['size']);
+ return cookie;
};
/**
@@ -439,14 +416,13 @@ WebInspector.Cookies._parseProtocolCookie = function(target, protocolCookie)
* @param {string} resourceURL
* @return {boolean}
*/
-WebInspector.Cookies.cookieMatchesResourceURL = function(cookie, resourceURL)
-{
- var url = resourceURL.asParsedURL();
- if (!url || !WebInspector.Cookies.cookieDomainMatchesResourceDomain(cookie.domain(), url.host))
- return false;
- return (url.path.startsWith(cookie.path())
- && (!cookie.port() || url.port === cookie.port())
- && (!cookie.secure() || url.scheme === "https"));
+WebInspector.Cookies.cookieMatchesResourceURL = function(cookie, resourceURL) {
+ var url = resourceURL.asParsedURL();
+ if (!url || !WebInspector.Cookies.cookieDomainMatchesResourceDomain(cookie.domain(), url.host))
+ return false;
+ return (
+ url.path.startsWith(cookie.path()) && (!cookie.port() || url.port === cookie.port()) &&
+ (!cookie.secure() || url.scheme === 'https'));
};
/**
@@ -454,9 +430,8 @@ WebInspector.Cookies.cookieMatchesResourceURL = function(cookie, resourceURL)
* @param {string} resourceDomain
* @return {boolean}
*/
-WebInspector.Cookies.cookieDomainMatchesResourceDomain = function(cookieDomain, resourceDomain)
-{
- if (cookieDomain.charAt(0) !== ".")
- return resourceDomain === cookieDomain;
- return !!resourceDomain.match(new RegExp("^([^\\.]+\\.)*" + cookieDomain.substring(1).escapeForRegExp() + "$", "i"));
+WebInspector.Cookies.cookieDomainMatchesResourceDomain = function(cookieDomain, resourceDomain) {
+ if (cookieDomain.charAt(0) !== '.')
+ return resourceDomain === cookieDomain;
+ return !!resourceDomain.match(new RegExp('^([^\\.]+\\.)*' + cookieDomain.substring(1).escapeForRegExp() + '$', 'i'));
};

Powered by Google App Engine
This is Rietveld 408576698