Skip to content

Commit

Permalink
Merge r241333 - Align with Fetch on data: URLs
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=182325

Patch by Rob Buis <rbuis@igalia.com> on 2019-02-12
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Update improved test expectations.

* web-platform-tests/fetch/data-urls/processing.any-expected.txt:
* web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt:

Source/WebCore:

The MIME type part of the data url should be serialized as
specified in step 3 under "data" [1].

Test: web-platform-tests/fetch/data-urls/processing.any.js

[1] https://fetch.spec.whatwg.org/#concept-scheme-fetch

* platform/network/DataURLDecoder.cpp:
(WebCore::DataURLDecoder::parseMediaType):
  • Loading branch information
rwlbuis authored and carlosgcampos committed Feb 13, 2019
1 parent 71e7544 commit b2ad45f
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 49 deletions.
12 changes: 12 additions & 0 deletions LayoutTests/imported/w3c/ChangeLog
@@ -1,3 +1,15 @@
2019-02-12 Rob Buis <rbuis@igalia.com>

Align with Fetch on data: URLs
https://bugs.webkit.org/show_bug.cgi?id=182325

Reviewed by Alex Christensen.

Update improved test expectations.

* web-platform-tests/fetch/data-urls/processing.any-expected.txt:
* web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt:

2019-01-30 Youenn Fablet <youenn@apple.com>

ServiceWorkerJob should notify its client in case its job is cancelled
Expand Down
Expand Up @@ -15,17 +15,17 @@ PASS "data:,%FF"
PASS "data:text/plain,X"
PASS "data:text/plain ,X"
PASS "data:text/plain%20,X"
FAIL "data:text/plain\f,X" assert_equals: expected "text/plain%0c" but got "text/plain%0C"
FAIL "data:text/plain%0C,X" assert_equals: expected "text/plain%0c" but got "text/plain%0C"
FAIL "data:text/plain;,X" assert_equals: expected "text/plain" but got "text/plain;"
PASS "data:text/plain\f,X"
PASS "data:text/plain%0C,X"
PASS "data:text/plain;,X"
PASS "data:;x=x;charset=x,X"
PASS "data:;x=x,X"
PASS "data:text/plain;charset=windows-1252,%C2%B1"
FAIL "data:text/plain;Charset=UTF-8,%C2%B1" assert_equals: expected "text/plain;charset=UTF-8" but got "text/plain;Charset=UTF-8"
PASS "data:text/plain;Charset=UTF-8,%C2%B1"
PASS "data:image/gif,%C2%B1"
FAIL "data:IMAGE/gif,%C2%B1" assert_equals: expected "image/gif" but got "IMAGE/gif"
FAIL "data:IMAGE/gif;hi=x,%C2%B1" assert_equals: expected "image/gif;hi=x" but got "IMAGE/gif;hi=x"
FAIL "data:IMAGE/gif;CHARSET=x,%C2%B1" assert_equals: expected "image/gif;charset=x" but got "IMAGE/gif;CHARSET=x"
PASS "data:IMAGE/gif,%C2%B1"
PASS "data:IMAGE/gif;hi=x,%C2%B1"
PASS "data:IMAGE/gif;CHARSET=x,%C2%B1"
PASS "data: ,%FF"
PASS "data:%20,%FF"
PASS "data:\f,%FF"
Expand All @@ -35,21 +35,21 @@ PASS "data:%00,%FF"
PASS "data:text/html ,X"
PASS "data:text / html,X"
PASS "data:†,X"
FAIL "data:†/†,X" assert_equals: expected "%e2%80%a0/%e2%80%a0" but got "%E2%80%A0/%E2%80%A0"
PASS "data:†/†,X"
PASS "data:X,X"
PASS "data:image/png,X X"
PASS "data:application/javascript,X X"
PASS "data:application/xml,X X"
PASS "data:text/javascript,X X"
PASS "data:text/plain,X X"
PASS "data:unknown/unknown,X X"
FAIL "data:text/plain;a=\",\",X" assert_equals: expected "text/plain;a=\"\"" but got "text/plain;a=\""
PASS "data:text/plain;a=\",\",X"
PASS "data:text/plain;a=%2C,X"
FAIL "data:;base64;base64,WA" assert_equals: expected "text/plain" but got "text/plain;base64"
FAIL "data:x/x;base64;base64,WA" assert_equals: expected "x/x" but got "x/x;base64"
FAIL "data:x/x;base64;charset=x,WA" assert_equals: expected "x/x;charset=x" but got "x/x;base64;charset=x"
FAIL "data:x/x;base64;charset=x;base64,WA" assert_equals: expected "x/x;charset=x" but got "x/x;base64;charset=x"
FAIL "data:x/x;base64;base64x,WA" assert_equals: expected "x/x" but got "x/x;base64;base64x"
PASS "data:;base64;base64,WA"
PASS "data:x/x;base64;base64,WA"
PASS "data:x/x;base64;charset=x,WA"
PASS "data:x/x;base64;charset=x;base64,WA"
PASS "data:x/x;base64;base64x,WA"
PASS "data:;base64,W%20A"
PASS "data:;base64,W%0CA"
PASS "data:x;base64x,WA"
Expand All @@ -58,19 +58,19 @@ PASS "data:x;base64=x,WA"
FAIL "data:; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data: ;charset=x ; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base64;,WA" assert_equals: expected "text/plain" but got "text/plain;base64;"
PASS "data:;base64;,WA"
FAIL "data:;base64 ,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base64 ,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base 64,WA" assert_equals: expected "text/plain" but got "text/plain;base 64"
PASS "data:;base 64,WA"
PASS "data:;BASe64,WA"
FAIL "data:;%62ase64,WA" assert_equals: expected "text/plain" but got "text/plain;%62ase64"
PASS "data:;%62ase64,WA"
PASS "data:%3Bbase64,WA"
PASS "data:;charset=x,X"
FAIL "data:; charset=x,X" assert_equals: expected "text/plain;charset=x" but got "text/plain; charset=x"
FAIL "data:;charset =x,X" assert_equals: expected "text/plain" but got "text/plain;charset =x"
FAIL "data:;charset= x,X" assert_equals: expected "text/plain;charset=\" x\"" but got "text/plain;charset= x"
FAIL "data:;charset=,X" assert_equals: expected "text/plain" but got "text/plain;charset="
FAIL "data:;charset,X" assert_equals: expected "text/plain" but got "text/plain;charset"
FAIL "data:;charset=\"x\",X" assert_equals: expected "text/plain;charset=x" but got "text/plain;charset=\"x\""
FAIL "data:;CHARSET=\"X\",X" assert_equals: expected "text/plain;charset=X" but got "text/plain;CHARSET=\"X\""
PASS "data:; charset=x,X"
PASS "data:;charset =x,X"
PASS "data:;charset= x,X"
PASS "data:;charset=,X"
PASS "data:;charset,X"
PASS "data:;charset=\"x\",X"
PASS "data:;CHARSET=\"X\",X"

