diff --git a/lib/internal/url.js b/lib/internal/url.js index ad8db0ca37..76530f2edc 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -95,12 +95,11 @@ function onParseComplete(flags, protocol, username, password, ctx.query = query; ctx.fragment = fragment; ctx.host = host; - if (this[searchParams]) { // invoked from href setter - initSearchParams(this[searchParams], query); - } else { - this[searchParams] = new URLSearchParams(query); + if (!this[searchParams]) { // invoked from URL constructor + this[searchParams] = new URLSearchParams(); + this[searchParams][context] = this; } - this[searchParams][context] = this; + initSearchParams(this[searchParams], query); } // Reused by URL constructor and URL#href setter. diff --git a/test/parallel/test-whatwg-url-constructor.js b/test/parallel/test-whatwg-url-constructor.js index a8a8667fc4..ffcc022d31 100644 --- a/test/parallel/test-whatwg-url-constructor.js +++ b/test/parallel/test-whatwg-url-constructor.js @@ -119,22 +119,22 @@ function runURLSearchParamTests() { // And in the other direction, altering searchParams propagates // back to 'search'. - // searchParams.append('i', ' j ') + searchParams.append('i', ' j ') // assert_equals(url.search, '?e=f&g=h&i=+j+') // assert_equals(url.searchParams.toString(), 'e=f&g=h&i=+j+') - // assert_equals(searchParams.get('i'), ' j ') + assert_equals(searchParams.get('i'), ' j ') - // searchParams.set('e', 'updated') + searchParams.set('e', 'updated') // assert_equals(url.search, '?e=updated&g=h&i=+j+') - // assert_equals(searchParams.get('e'), 'updated') + assert_equals(searchParams.get('e'), 'updated') - // var url2 = bURL('http://example.org/file??a=b&c=d') - // assert_equals(url2.search, '??a=b&c=d') - // assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d') + var url2 = bURL('http://example.org/file??a=b&c=d') + assert_equals(url2.search, '??a=b&c=d') + assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d') - // url2.href = 'http://example.org/file??a=b' - // assert_equals(url2.search, '??a=b') - // assert_equals(url2.searchParams.toString(), '%3Fa=b') + url2.href = 'http://example.org/file??a=b' + assert_equals(url2.search, '??a=b') + assert_equals(url2.searchParams.toString(), '%3Fa=b') }, 'URL.searchParams and URL.search setters, update propagation') } runURLSearchParamTests()