Bug 1579331 - URL constructor fails when input is a data URL without a comma r=baku

Differential Revision: https://phabricator.services.mozilla.com/D45372

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Valentin Gosu 2019-09-12 09:24:23 +00:00
Родитель 0725033ef3
Коммит 96689a4a96
8 изменённых файлов: 13 добавлений и 85 удалений

Просмотреть файл

@ -50,7 +50,7 @@ if ("ShadowRoot" in this) {
</menu>
<menu>
<menuitem label="Item w/ icon" icon="favicon.ico"></menuitem>
<menuitem label="Item w/ bad icon" icon="data://www.mozilla.org/favicon.ico"></menuitem>
<menuitem label="Item w/ bad icon" icon="http://example.com%0a%23.google.com/"></menuitem>
</menu>
<menu label="Submenu">
<menuitem type="radio" label="Radio1" radiogroup="rg"></menuitem>

Просмотреть файл

@ -155,11 +155,15 @@ nsresult nsDataHandler::ParsePathWithoutRef(
// First, find the start of the data
int32_t commaIdx = aPath.FindChar(',');
if (commaIdx == kNotFound) {
// This is a hack! When creating a URL using the DOM API we want to ignore
// if a comma is missing. But if we're actually loading a data: URI, in which
// case aContentCharset is not null, then we want to return an error if a
// comma is missing.
if (aContentCharset && commaIdx == kNotFound) {
return NS_ERROR_MALFORMED_URI;
}
if (commaIdx == 0) {
if (commaIdx == 0 || commaIdx == kNotFound) {
// Nothing but data.
aContentType.AssignLiteral("text/plain");
if (aContentCharset) {

Просмотреть файл

@ -1,4 +0,0 @@
[location-protocol-setter-non-broken-weird.html]
[Set location.protocol to data]
expected: FAIL

Просмотреть файл

@ -1,4 +0,0 @@
[location-protocol-setter-non-broken.html]
[Set HTTP URL frame location.protocol to data]
expected: FAIL

Просмотреть файл

@ -2,18 +2,9 @@
[Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:test# »> against <about:blank>]
expected: FAIL
[Parsing origin: <gopher://foo:70/> against <about:blank>]
expected: FAIL
@ -23,23 +14,15 @@
[Parsing origin: <gopher:/example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <data:/example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <gopher:example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <data:example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <http::b@www.example.com> against <about:blank>]
expected: FAIL
[Parsing origin: <data:/../> against <about:blank>]
expected: FAIL
[Parsing origin: <https://0x.0x.0> against <about:blank>]
expected: FAIL
[Parsing origin: <ssh://example.com/foo/bar.git> against <http://example.org/>]
expected: FAIL

Просмотреть файл

@ -2,18 +2,9 @@
[Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing origin: <data:test# »> against <about:blank>]
expected: FAIL
[Parsing origin: <gopher://foo:70/> against <about:blank>]
expected: FAIL
@ -23,23 +14,15 @@
[Parsing origin: <gopher:/example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <data:/example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <gopher:example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <data:example.com/> against <about:blank>]
expected: FAIL
[Parsing origin: <http::b@www.example.com> against <about:blank>]
expected: FAIL
[Parsing origin: <data:/../> against <about:blank>]
expected: FAIL
[Parsing origin: <https://0x.0x.0> against <about:blank>]
expected: FAIL
[Parsing origin: <ssh://example.com/foo/bar.git> against <http://example.org/>]
expected: FAIL

Просмотреть файл

@ -20,15 +20,9 @@
[Parsing: <gopher:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing: <data:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing: <gopher:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing: <data:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Parsing: <file:c:\\foo\\bar.html> against <file:///tmp/mock/path>]
expected: FAIL
@ -53,9 +47,6 @@
[Parsing: <http://example.com/foo/%2e> against <about:blank>]
expected: FAIL
[Parsing: <data:test# »> against <about:blank>]
expected: FAIL
[Parsing: <httpa://foo:80/> against <about:blank>]
expected: FAIL
@ -68,15 +59,9 @@
[Parsing: <gopher:/example.com/> against <about:blank>]
expected: FAIL
[Parsing: <data:/example.com/> against <about:blank>]
expected: FAIL
[Parsing: <gopher:example.com/> against <about:blank>]
expected: FAIL
[Parsing: <data:example.com/> against <about:blank>]
expected: FAIL
[Parsing: <http::b@www.example.com> against <about:blank>]
expected: FAIL
@ -220,7 +205,7 @@
[Parsing: <//d:> against <file:///C:/a/b>]
expected:
if (os == "win"): FAIL
if os == "win": FAIL
[Parsing: <sc://ñ> against <about:blank>]
expected: FAIL
@ -414,9 +399,6 @@
[Parsing: <https://<2F>> against <about:blank>]
expected: FAIL
[Parsing: <data:test# »> against <about:blank>]
expected: FAIL
[Parsing: <sc://ñ?x> against <about:blank>]
expected: FAIL
@ -425,3 +407,4 @@
[Parsing: <#x> against <sc://ñ>]
expected: FAIL

Просмотреть файл

@ -2,18 +2,9 @@
[Origin parsing: <gopher:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Origin parsing: <data:/example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Origin parsing: <gopher:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Origin parsing: <data:example.com/> against <http://example.org/foo/bar>]
expected: FAIL
[Origin parsing: <data:test# »> against <about:blank>]
expected: FAIL
[Origin parsing: <gopher://foo:70/> against <about:blank>]
expected: FAIL
@ -23,23 +14,15 @@
[Origin parsing: <gopher:/example.com/> against <about:blank>]
expected: FAIL
[Origin parsing: <data:/example.com/> against <about:blank>]
expected: FAIL
[Origin parsing: <gopher:example.com/> against <about:blank>]
expected: FAIL
[Origin parsing: <data:example.com/> against <about:blank>]
expected: FAIL
[Origin parsing: <http::b@www.example.com> against <about:blank>]
expected: FAIL
[Origin parsing: <data:/../> against <about:blank>]
expected: FAIL
[Origin parsing: <https://0x.0x.0> against <about:blank>]
expected: FAIL
[Origin parsing: <ssh://example.com/foo/bar.git> against <http://example.org/>]
expected: FAIL