Expand Up @@ -12,17 +12,17 @@ PASS "data:,%FF"
PASS "data:text/plain,X"
PASS "data:text/plain ,X"
PASS "data:text/plain%20,X"
FAIL "data:text/plain\f,X" assert_equals: expected "text/plain%0c" but got "text/plain%0C"
FAIL "data:text/plain%0C,X" assert_equals: expected "text/plain%0c" but got "text/plain%0C"
FAIL "data:text/plain;,X" assert_equals: expected "text/plain" but got "text/plain;"
PASS "data:text/plain\f,X"
PASS "data:text/plain%0C,X"
PASS "data:text/plain;,X"
PASS "data:;x=x;charset=x,X"
PASS "data:;x=x,X"
PASS "data:text/plain;charset=windows-1252,%C2%B1"
FAIL "data:text/plain;Charset=UTF-8,%C2%B1" assert_equals: expected "text/plain;charset=UTF-8" but got "text/plain;Charset=UTF-8"
PASS "data:text/plain;Charset=UTF-8,%C2%B1"
PASS "data:image/gif,%C2%B1"
FAIL "data:IMAGE/gif,%C2%B1" assert_equals: expected "image/gif" but got "IMAGE/gif"
FAIL "data:IMAGE/gif;hi=x,%C2%B1" assert_equals: expected "image/gif;hi=x" but got "IMAGE/gif;hi=x"
FAIL "data:IMAGE/gif;CHARSET=x,%C2%B1" assert_equals: expected "image/gif;charset=x" but got "IMAGE/gif;CHARSET=x"
PASS "data:IMAGE/gif,%C2%B1"
PASS "data:IMAGE/gif;hi=x,%C2%B1"
PASS "data:IMAGE/gif;CHARSET=x,%C2%B1"
PASS "data: ,%FF"
PASS "data:%20,%FF"
PASS "data:\f,%FF"
Expand All @@ -32,21 +32,21 @@ PASS "data:%00,%FF"
PASS "data:text/html ,X"
PASS "data:text / html,X"
PASS "data:†,X"
FAIL "data:†/†,X" assert_equals: expected "%e2%80%a0/%e2%80%a0" but got "%E2%80%A0/%E2%80%A0"
PASS "data:†/†,X"
PASS "data:X,X"
PASS "data:image/png,X X"
PASS "data:application/javascript,X X"
PASS "data:application/xml,X X"
PASS "data:text/javascript,X X"
PASS "data:text/plain,X X"
PASS "data:unknown/unknown,X X"
FAIL "data:text/plain;a=\",\",X" assert_equals: expected "text/plain;a=\"\"" but got "text/plain;a=\""
PASS "data:text/plain;a=\",\",X"
PASS "data:text/plain;a=%2C,X"
FAIL "data:;base64;base64,WA" assert_equals: expected "text/plain" but got "text/plain;base64"
FAIL "data:x/x;base64;base64,WA" assert_equals: expected "x/x" but got "x/x;base64"
FAIL "data:x/x;base64;charset=x,WA" assert_equals: expected "x/x;charset=x" but got "x/x;base64;charset=x"
FAIL "data:x/x;base64;charset=x;base64,WA" assert_equals: expected "x/x;charset=x" but got "x/x;base64;charset=x"
FAIL "data:x/x;base64;base64x,WA" assert_equals: expected "x/x" but got "x/x;base64;base64x"
PASS "data:;base64;base64,WA"
PASS "data:x/x;base64;base64,WA"
PASS "data:x/x;base64;charset=x,WA"
PASS "data:x/x;base64;charset=x;base64,WA"
PASS "data:x/x;base64;base64x,WA"
PASS "data:;base64,W%20A"
PASS "data:;base64,W%0CA"
PASS "data:x;base64x,WA"
Expand All @@ -55,19 +55,19 @@ PASS "data:x;base64=x,WA"
FAIL "data:; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data: ;charset=x ; base64,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base64;,WA" assert_equals: expected "text/plain" but got "text/plain;base64;"
PASS "data:;base64;,WA"
FAIL "data:;base64 ,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base64 ,WA" assert_array_equals: lengths differ, expected 1 got 2
FAIL "data:;base 64,WA" assert_equals: expected "text/plain" but got "text/plain;base 64"
PASS "data:;base 64,WA"
PASS "data:;BASe64,WA"
FAIL "data:;%62ase64,WA" assert_equals: expected "text/plain" but got "text/plain;%62ase64"
PASS "data:;%62ase64,WA"
PASS "data:%3Bbase64,WA"
PASS "data:;charset=x,X"
FAIL "data:; charset=x,X" assert_equals: expected "text/plain;charset=x" but got "text/plain; charset=x"
FAIL "data:;charset =x,X" assert_equals: expected "text/plain" but got "text/plain;charset =x"
FAIL "data:;charset= x,X" assert_equals: expected "text/plain;charset=\" x\"" but got "text/plain;charset= x"
FAIL "data:;charset=,X" assert_equals: expected "text/plain" but got "text/plain;charset="
FAIL "data:;charset,X" assert_equals: expected "text/plain" but got "text/plain;charset"
FAIL "data:;charset=\"x\",X" assert_equals: expected "text/plain;charset=x" but got "text/plain;charset=\"x\""
FAIL "data:;CHARSET=\"X\",X" assert_equals: expected "text/plain;charset=X" but got "text/plain;CHARSET=\"X\""
PASS "data:; charset=x,X"
PASS "data:;charset =x,X"
PASS "data:;charset= x,X"
PASS "data:;charset=,X"
PASS "data:;charset,X"
PASS "data:;charset=\"x\",X"
PASS "data:;CHARSET=\"X\",X"

