diff --git a/lib/internal/url.js b/lib/internal/url.js index 679e14d72a9c39..84e04ee9d8fa85 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -77,7 +77,7 @@ class TupleOrigin { return result; } - inspect() { + [util.inspect.custom]() { return `TupleOrigin { scheme: ${this[kScheme]}, host: ${this[kHost]}, @@ -223,10 +223,6 @@ class URL { parse(this, input, base); } - get [Symbol.toStringTag]() { - return this instanceof URL ? 'URL' : 'URLPrototype'; - } - get [special]() { return (this[context].flags & binding.URL_FLAGS_SPECIAL) !== 0; } @@ -235,7 +231,7 @@ class URL { return (this[context].flags & binding.URL_FLAGS_CANNOT_BE_BASE) !== 0; } - inspect(depth, opts) { + [util.inspect.custom](depth, opts) { const ctx = this[context]; var ret = 'URL {\n'; ret += ` href: ${this.href}\n`; @@ -314,6 +310,10 @@ Object.defineProperties(URL.prototype, { return ret; } }, + [Symbol.toStringTag]: { + configurable: true, + value: 'URL' + }, href: { enumerable: true, configurable: true, @@ -1046,7 +1046,6 @@ function urlToOptions(url) { exports.URL = URL; exports.URLSearchParams = URLSearchParams; -exports.originFor = originFor; exports.domainToASCII = domainToASCII; exports.domainToUnicode = domainToUnicode; exports.encodeAuth = encodeAuth; diff --git a/lib/url.js b/lib/url.js index 933ffe13b4d9e4..2f05cc6648ab48 100644 --- a/lib/url.js +++ b/lib/url.js @@ -18,7 +18,6 @@ exports.resolveObject = urlResolveObject; exports.format = urlFormat; exports.URL = internalUrl.URL; exports.URLSearchParams = internalUrl.URLSearchParams; -exports.originFor = internalUrl.originFor; exports.domainToASCII = internalUrl.domainToASCII; exports.domainToUnicode = internalUrl.domainToUnicode; diff --git a/test/parallel/test-util-inspect-tuple-origin.js b/test/parallel/test-util-inspect-tuple-origin.js deleted file mode 100644 index 743651098f60db..00000000000000 --- a/test/parallel/test-util-inspect-tuple-origin.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -require('../common'); -const assert = require('assert'); -const inspect = require('util').inspect; -const originFor = require('url').originFor; - -assert.strictEqual( - inspect(originFor('http://test.com:8000')), - `TupleOrigin { - scheme: http, - host: test.com, - port: 8000, - domain: null - }` - ); - -assert.strictEqual( - inspect(originFor('http://test.com')), - `TupleOrigin { - scheme: http, - host: test.com, - port: undefined, - domain: null - }` - ); - - -assert.strictEqual( - inspect(originFor('https://test.com')), - `TupleOrigin { - scheme: https, - host: test.com, - port: undefined, - domain: null - }` - ); diff --git a/test/parallel/test-whatwg-url-parsing.js b/test/parallel/test-whatwg-url-parsing.js index 9ea6cc74bff5e6..f1fd2ae9051533 100644 --- a/test/parallel/test-whatwg-url-parsing.js +++ b/test/parallel/test-whatwg-url-parsing.js @@ -1,6 +1,7 @@ 'use strict'; const common = require('../common'); +const util = require('util'); if (!common.hasIntl) { // A handful of the tests fail when ICU is not included. @@ -144,8 +145,8 @@ for (const test of allTests) { const url = test.url ? new URL(test.url) : new URL(test.input, test.base); for (const showHidden of [true, false]) { - const res = url.inspect(null, { - showHidden: showHidden + const res = util.inspect(url, { + showHidden }); const lines = res.split('\n'); diff --git a/test/parallel/test-whatwg-url-properties.js b/test/parallel/test-whatwg-url-properties.js index 0b5e633677170a..b762659fb6eadc 100644 --- a/test/parallel/test-whatwg-url-properties.js +++ b/test/parallel/test-whatwg-url-properties.js @@ -45,7 +45,7 @@ assert.strictEqual(url.searchParams, oldParams); // [SameObject] // Note: this error message is subject to change in V8 updates assert.throws(() => url.origin = 'http://foo.bar.com:22', new RegExp('TypeError: Cannot set property origin of' + - ' \\[object Object\\] which has only a getter')); + ' \\[object URL\\] which has only a getter')); assert.strictEqual(url.origin, 'http://foo.bar.com:21'); assert.strictEqual(url.toString(), 'http://user:pass@foo.bar.com:21/aaa/zzz?l=25#test'); @@ -121,7 +121,7 @@ assert.strictEqual(url.hash, '#abcd'); // Note: this error message is subject to change in V8 updates assert.throws(() => url.searchParams = '?k=88', new RegExp('TypeError: Cannot set property searchParams of' + - ' \\[object Object\\] which has only a getter')); + ' \\[object URL\\] which has only a getter')); assert.strictEqual(url.searchParams, oldParams); assert.strictEqual(url.toString(), 'https://user2:pass2@foo.bar.org:23/aaa/bbb?k=99#abcd'); diff --git a/test/parallel/test-whatwg-url-tostringtag.js b/test/parallel/test-whatwg-url-tostringtag.js index 9e0927955feaab..55b0a48ce741ac 100644 --- a/test/parallel/test-whatwg-url-tostringtag.js +++ b/test/parallel/test-whatwg-url-tostringtag.js @@ -10,9 +10,12 @@ const sp = url.searchParams; const test = [ [toString.call(url), 'URL'], - [toString.call(Object.getPrototypeOf(url)), 'URLPrototype'], [toString.call(sp), 'URLSearchParams'], - [toString.call(Object.getPrototypeOf(sp)), 'URLSearchParamsPrototype'] + [toString.call(Object.getPrototypeOf(sp)), 'URLSearchParamsPrototype'], + // Web IDL spec says we have to return 'URLPrototype', but it is too + // expensive to implement; therefore, use Chrome's behavior for now, until + // spec is changed. + [toString.call(Object.getPrototypeOf(url)), 'URL'] ]; test.forEach((row) => {