Skip to content

Commit fa41dd1

Browse files
committed
url: fix handling of ? in URLSearchParams creation
PR-URL: #11372 Fixes: #11093 Ref: whatwg/url#248 Reviewed-By: Joyee Cheung <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 70afe9d commit fa41dd1

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

lib/internal/url.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,11 @@ function onParseComplete(flags, protocol, username, password,
9595
ctx.query = query;
9696
ctx.fragment = fragment;
9797
ctx.host = host;
98-
if (this[searchParams]) { // invoked from href setter
99-
initSearchParams(this[searchParams], query);
100-
} else {
101-
this[searchParams] = new URLSearchParams(query);
98+
if (!this[searchParams]) { // invoked from URL constructor
99+
this[searchParams] = new URLSearchParams();
100+
this[searchParams][context] = this;
102101
}
103-
this[searchParams][context] = this;
102+
initSearchParams(this[searchParams], query);
104103
}
105104

106105
// Reused by URL constructor and URL#href setter.

test/parallel/test-whatwg-url-constructor.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -119,22 +119,22 @@ function runURLSearchParamTests() {
119119

120120
// And in the other direction, altering searchParams propagates
121121
// back to 'search'.
122-
// searchParams.append('i', ' j ')
122+
searchParams.append('i', ' j ')
123123
// assert_equals(url.search, '?e=f&g=h&i=+j+')
124124
// assert_equals(url.searchParams.toString(), 'e=f&g=h&i=+j+')
125-
// assert_equals(searchParams.get('i'), ' j ')
125+
assert_equals(searchParams.get('i'), ' j ')
126126

127-
// searchParams.set('e', 'updated')
127+
searchParams.set('e', 'updated')
128128
// assert_equals(url.search, '?e=updated&g=h&i=+j+')
129-
// assert_equals(searchParams.get('e'), 'updated')
129+
assert_equals(searchParams.get('e'), 'updated')
130130

131-
// var url2 = bURL('http://example.org/file??a=b&c=d')
132-
// assert_equals(url2.search, '??a=b&c=d')
133-
// assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d')
131+
var url2 = bURL('http://example.org/file??a=b&c=d')
132+
assert_equals(url2.search, '??a=b&c=d')
133+
assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d')
134134

135-
// url2.href = 'http://example.org/file??a=b'
136-
// assert_equals(url2.search, '??a=b')
137-
// assert_equals(url2.searchParams.toString(), '%3Fa=b')
135+
url2.href = 'http://example.org/file??a=b'
136+
assert_equals(url2.search, '??a=b')
137+
assert_equals(url2.searchParams.toString(), '%3Fa=b')
138138
}, 'URL.searchParams and URL.search setters, update propagation')
139139
}
140140
runURLSearchParamTests()

0 commit comments

Comments
 (0)