summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2017-03-05 05:29:35 -0500
committerTimothy Gu <timothygu99@gmail.com>2017-04-04 17:36:37 -0700
commitb76a350a19c36f8c2443ed55b1a9408a09d2e4df (patch)
tree46ff0a6527709e49caa0ccde6b7887f6abec2ed9 /lib
parent82ef00cc0a36492808badb23d4d79ed303412943 (diff)
downloadandroid-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.js36
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);