summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2017-03-20 14:18:37 +0800
committerJames M Snell <jasnell@gmail.com>2017-03-23 07:59:50 -0700
commitee19e2923acc806fc37cabceb03460fb88c95def (patch)
treef3f283f0a9daabc60501d99957fe773c3ba5a6a1 /lib
parent2dff3a22feefe173c2c44574fd3cf312f79ee3b2 (diff)
downloadandroid-node-v8-ee19e2923acc806fc37cabceb03460fb88c95def.tar.gz
android-node-v8-ee19e2923acc806fc37cabceb03460fb88c95def.tar.bz2
android-node-v8-ee19e2923acc806fc37cabceb03460fb88c95def.zip
url: show input in parse error message
PR-URL: https://github.com/nodejs/node/pull/11934 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/url.js24
1 files changed, 7 insertions, 17 deletions
diff --git a/lib/internal/url.js b/lib/internal/url.js
index 040771c228..7a6ff227ed 100644
--- a/lib/internal/url.js
+++ b/lib/internal/url.js
@@ -99,8 +99,6 @@ class TupleOrigin {
function onParseComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- throw new TypeError('Invalid URL');
var ctx = this[context];
ctx.flags = flags;
ctx.scheme = protocol;
@@ -118,19 +116,23 @@ function onParseComplete(flags, protocol, username, password,
initSearchParams(this[searchParams], query);
}
+function onParseError(flags, input) {
+ const error = new TypeError('Invalid URL: ' + input);
+ error.input = input;
+ throw error;
+}
+
// Reused by URL constructor and URL#href setter.
function parse(url, input, base) {
const base_context = base ? base[context] : undefined;
url[context] = new StorageObject();
binding.parse(input.trim(), -1,
base_context, undefined,
- onParseComplete.bind(url));
+ onParseComplete.bind(url), onParseError);
}
function onParseProtocolComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const newIsSpecial = (flags & binding.URL_FLAGS_SPECIAL) !== 0;
const s = this[special];
const ctx = this[context];
@@ -159,8 +161,6 @@ function onParseProtocolComplete(flags, protocol, username, password,
function onParseHostComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const ctx = this[context];
if (host) {
ctx.host = host;
@@ -174,8 +174,6 @@ function onParseHostComplete(flags, protocol, username, password,
function onParseHostnameComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const ctx = this[context];
if (host) {
ctx.host = host;
@@ -187,15 +185,11 @@ function onParseHostnameComplete(flags, protocol, username, password,
function onParsePortComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
this[context].port = port;
}
function onParsePathComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const ctx = this[context];
if (path) {
ctx.path = path;
@@ -207,16 +201,12 @@ function onParsePathComplete(flags, protocol, username, password,
function onParseSearchComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const ctx = this[context];
ctx.query = query;
}
function onParseHashComplete(flags, protocol, username, password,
host, port, path, query, fragment) {
- if (flags & binding.URL_FLAGS_FAILED)
- return;
const ctx = this[context];
if (fragment) {
ctx.fragment = fragment;