- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 23 Jan 2023 20:18:10 -0800
- To: whatwg/url <url@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/url/pull/502/review/1266754409@github.com>
@domenic commented on this pull request.
+1 for better consistency in naming the errors, if possible. Some suggestions, none of which I'm 100% confident in:
- All the file: URL specific ones could be prefixed with `file-`.
- All the authority/credentails ones could be prefixed with `authority-`.
- Choose between "unexpected" (e.g. unexpected-C0-control-or-space), "invalid" (e.g. invalid-URL-code-point, invalid-scheme-start), and "forbidden" (e.g. forbidden-host-code-point").
I also wonder about redundancy for some of these. Isn't invalid-URL-code-point a superset of unexpected-C0-control-or-space and unexpected-ASCII-tab-or-newline? Similarly isn't unexpected-at-sign a superset of unexpected-credentials-without-host and missing-solidus-before-authority? Maybe the extra specificity is useful, but I'm not so sure...
> @@ -88,6 +88,334 @@ valid input. User agents, especially conformance checkers, are encouraged to rep
unclear to other developers.
</div>
+<table>
+ <thead>
+ <tr>
+ <th>Error type
+ <th>Error description
+ <th>Failure
+ <tbody>
+ <tr>
+ <th colspan=3 scope=rowgroup><a href=#idna>IDNA</a>
+ <tr>
+ <td><dfn id=validation-error-domain-to-ascii>domain-to-ASCII</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToASCII>Unicode toASCII</a> records an error while processing
```suggestion
<p>The result of <a abstract-op lt=ToASCII>Unicode ToASCII</a> records an error while processing
```
> + <tbody>
+ <tr>
+ <th colspan=3 scope=rowgroup><a href=#idna>IDNA</a>
+ <tr>
+ <td><dfn id=validation-error-domain-to-ascii>domain-to-ASCII</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToASCII>Unicode toASCII</a> records an error while processing
+ the input domain.
+ <p class=note>[[!UTS46]] conformance does not require the reporting of precise errors, only that
+ an error has occurred. If the [[!UTS46]] implementation reports precise error codes, user agents
+ are encouraged pass those codes along.
+ <td>✅
+ <tr>
+ <td><dfn>domain-to-ASCII-empty</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToASCII>Unicode toASCII</a> returns an empty string. This
```suggestion
<p>The result of <a abstract-op lt=ToASCII>Unicode ToASCII</a> returns an empty string. This
```
> + <td>✅
+ <tr>
+ <td><dfn>domain-to-ASCII-empty</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToASCII>Unicode toASCII</a> returns an empty string. This
+ could have been caused by:
+ <ul>
+ <li>Input consists of all ignorable code points.
+ <li>Input is the string "<code>xn--</code>".
+ <li>Input is the empty string and the <i>VerifyDnsLength</i> parameter is false.
+ </ul>
+ <td>✅
+ <tr>
+ <td><dfn>domain-to-Unicode</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToUnicode>Unicode toUnicode</a> returns an error while
```suggestion
<p>The result of <a abstract-op lt=ToUnicode>Unicode ToUnicode</a> returns an error while
```
> + <p>The input to the <a>URL parser</a> contains a leading or trailing <a>C0 control or space</a>. The
+ URL parser subsequently strips any matching code points.
+ <p class=example id=example-unexpected-c0-control-or-space>"<code> https://example.org </code>"
+ <td>❌
+ <tr>
+ <td><dfn>unexpected-ASCII-tab-or-newline</dfn>
+ <td>
+ <p>The input to the URL parser contains <a>ASCII tab or newlines</a>. The URL parser
+ subsequently strips any matching code points.
+ <p class=example id=example-unexpected-ascii-tab-or-newline>"<code>ht<br>tps://example.org</code>"
+ <td>❌
+ <tr>
+ <td><dfn>invalid-scheme-start</dfn>
+ <td>
+ <p>The first code point of a URL's <a for=url>scheme</a> is not an <a>ASCII alpha</a>.
+ <p class=example id=example-invalid-scheme-start>"3ttps://example.org"
```suggestion
<p class=example id=example-invalid-scheme-start>"<code>3ttps://example.org</code>"
```
> + <div class=example id=example-missing-scheme-non-relative-url>
+ <p>Input's <a for=url>scheme</a> is missing and no <a>base URL</a> is given:
+ <pre><code class=lang-javascript>
+let url = new URL("💩");</code></pre>
+ <p>Input's <a for=url>scheme</a> is missing, but the <a>base URL</a> has an
+ <a for=url>opaque path</a>.
+ <pre><code class=lang-javascript>
+let url = new URL("💩", "mailto:user@example.org");</code></pre>
+ </div>
+ <td>✅
+ <tr>
+ <td><dfn>relative-URL-missing-beginning-solidus</dfn>
+ <td>
+ <p>The input is a <a>relative-URL String</a> that does not begin with U+002F (/).
+ <pre class=example id=example-relative-url-missing-beginning-solidus><code class="lang-javascript">
+let url = new URL("foo.html", "https://example.org/");</code></pre>
Why the heck would this be an error? Does this mean `<a href="foo.html">` is an error?
> + <tr>
+ <th>Error type
+ <th>Error description
+ <th>Failure
+ <tbody>
+ <tr>
+ <th colspan=3 scope=rowgroup><a href=#idna>IDNA</a>
+ <tr>
+ <td><dfn id=validation-error-domain-to-ascii>domain-to-ASCII</dfn>
+ <td>
+ <p>The result of <a abstract-op lt=ToASCII>Unicode toASCII</a> records an error while processing
+ the input domain.
+ <p class=note>[[!UTS46]] conformance does not require the reporting of precise errors, only that
+ an error has occurred. If the [[!UTS46]] implementation reports precise error codes, user agents
+ are encouraged pass those codes along.
+ <td>✅
Although it may have been my suggestion, I think the green checkmarks / red Xs are confusing, because they feel too much like "success" / "failure".
Maybe "Yes" / "·" similar to https://html.spec.whatwg.org/#linkTypes would work better.
> + <td><dfn>unexpected-Windows-drive-letter</dfn>
+ <td>
+ <p>The input is a <a>relative-URL string</a> that <a>starts with a Windows drive letter</a> and
+ the <a>base URL</a>'s <a for=url>scheme</a> is "<code>file</code>".
+ <pre class=example id=example-unexpected-windows-drive-letter><code class=lang-javascript>
+let url = new URL("/c:/path/to/file", "file:///c:/");</code></pre>
+ <td>❌
+ <tr>
+ <td><dfn>unexpected-Windows-drive-letter-host</dfn>
+ <td>
+ <p>The file URL's host is a Windows drive letter.
+ <p class=example id=example-unexpected-windows-drive-letter-host>"<code>file://c:</code>"
+ <td>❌
+ <tbody>
+ <tr>
+ <th colspan=3 scope=rowgroup>URL parsing and <a>opaque-host parser</a>
I don't really understand why this is split out from the above section.
> + <a>ASCII alpha</a>, and either no <a>base URL</a> was provided or the <a>base URL</a> cannot be
+ used as a <a>base URL</a> because it has an <a for=url>opaque path</a>.
+ <div class=example id=example-missing-scheme-non-relative-url>
+ <p>Input's <a for=url>scheme</a> is missing and no <a>base URL</a> is given:
+ <pre><code class=lang-javascript>
+let url = new URL("💩");</code></pre>
+ <p>Input's <a for=url>scheme</a> is missing, but the <a>base URL</a> has an
+ <a for=url>opaque path</a>.
+ <pre><code class=lang-javascript>
+let url = new URL("💩", "mailto:user@example.org");</code></pre>
+ </div>
+ <td>✅
+ <tr>
+ <td><dfn>relative-URL-missing-beginning-solidus</dfn>
+ <td>
+ <p>The input is a <a>relative-URL String</a> that does not begin with U+002F (/).
```suggestion
<p>The input is a <a>relative-URL string</a> that does not begin with U+002F (/).
```
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/url/pull/502#pullrequestreview-1266754409
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/url/pull/502/review/1266754409@github.com>
Received on Tuesday, 24 January 2023 04:18:22 UTC