diff options
author | Timothy Gu <timothygu99@gmail.com> | 2017-03-22 11:39:13 -0700 |
---|---|---|
committer | Timothy Gu <timothygu99@gmail.com> | 2017-03-24 15:25:40 -0700 |
commit | 14a91957f8bce2d614ec361f982aa56378f1c24e (patch) | |
tree | 8b248c4973905331de74787f2ed33fedd2711e16 /lib | |
parent | a6e69f8c08958a0909a60b53d048b21d181e90e5 (diff) | |
download | android-node-v8-14a91957f8bce2d614ec361f982aa56378f1c24e.tar.gz android-node-v8-14a91957f8bce2d614ec361f982aa56378f1c24e.tar.bz2 android-node-v8-14a91957f8bce2d614ec361f982aa56378f1c24e.zip |
url: use a class for WHATWG url[context]
The object is used as a structure, not as a map, which `StorageObject`
was designed for.
PR-URL: https://github.com/nodejs/node/pull/11930
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/url.js | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/lib/internal/url.js b/lib/internal/url.js index 7a6ff227ed..64156803d8 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -3,8 +3,7 @@ const util = require('util'); const { hexTable, - isHexTable, - StorageObject + isHexTable } = require('internal/querystring'); const binding = process.binding('url'); const context = Symbol('context'); @@ -97,6 +96,26 @@ class TupleOrigin { } } +// This class provides the internal state of a URL object. An instance of this +// class is stored in every URL object and is accessed internally by setters +// and getters. It roughly corresponds to the concept of a URL record in the +// URL Standard, with a few differences. It is also the object transported to +// the C++ binding. +// Refs: https://url.spec.whatwg.org/#concept-url +class URLContext { + constructor() { + this.flags = 0; + this.scheme = undefined; + this.username = undefined; + this.password = undefined; + this.host = undefined; + this.port = undefined; + this.path = []; + this.query = undefined; + this.fragment = undefined; + } +} + function onParseComplete(flags, protocol, username, password, host, port, path, query, fragment) { var ctx = this[context]; @@ -125,7 +144,7 @@ function onParseError(flags, input) { // Reused by URL constructor and URL#href setter. function parse(url, input, base) { const base_context = base ? base[context] : undefined; - url[context] = new StorageObject(); + url[context] = new URLContext(); binding.parse(input.trim(), -1, base_context, undefined, onParseComplete.bind(url), onParseError); |