Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

url: remove gopher from special schemes #33325

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 20 additions & 2 deletions doc/api/url.md
Expand Up @@ -242,6 +242,13 @@ If the value assigned to the `href` property is not a valid URL, a `TypeError`
will be thrown.

#### `url.origin`
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/33325
description: The scheme "gopher" is no longer special and `url.origin` now
returns `'null'` for it.
-->

* {string}

Expand Down Expand Up @@ -305,6 +312,12 @@ to percent-encode may vary somewhat from what the [`url.parse()`][] and
[`url.format()`][] methods would produce.

#### `url.port`
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/33325
description: The scheme "gopher" is no longer special.
-->

* {string}

Expand All @@ -322,7 +335,6 @@ the protocol/scheme:
| -------- | ---- |
| "ftp" | 21 |
| "file" | |
| "gopher" | 70 |
| "http" | 80 |
| "https" | 443 |
| "ws" | 80 |
Expand Down Expand Up @@ -407,6 +419,12 @@ console.log(myURL.href);
Invalid URL protocol values assigned to the `protocol` property are ignored.

##### Special Schemes
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/33325
description: The scheme "gopher" is no longer special.
-->

The [WHATWG URL Standard][] considers a handful of URL protocol schemes to be
_special_ in terms of how they are parsed and serialized. When a URL is
Expand Down Expand Up @@ -444,7 +462,7 @@ console.log(u.href);
```

According to the WHATWG URL Standard, special protocol schemes are `ftp`,
`file`, `gopher`, `http`, `https`, `ws`, and `wss`.
`file`, `http`, `https`, `ws`, and `wss`.

#### `url.search`

Expand Down
1 change: 0 additions & 1 deletion lib/internal/url.js
Expand Up @@ -472,7 +472,6 @@ ObjectDefineProperties(URL.prototype, {
}
return kOpaqueOrigin;
case 'ftp:':
case 'gopher:':
case 'http:':
case 'https:':
case 'ws:':
Expand Down
1 change: 0 additions & 1 deletion src/env.h
Expand Up @@ -371,7 +371,6 @@ constexpr size_t kFsStatsBufferLength =
V(unknown_string, "<unknown>") \
V(url_special_ftp_string, "ftp:") \
V(url_special_file_string, "file:") \
V(url_special_gopher_string, "gopher:") \
V(url_special_http_string, "http:") \
V(url_special_https_string, "https:") \
V(url_special_ws_string, "ws:") \
Expand Down
1 change: 0 additions & 1 deletion src/node_url.cc
Expand Up @@ -726,7 +726,6 @@ std::string PercentDecode(const char* input, size_t len) {
#define SPECIALS(XX) \
XX(ftp, 21, "ftp:") \
XX(file, -1, "file:") \
XX(gopher, 70, "gopher:") \
XX(http, 80, "http:") \
XX(https, 443, "https:") \
XX(ws, 80, "ws:") \
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/wpt/README.md
Expand Up @@ -12,7 +12,7 @@ Last update:

- console: https://github.com/web-platform-tests/wpt/tree/9786a4b131/console
- encoding: https://github.com/web-platform-tests/wpt/tree/5059d2c777/encoding
- url: https://github.com/web-platform-tests/wpt/tree/418f7fabeb/url
- url: https://github.com/web-platform-tests/wpt/tree/43feb7f612/url
- resources: https://github.com/web-platform-tests/wpt/tree/e1fddfbf80/resources
- interfaces: https://github.com/web-platform-tests/wpt/tree/8ada332aea/interfaces
- html/webappapis/microtask-queuing: https://github.com/web-platform-tests/wpt/tree/0c3bed38df/html/webappapis/microtask-queuing
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/wpt/url/failure.html
@@ -1,6 +1,7 @@
<!doctype html>
<meta charset=utf-8>
<title>Test URL parser failure consistency</title>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
Expand Down
8 changes: 4 additions & 4 deletions test/fixtures/wpt/url/resources/setters_tests.json
Expand Up @@ -122,7 +122,7 @@
"href": "gopher://example.net:1234",
"new_value": "file",
"expected": {
"href": "gopher://example.net:1234/",
"href": "gopher://example.net:1234",
"protocol": "gopher:"
}
},
Expand Down Expand Up @@ -212,7 +212,7 @@
},
{
"href": "ssh://me@example.net",
"new_value": "gopher",
"new_value": "https",
"expected": {
"href": "ssh://me@example.net",
"protocol": "ssh:"
Expand Down Expand Up @@ -597,7 +597,7 @@
}
},
{
"comment": "Cannot-be-a-base means no password",
"comment": "Cannot-be-a-base means no host",
"href": "data:text/plain,Stuff",
"new_value": "example.net",
"expected": {
Expand Down Expand Up @@ -1074,7 +1074,7 @@
}
},
{
"comment": "Cannot-be-a-base means no password",
"comment": "Cannot-be-a-base means no host",
"href": "data:text/plain,Stuff",
"new_value": "example.net",
"expected": {
Expand Down
50 changes: 25 additions & 25 deletions test/fixtures/wpt/url/resources/urltestdata.json
Expand Up @@ -1076,15 +1076,15 @@
{
"input": "gopher:/example.com/",
"base": "http://example.org/foo/bar",
"href": "gopher://example.com/",
"origin": "gopher://example.com",
"href": "gopher:/example.com/",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
"host": "example.com",
"hostname": "example.com",
"host": "",
"hostname": "",
"port": "",
"pathname": "/",
"pathname": "/example.com/",
"search": "",
"hash": ""
},
Expand Down Expand Up @@ -1241,15 +1241,15 @@
{
"input": "gopher:example.com/",
"base": "http://example.org/foo/bar",
"href": "gopher://example.com/",
"origin": "gopher://example.com",
"href": "gopher:example.com/",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
"host": "example.com",
"hostname": "example.com",
"host": "",
"hostname": "",
"port": "",
"pathname": "/",
"pathname": "example.com/",
"search": "",
"hash": ""
},
Expand Down Expand Up @@ -2511,14 +2511,14 @@
{
"input": "gopher://foo:70/",
"base": "about:blank",
"href": "gopher://foo/",
"origin": "gopher://foo",
"href": "gopher://foo:70/",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
"host": "foo",
"host": "foo:70",
"hostname": "foo",
"port": "",
"port": "70",
"pathname": "/",
"search": "",
"hash": ""
Expand All @@ -2527,7 +2527,7 @@
"input": "gopher://foo:443/",
"base": "about:blank",
"href": "gopher://foo:443/",
"origin": "gopher://foo:443",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
Expand Down Expand Up @@ -2750,15 +2750,15 @@
{
"input": "gopher:/example.com/",
"base": "about:blank",
"href": "gopher://example.com/",
"origin": "gopher://example.com",
"href": "gopher:/example.com/",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
"host": "example.com",
"hostname": "example.com",
"host": "",
"hostname": "",
"port": "",
"pathname": "/",
"pathname": "/example.com/",
"search": "",
"hash": ""
},
Expand Down Expand Up @@ -2915,15 +2915,15 @@
{
"input": "gopher:example.com/",
"base": "about:blank",
"href": "gopher://example.com/",
"origin": "gopher://example.com",
"href": "gopher:example.com/",
"origin": "null",
"protocol": "gopher:",
"username": "",
"password": "",
"host": "example.com",
"hostname": "example.com",
"host": "",
"hostname": "",
"port": "",
"pathname": "/",
"pathname": "example.com/",
"search": "",
"hash": ""
},
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/wpt/versions.json
Expand Up @@ -8,7 +8,7 @@
"path": "encoding"
},
"url": {
"commit": "418f7fabebeeb642e79e05b48ffde1a601c7e058",
"commit": "43feb7f612fe9160639e09a47933a29834904d69",
"path": "url"
},
"resources": {
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-whatwg-url-custom-properties.js
Expand Up @@ -171,11 +171,11 @@ assert.strictEqual(url.searchParams, oldParams);
{ expected: 'https://whatwg.org',
url: 'blob:https://whatwg.org/d0360e2f-caee-469f-9a2f-87d5b0456f6f' },
{ expected: 'ftp://example.org', url: 'ftp://example.org/foo' },
{ expected: 'gopher://gopher.quux.org', url: 'gopher://gopher.quux.org/1/' },
{ expected: 'http://example.org', url: 'http://example.org/foo' },
{ expected: 'https://example.org', url: 'https://example.org/foo' },
{ expected: 'ws://example.org', url: 'ws://example.org/foo' },
{ expected: 'wss://example.org', url: 'wss://example.org/foo' },
{ expected: 'null', url: 'gopher://gopher.quux.org/1/' },
{ expected: 'null', url: 'file:///tmp/mock/path' },
{ expected: 'null', url: 'npm://nodejs/rules' }
].forEach((test) => {
Expand Down