diff options
author | Brian White <mscdex@mscdex.net> | 2017-03-05 05:29:35 -0500 |
---|---|---|
committer | Timothy Gu <timothygu99@gmail.com> | 2017-04-04 17:36:37 -0700 |
commit | b76a350a19c36f8c2443ed55b1a9408a09d2e4df (patch) | |
tree | 46ff0a6527709e49caa0ccde6b7887f6abec2ed9 /lib | |
parent | 82ef00cc0a36492808badb23d4d79ed303412943 (diff) | |
download | android-node-v8-b76a350a19c36f8c2443ed55b1a9408a09d2e4df.tar.gz android-node-v8-b76a350a19c36f8c2443ed55b1a9408a09d2e4df.tar.bz2 android-node-v8-b76a350a19c36f8c2443ed55b1a9408a09d2e4df.zip |
url: avoid instanceof for WHATWG URL
PR-URL: https://github.com/nodejs/node/pull/11690
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/url.js | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/internal/url.js b/lib/internal/url.js index 7fafc783db..9a70838c30 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -239,8 +239,10 @@ class URL { constructor(input, base) { // toUSVString is not needed. input = `${input}`; - if (base !== undefined && !(base instanceof URL)) + if (base !== undefined && + (!base[searchParams] || !base[searchParams][searchParams])) { base = new URL(base); + } parse(this, input, base); } @@ -885,7 +887,7 @@ class URLSearchParams { } [util.inspect.custom](recurseTimes, ctx) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } @@ -947,7 +949,7 @@ function merge(out, start, mid, end, lBuffer, rBuffer) { defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { append(name, value) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 2) { @@ -961,7 +963,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, delete(name) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 1) { @@ -982,7 +984,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, get(name) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 1) { @@ -1000,7 +1002,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, getAll(name) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 1) { @@ -1019,7 +1021,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, has(name) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 1) { @@ -1037,7 +1039,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, set(name, value) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (arguments.length < 2) { @@ -1125,7 +1127,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { // Define entries here rather than [Symbol.iterator] as the function name // must be set to `entries`. entries() { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } @@ -1133,7 +1135,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, forEach(callback, thisArg = undefined) { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } if (typeof callback !== 'function') { @@ -1155,7 +1157,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { // https://heycam.github.io/webidl/#es-iterable keys() { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } @@ -1163,7 +1165,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { }, values() { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } @@ -1173,7 +1175,7 @@ defineIDLClass(URLSearchParams.prototype, 'URLSearchParams', { // https://heycam.github.io/webidl/#es-stringifier // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior toString() { - if (!this || !(this instanceof URLSearchParams)) { + if (!this || !this[searchParams] || this[searchParams][searchParams]) { throw new TypeError('Value of `this` is not a URLSearchParams'); } @@ -1275,8 +1277,10 @@ defineIDLClass(URLSearchParamsIteratorPrototype, 'URLSearchParamsIterator', { }); function originFor(url, base) { - if (!(url instanceof URL)) + if (url != undefined && + (!url[searchParams] || !url[searchParams][searchParams])) { url = new URL(url, base); + } var origin; const protocol = url.protocol; switch (protocol) { @@ -1399,8 +1403,10 @@ function getPathFromURLPosix(url) { } function getPathFromURL(path) { - if (!(path instanceof URL)) + if (path == undefined || !path[searchParams] || + !path[searchParams][searchParams]) { return path; + } if (path.protocol !== 'file:') return new TypeError('Only `file:` URLs are supported'); return isWindows ? getPathFromURLWin32(path) : getPathFromURLPosix(path); |