17 changes: 17 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,20 @@
2019-02-12 Rob Buis <rbuis@igalia.com>

Align with Fetch on data: URLs
https://bugs.webkit.org/show_bug.cgi?id=182325

Reviewed by Alex Christensen.

The MIME type part of the data url should be serialized as
specified in step 3 under "data" [1].

Test: web-platform-tests/fetch/data-urls/processing.any.js

[1] https://fetch.spec.whatwg.org/#concept-scheme-fetch

* platform/network/DataURLDecoder.cpp:
(WebCore::DataURLDecoder::parseMediaType):

2019-02-12 Alex Christensen <achristensen@webkit.org>

Remove setDefersLoading infrastructure from WebKit2
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/platform/network/DataURLDecoder.cpp
Expand Up @@ -49,7 +49,7 @@ static WorkQueue& decodeQueue()
static Result parseMediaType(const String& mediaType)
{
if (Optional<ParsedContentType> parsedContentType = ParsedContentType::create(mediaType))
return { parsedContentType->mimeType(), parsedContentType->charset(), mediaType, nullptr };
return { parsedContentType->mimeType(), parsedContentType->charset(), parsedContentType->serialize(), nullptr };
return { "text/plain"_s, "US-ASCII"_s, "text/plain;charset=US-ASCII"_s, nullptr };
}

Expand Down

0 comments on commit b2ad45f

Please sign in to comment.