Title: [267995] trunk
Revision
267995
Author
achristen...@apple.com
Date
2020-10-05 12:36:22 -0700 (Mon, 05 Oct 2020)

Log Message

WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
https://bugs.webkit.org/show_bug.cgi?id=68089

Patch by Rob Buis <rb...@igalia.com> on 2020-10-05
Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

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

Source/WebCore:

To maintain compatibility with existing iOS and macOS apps, we only do this for apps linked
with the SDK after the change.

Covered by newly passing web platform tests (which Chrome and Firefox already passed).

* loader/ResourceLoader.cpp:
(WebCore::shouldStripFragmentIdentifier):
(WebCore::ResourceLoader::loadDataURL):
* platform/cocoa/VersionChecks.h:

Source/WTF:

* wtf/URL.h:
* wtf/spi/darwin/dyldSPI.h:

LayoutTests:

Adjusts tests thats use data URIs to escape the # character.

* accessibility/ios-simulator/iframe-access.html:
* accessibility/ios-simulator/unobscured-content-rect.html:
* accessibility/resources/iframe.html:
* accessibility/scroll-to-global-point-iframe.html:
* accessibility/scroll-to-make-visible-iframe-offscreen.html:
* accessibility/scroll-to-make-visible-iframe.html:
* css3/blending/background-blend-mode-crossfade-image.html:
* css3/blending/background-blend-mode-data-uri-svg-image.html:
* css3/blending/background-blend-mode-tiled-layers.html:
* css3/flexbox/flexitem.html:
* css3/shapes/shape-outside/shape-image/shape-image-002.html:
* css3/shapes/shape-outside/shape-image/shape-image-005.html:
* editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html:
* editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html:
* fast/css-grid-layout/grid-item-display.html:
* fast/css/import-style-update.html:
* fast/css/link-media-attr.html:
* fast/dom/HTMLLinkElement/link-stylesheet-media-type.html:
* fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html:
* fast/events/attribute-listener-cloned-from-frameless-doc-context.html:
* fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html:
* fast/events/attribute-listener-extracted-from-frameless-doc-context.html:
* fast/hidpi/image-srcset-data-escaped-srcset.html:
* fast/html/link-rel-stylesheet.html:
* fast/loader/data-url-encoding-html.html:
* fast/loader/data-url-encoding-svg.html:
* fast/spatial-navigation/resources/iframe.html:
* http/tests/security/top-level-unique-origin.https.html:
* platform/ios/css3/flexbox/flexitem-expected.txt:
* platform/win/css3/flexbox/flexitem-expected.txt:
* security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html:
* svg/animations/css-animation-background-svg.html:
* svg/animations/css-animation-embedded-svg.html:
* svg/animations/css-animation-hover-svg.html:
* svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html:
* svg/custom/object-data-href.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (267994 => 267995)


--- trunk/LayoutTests/ChangeLog	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/ChangeLog	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,3 +1,49 @@
+2020-10-05  Rob Buis  <rb...@igalia.com>
+
+        WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
+        https://bugs.webkit.org/show_bug.cgi?id=68089
+
+        Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.
+
+        Adjusts tests thats use data URIs to escape the # character.
+
+        * accessibility/ios-simulator/iframe-access.html:
+        * accessibility/ios-simulator/unobscured-content-rect.html:
+        * accessibility/resources/iframe.html:
+        * accessibility/scroll-to-global-point-iframe.html:
+        * accessibility/scroll-to-make-visible-iframe-offscreen.html:
+        * accessibility/scroll-to-make-visible-iframe.html:
+        * css3/blending/background-blend-mode-crossfade-image.html:
+        * css3/blending/background-blend-mode-data-uri-svg-image.html:
+        * css3/blending/background-blend-mode-tiled-layers.html:
+        * css3/flexbox/flexitem.html:
+        * css3/shapes/shape-outside/shape-image/shape-image-002.html:
+        * css3/shapes/shape-outside/shape-image/shape-image-005.html:
+        * editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html:
+        * editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html:
+        * fast/css-grid-layout/grid-item-display.html:
+        * fast/css/import-style-update.html:
+        * fast/css/link-media-attr.html:
+        * fast/dom/HTMLLinkElement/link-stylesheet-media-type.html:
+        * fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html:
+        * fast/events/attribute-listener-cloned-from-frameless-doc-context.html:
+        * fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html:
+        * fast/events/attribute-listener-extracted-from-frameless-doc-context.html:
+        * fast/hidpi/image-srcset-data-escaped-srcset.html:
+        * fast/html/link-rel-stylesheet.html:
+        * fast/loader/data-url-encoding-html.html:
+        * fast/loader/data-url-encoding-svg.html:
+        * fast/spatial-navigation/resources/iframe.html:
+        * http/tests/security/top-level-unique-origin.https.html:
+        * platform/ios/css3/flexbox/flexitem-expected.txt:
+        * platform/win/css3/flexbox/flexitem-expected.txt:
+        * security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html:
+        * svg/animations/css-animation-background-svg.html:
+        * svg/animations/css-animation-embedded-svg.html:
+        * svg/animations/css-animation-hover-svg.html:
+        * svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html:
+        * svg/custom/object-data-href.html:
+
 2020-10-05  Sergio Villar Senin  <svil...@igalia.com>
 
         [css-flex] Fix expectations of a test which is actually passing

Modified: trunk/LayoutTests/accessibility/ios-simulator/iframe-access.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/ios-simulator/iframe-access.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/ios-simulator/iframe-access.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -9,7 +9,7 @@
 <body id="body">
 
 <div id="content">
-<iframe id="iframe" _onload_="startTest();" src="" id='frame-button'>Click me</button><a href='' id='frame-link'>a</a></body>"></iframe>
+<iframe id="iframe" _onload_="startTest();" src="" id='frame-button'>Click me</button><a href='' id='frame-link'>a</a></body>"></iframe>
 </div>
 
 <p id="description"></p>

Modified: trunk/LayoutTests/accessibility/ios-simulator/unobscured-content-rect.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/ios-simulator/unobscured-content-rect.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/ios-simulator/unobscured-content-rect.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -6,7 +6,7 @@
 <div id="content">
 <button id="button">test</button>
 
-<iframe id="iframe" _onload_="startTest();" width="200" height="200" src="" id='frame-button'>Click me</button><a href='' id='frame-link'>a</a></body>"></iframe>
+<iframe id="iframe" _onload_="startTest();" width="200" height="200" src="" id='frame-button'>Click me</button><a href='' id='frame-link'>a</a></body>"></iframe>
 
 </div>
 

Modified: trunk/LayoutTests/accessibility/resources/iframe.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/resources/iframe.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/resources/iframe.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <html>
 <body>
 <div id="box" style='border: 1px solid #000; height: 1000px;'>1000-pixel box</div>
-<iframe id="iframe" src="" style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div><button id='button'>Test Button</button></button></body>"></iframe>
+<iframe id="iframe" src="" style='border: 1px solid %23000; height: 5000px;'>5000-pixel box</div><button id='button'>Test Button</button></button></body>"></iframe>
 </body>
 </html>

Modified: trunk/LayoutTests/accessibility/scroll-to-global-point-iframe.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/scroll-to-global-point-iframe.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/scroll-to-global-point-iframe.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -11,9 +11,9 @@
 <iframe id="frame" src=""
     <body>
         <style>button { border: 0; }</style>
-        <div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div>
+        <div style='border: 1px solid %23000; height: 5000px;'>5000-pixel box</div>
         <button id='target'>Target</button>
-        <div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div>
+        <div style='border: 1px solid %23000; height: 5000px;'>5000-pixel box</div>
     </body>"></iframe>
 
 <div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>

Modified: trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe-offscreen.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe-offscreen.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe-offscreen.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -8,7 +8,7 @@
 
 <div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div>
 
-<iframe id="frame" src="" id='upper_target'>Upper Target</button><div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div><button id='lower_target'>Lower Target</button></body>"></iframe>
+<iframe id="frame" src="" id='upper_target'>Upper Target</button><div style='border: 1px solid %23000; height: 5000px;'>5000-pixel box</div><button id='lower_target'>Lower Target</button></body>"></iframe>
 
 <br>
 <iframe id="frame2" src=""

Modified: trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe.html (267994 => 267995)


--- trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/accessibility/scroll-to-make-visible-iframe.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -6,7 +6,7 @@
 
 <p id="description"></p>
 
-<iframe id="frame" src="" id='upper_target'>Upper Target</button><div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div><button id='lower_target'>Lower Target</button></body>"></iframe>
+<iframe id="frame" src="" id='upper_target'>Upper Target</button><div style='border: 1px solid %23000; height: 5000px;'>5000-pixel box</div><button id='lower_target'>Lower Target</button></body>"></iframe>
 
 <div id="console"></div>
 

Modified: trunk/LayoutTests/css3/blending/background-blend-mode-crossfade-image.html (267994 => 267995)


--- trunk/LayoutTests/css3/blending/background-blend-mode-crossfade-image.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/blending/background-blend-mode-crossfade-image.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -8,11 +8,11 @@
     div {
         background-image: -webkit-cross-fade(url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ), url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ), 100%);
         background-blend-mode: difference, normal

Modified: trunk/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html (267994 => 267995)


--- trunk/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -9,7 +9,7 @@
         border-style: dotted double;
         background: url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ), #FF0;
         background-blend-mode: difference, normal

Modified: trunk/LayoutTests/css3/blending/background-blend-mode-tiled-layers.html (267994 => 267995)


--- trunk/LayoutTests/css3/blending/background-blend-mode-tiled-layers.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/blending/background-blend-mode-tiled-layers.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -15,7 +15,7 @@
     .tiledSVG {
         background: url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ) 0 0 /50% 50%, #FF0;
     }
@@ -27,11 +27,11 @@
     .tiledCrossfadeImage {
         background: -webkit-cross-fade(url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ), url('data:image/svg+xml;utf8, \
             <svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px"> \
-                <rect width="100" height="100" fill="#F00"/> \
+                <rect width="100" height="100" fill="%23F00"/> \
             </svg>'
             ), 100%) 0 0 /50% 50%, #FF0;
     }

Modified: trunk/LayoutTests/css3/flexbox/flexitem.html (267994 => 267995)


--- trunk/LayoutTests/css3/flexbox/flexitem.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/flexbox/flexitem.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -25,7 +25,7 @@
 <div class="flexbox" style="height:200px">
   <button data-expected-display="block" data-expected-width="100" data-expected-height="200">button</button>
   <canvas data-expected-display="block" data-expected-width="100" data-expected-height="200">canvas</canvas>
-  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=#fff>iframe</body>"></iframe>
+  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=%23fff>iframe</body>"></iframe>
   <object data-expected-display="block" data-expected-width="100" data-expected-height="200">object</object>
   <select data-expected-display="block" data-expected-width="100" data-expected-height="200">
     <option>select</option>
@@ -84,25 +84,25 @@
 </div>
 
 <div class="flexbox" style="height:200px">
-  <iframe data-expected-display="block" data-expected-height="200" src="" bgcolor=#fff>iframe</body>"></iframe>
-  <iframe seamless data-expected-display="block" data-expected-height="200" src="" bgcolor=#fff>iframe</body>"></iframe>
+  <iframe data-expected-display="block" data-expected-height="200" src="" bgcolor=%23fff>iframe</body>"></iframe>
+  <iframe seamless data-expected-display="block" data-expected-height="200" src="" bgcolor=%23fff>iframe</body>"></iframe>
 </div>
 
 <div class="flexbox" style="height:100px">
-  <iframe data-expected-display="block" data-expected-height="100" src="" bgcolor=#fff>iframe</body>"></iframe>
-  <iframe seamless data-expected-display="block" data-expected-height="100" src="" bgcolor=#fff>iframe</body>"></iframe>
+  <iframe data-expected-display="block" data-expected-height="100" src="" bgcolor=%23fff>iframe</body>"></iframe>
+  <iframe seamless data-expected-display="block" data-expected-height="100" src="" bgcolor=%23fff>iframe</body>"></iframe>
 </div>
 
 <div class="flexbox column" style="width:100px">
-  <iframe data-expected-display="block" data-expected-width="100" src="" bgcolor=#fff>iframe</body>"></iframe>
-  <iframe seamless data-expected-display="block" data-expected-width="100" src="" bgcolor=#fff>iframe</body>"></iframe>
+  <iframe data-expected-display="block" data-expected-width="100" src="" bgcolor=%23fff>iframe</body>"></iframe>
+  <iframe seamless data-expected-display="block" data-expected-width="100" src="" bgcolor=%23fff>iframe</body>"></iframe>
 </div>
 
 <div class="flexbox column" style="height:210px">
   <button data-expected-display="block" data-expected-width="600" data-expected-height="30">button</button>
   <canvas data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px">canvas</canvas>
-  <iframe data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=#fff>iframe</body>"></iframe>
-  <iframe seamless data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=#fff>iframe</body>"></iframe>
+  <iframe data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=%23fff>iframe</body>"></iframe>
+  <iframe seamless data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=%23fff>iframe</body>"></iframe>
   <object data-expected-display="block" data-expected-width="600" data-expected-height="30">object</object>
   <select data-expected-display="block" data-expected-width="600" data-expected-height="30">
     <option>select</option>

Modified: trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-002.html (267994 => 267995)


--- trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-002.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-002.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -22,7 +22,7 @@
         }
         #image {
             float: left;
-            -webkit-shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
+            -webkit-shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
         }
     </style>
 </head>
@@ -31,7 +31,7 @@
         The test passes if you see a solid green square. There should be no red.
     </p>
     <div id="test" class="container">
-        <img id="image" src=''/>
+        <img id="image" src=''/>
         X
         X
     </div>

Modified: trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-005.html (267994 => 267995)


--- trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-005.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/css3/shapes/shape-outside/shape-image/shape-image-005.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -22,7 +22,7 @@
         }
         #image {
             float: left;
-            -webkit-shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
+            -webkit-shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
             -webkit-shape-image-threshold: 0.8;
         }
     </style>
@@ -32,7 +32,7 @@
         The test passes if you see a solid green square. There should be no red.
     </p>
     <div id="test" class="container">
-        <img id="image" src=''/>
+        <img id="image" src=''/>
         X
         X
     </div>

Modified: trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html (267994 => 267995)


--- trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -15,7 +15,7 @@
 iframe.src = "" html>
 <button _onclick_="runTest()">1. Copy</button>
 <div><br></div>
-<div id="source" _oncopy_="copy(event)" contenteditable>http://webkit.org/b/&#x1F914;?x=8 + 6<</div>
+<div id="source" _oncopy_="copy(event)" contenteditable>http://webkit.org/b/&%23x1F914;?x=8 + 6<</div>
 <div id="destination" _onpaste_="paste(event)" contenteditable>2. Paste here</div>
 <script>
 

Modified: trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html (267994 => 267995)


--- trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -21,7 +21,7 @@
 document.getElementById('container').prepend(iframe);
 
 iframe.src = "" html>
-<div id="source" draggable="true" data-value="http://webkit.org/b/&#x1F914;?x=8 + 6">1. Drag this</div>
+<div id="source" draggable="true" data-value="http://webkit.org/b/&%23x1F914;?x=8 + 6">1. Drag this</div>
 <div id="destination" _onpaste_="paste(event)">2. Drop here</div>
 <script>
 

Modified: trunk/LayoutTests/fast/css/import-style-update.html (267994 => 267995)


--- trunk/LayoutTests/fast/css/import-style-update.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/css/import-style-update.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <head>
 <style>
-@import url("data:text/css,#test{display:none;}");
+@import url("data:text/css,%23test{display:none;}");
 </style>
 <script>
 if (window.testRunner)

Modified: trunk/LayoutTests/fast/css/link-media-attr.html (267994 => 267995)


--- trunk/LayoutTests/fast/css/link-media-attr.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/css/link-media-attr.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -2,7 +2,7 @@
 <html>
 <head>
 <meta charset="utf-8">
-<link id="link" rel="stylesheet" href="" media="print">
+<link id="link" rel="stylesheet" href="" media="print">
 <script src=""
 </head>
 <body>

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-item-display.html (267994 => 267995)


--- trunk/LayoutTests/fast/css-grid-layout/grid-item-display.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-item-display.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -43,8 +43,8 @@
         <!-- Elements with custom renderers. -->
         <button data-expected-display="block" data-offset-x="50" data-offset-y="150"></button>
         <canvas data-expected-display="block" data-offset-x="50" data-offset-y="150">canvas</canvas>
-        <iframe data-expected-display="block" data-offset-x="50" data-offset-y="150" src="" bgcolor=#fff>iframe</body>"></iframe>
-        <iframe seamless data-expected-display="block" data-offset-x="50" data-offset-y="150" src="" bgcolor=#fff>iframe</body>"></iframe>
+        <iframe data-expected-display="block" data-offset-x="50" data-offset-y="150" src="" bgcolor=%23fff>iframe</body>"></iframe>
+        <iframe seamless data-expected-display="block" data-offset-x="50" data-offset-y="150" src="" bgcolor=%23fff>iframe</body>"></iframe>
         <object data-expected-display="block" data-offset-x="50" data-offset-y="150">object</object>
         <select data-expected-display="block" data-offset-x="50" data-offset-y="150">
             <option>select</option>

Modified: trunk/LayoutTests/fast/dom/HTMLLinkElement/link-stylesheet-media-type.html (267994 => 267995)


--- trunk/LayoutTests/fast/dom/HTMLLinkElement/link-stylesheet-media-type.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/dom/HTMLLinkElement/link-stylesheet-media-type.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<link rel=stylesheet href="" { width: 100px }" media="screen">
+<link rel=stylesheet href="" { width: 100px }" media="screen">
 <div id=result></div>
 <div id=test></div>
 <script>

Modified: trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html (267994 => 267995)


--- trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <html>
 <body _onload_="test()">
-<iframe src=''></iframe>
+<iframe src=''></iframe>
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();

Modified: trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context.html (267994 => 267995)


--- trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/events/attribute-listener-cloned-from-frameless-doc-context.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <html>
 <body _onload_="test()">
-<iframe src=''></iframe>
+<iframe src=''></iframe>
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();

Modified: trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html (267994 => 267995)


--- trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <html>
 <body _onload_="test()">
-<iframe src=''></iframe>
+<iframe src=''></iframe>
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();

Modified: trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context.html (267994 => 267995)


--- trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/events/attribute-listener-extracted-from-frameless-doc-context.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,6 +1,6 @@
 <html>
 <body _onload_="test()">
-<iframe src=''></iframe>
+<iframe src=''></iframe>
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();

Modified: trunk/LayoutTests/fast/hidpi/image-srcset-data-escaped-srcset.html (267994 => 267995)


--- trunk/LayoutTests/fast/hidpi/image-srcset-data-escaped-srcset.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/hidpi/image-srcset-data-escaped-srcset.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -13,6 +13,6 @@
 </head>
 <body id="body">
     <div>This test passes if the image below is not empty. It ensures that the srcset attribute support data URI schemes with escaped characters.</div>
-    <img id="foo" src="" srcset="data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='100'%20height='100'><linearGradient%20id='gradient'><stop%20offset='10%'%20stop-color='#F00'/><stop%20offset='90%'%20stop-color='#fcc'/></linearGradient><rect%20fill='url(#gradient)'%20x='0'%20y='0'%20width='100%'%20height='100%'/></svg> 2x">
+    <img id="foo" src="" srcset="data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='100'%20height='100'><linearGradient%20id='gradient'><stop%20offset='10%'%20stop-color='%23F00'/><stop%20offset='90%'%20stop-color='%23fcc'/></linearGradient><rect%20fill='url(%23gradient)'%20x='0'%20y='0'%20width='100%'%20height='100%'/></svg> 2x">
 </body>
 </html>

Modified: trunk/LayoutTests/fast/html/link-rel-stylesheet.html (267994 => 267995)


--- trunk/LayoutTests/fast/html/link-rel-stylesheet.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/html/link-rel-stylesheet.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -2,10 +2,10 @@
 <html>
 <head>
 <title>Test for importing styles via incorrect link element</title>
-<link type="text/css" href=""
-<link rel="stylesheet" href=""
-<link href=""
-<link type="text/css" rel="stylesheet" href=""
+<link type="text/css" href=""
+<link rel="stylesheet" href=""
+<link href=""
+<link type="text/css" rel="stylesheet" href=""
 </head>
 <body>
 <p id="one">This line should not have red background</p>

Modified: trunk/LayoutTests/fast/loader/data-url-encoding-html.html (267994 => 267995)


--- trunk/LayoutTests/fast/loader/data-url-encoding-html.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/loader/data-url-encoding-html.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -13,6 +13,6 @@
 }
 </script>
 <iframe src=""
-<iframe src="" foo='#'>\xF0\xD2\xCF\xD7\xC5\xD2\xCB\xC1</body>"></iframe>
+<iframe src="" foo='%23'>\xF0\xD2\xCF\xD7\xC5\xD2\xCB\xC1</body>"></iframe>
 <iframe src=""
 </body>

Modified: trunk/LayoutTests/fast/loader/data-url-encoding-svg.html (267994 => 267995)


--- trunk/LayoutTests/fast/loader/data-url-encoding-svg.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/loader/data-url-encoding-svg.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -17,6 +17,6 @@
 <p>Test that non-ASCII data: URLs are handled correctly.</p>
 <pre id=result></pre>
 <iframe src="" xmlns=%22http://www.w3.org/2000/svg%22 test='\xF0\xD2\xCF\xD7\xC5\xD2\xCB\xC1'></svg>"></iframe>
-<iframe src="" xmlns=%22http://www.w3.org/2000/svg%22 foo='#' test='\xF0\xD2\xCF\xD7\xC5\xD2\xCB\xC1'></svg>"></iframe>
-<iframe src="" xmlns=%22http://www.w3.org/2000/svg%22 foo='#' test='%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0'></svg>"></iframe>
+<iframe src="" xmlns=%22http://www.w3.org/2000/svg%22 foo='%23' test='\xF0\xD2\xCF\xD7\xC5\xD2\xCB\xC1'></svg>"></iframe>
+<iframe src="" xmlns=%22http://www.w3.org/2000/svg%22 foo='%23' test='%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0'></svg>"></iframe>
 </body>

Modified: trunk/LayoutTests/fast/spatial-navigation/resources/iframe.html (267994 => 267995)


--- trunk/LayoutTests/fast/spatial-navigation/resources/iframe.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/fast/spatial-navigation/resources/iframe.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -2,14 +2,14 @@
 <body>
   <iframe width='80%' height="70px" frameborder="0" src=""
   <body>
-    <a id='1' href=''>b</a>
-    <a id='2' href=''>c</a>
-    <a id='3' href=''>d</a>
-    <a id='4' href=''>e</a>
-    <a id='5' href=''>f</a>
-    <a id='6' href=''>g</a>
-    <a id='7' href=''>h</a>
-    <a id='8' href=''>i</a>
+    <a id='1' href=''>b</a>
+    <a id='2' href=''>c</a>
+    <a id='3' href=''>d</a>
+    <a id='4' href=''>e</a>
+    <a id='5' href=''>f</a>
+    <a id='6' href=''>g</a>
+    <a id='7' href=''>h</a>
+    <a id='8' href=''>i</a>
   </body>
  "></iframe>
 </body>

Modified: trunk/LayoutTests/http/tests/security/top-level-unique-origin.https.html (267994 => 267995)


--- trunk/LayoutTests/http/tests/security/top-level-unique-origin.https.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/http/tests/security/top-level-unique-origin.https.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -8,7 +8,7 @@
     function doTest()
     {
         if (window.location.hash === "") {
-            window.location = "data:text/html,<"+ "script>window.location = '" + window.location.href + "#' + window.isSecureContext;<" + "/script>"
+            window.location = "data:text/html,<"+ "script>window.location = '" + window.location.href + "%23' + window.isSecureContext;<" + "/script>"
             return;
         }
         _onload_ = () => {

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (267994 => 267995)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,3 +1,16 @@
+2020-10-05  Rob Buis  <rb...@igalia.com>
+
+        WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
+        https://bugs.webkit.org/show_bug.cgi?id=68089
+
+        Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.
+
+        Update improved test results.
+
+        * web-platform-tests/fetch/data-urls/processing.any-expected.txt:
+        * web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt:
+        * web-platform-tests/url/data-uri-fragment-expected.txt:
+
 2020-10-05  Sergio Villar Senin  <svil...@igalia.com>
 
         [css-flex] Fix expectations of a test which is actually passing

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any-expected.txt (267994 => 267995)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any-expected.txt	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any-expected.txt	2020-10-05 19:36:22 UTC (rev 267995)
@@ -7,7 +7,7 @@
 PASS "data:text/html"
 PASS "data:text/html    ;charset=x   "
 PASS "data:,"
-FAIL "data:,X#X" assert_array_equals: lengths differ, expected array [88] length 1, got object "88,35,88" length 3
+PASS "data:,X#X"
 PASS "data:,%FF"
 PASS "data:text/plain,X"
 PASS "data:text/plain ,X"

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt (267994 => 267995)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt	2020-10-05 19:36:22 UTC (rev 267995)
@@ -7,7 +7,7 @@
 PASS "data:text/html"
 PASS "data:text/html    ;charset=x   "
 PASS "data:,"
-FAIL "data:,X#X" assert_array_equals: lengths differ, expected array [88] length 1, got object "88,35,88" length 3
+PASS "data:,X#X"
 PASS "data:,%FF"
 PASS "data:text/plain,X"
 PASS "data:text/plain ,X"

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/data-uri-fragment-expected.txt (267994 => 267995)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/data-uri-fragment-expected.txt	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/data-uri-fragment-expected.txt	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,4 +1,4 @@
 
 
-FAIL Data URI parsing of fragments assert_equals: expected "<p id=\"foo\">This should be the only visible text.</p>" but got "<p id=\"foo\">This should be the only visible text.</p>#foo"
+PASS Data URI parsing of fragments
 

Modified: trunk/LayoutTests/platform/ios/css3/flexbox/flexitem-expected.txt (267994 => 267995)


--- trunk/LayoutTests/platform/ios/css3/flexbox/flexitem-expected.txt	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/platform/ios/css3/flexbox/flexitem-expected.txt	2020-10-05 19:36:22 UTC (rev 267995)
@@ -31,7 +31,7 @@
 <div class="flexbox" style="height:200px">
   <button data-expected-display="block" data-expected-width="100" data-expected-height="200">button</button>
   <canvas data-expected-display="block" data-expected-width="100" data-expected-height="200">canvas</canvas>
-  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=#fff&gt;iframe&lt;/body&gt;"></iframe>
+  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=%23fff&gt;iframe&lt;/body&gt;"></iframe>
   <object data-expected-display="block" data-expected-width="100" data-expected-height="200">object</object>
   <select data-expected-display="block" data-expected-width="100" data-expected-height="200">
     <option>select</option>

Modified: trunk/LayoutTests/platform/win/css3/flexbox/flexitem-expected.txt (267994 => 267995)


--- trunk/LayoutTests/platform/win/css3/flexbox/flexitem-expected.txt	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/platform/win/css3/flexbox/flexitem-expected.txt	2020-10-05 19:36:22 UTC (rev 267995)
@@ -10,8 +10,8 @@
 <div class="flexbox column" style="height:210px">
   <button data-expected-display="block" data-expected-width="600" data-expected-height="30">button</button>
   <canvas data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px">canvas</canvas>
-  <iframe data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=#fff&gt;iframe&lt;/body&gt;"></iframe>
-  <iframe seamless="" data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=#fff&gt;iframe&lt;/body&gt;"></iframe>
+  <iframe data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=%23fff&gt;iframe&lt;/body&gt;"></iframe>
+  <iframe seamless="" data-expected-display="block" data-expected-width="600" data-expected-height="30" style="height:30px" src="" bgcolor=%23fff&gt;iframe&lt;/body&gt;"></iframe>
   <object data-expected-display="block" data-expected-width="600" data-expected-height="30">object</object>
   <select data-expected-display="block" data-expected-width="600" data-expected-height="30">
     <option>select</option>
@@ -32,7 +32,7 @@
 <div class="flexbox" style="height:200px">
   <button data-expected-display="block" data-expected-width="100" data-expected-height="200">button</button>
   <canvas data-expected-display="block" data-expected-width="100" data-expected-height="200">canvas</canvas>
-  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=#fff&gt;iframe&lt;/body&gt;"></iframe>
+  <iframe data-expected-display="block" data-expected-width="100" data-expected-height="200" src="" bgcolor=%23fff&gt;iframe&lt;/body&gt;"></iframe>
   <object data-expected-display="block" data-expected-width="100" data-expected-height="200">object</object>
   <select data-expected-display="block" data-expected-width="100" data-expected-height="200">
     <option>select</option>

Modified: trunk/LayoutTests/security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html (267994 => 267995)


--- trunk/LayoutTests/security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -13,7 +13,7 @@
 if (window.internals && window.internals.settings)
     internals.settings.setAllowContentSecurityPolicySourceStarToMatchAnyProtocol(true);
 </script>
-<link rel="stylesheet" href="" #test { background-color: green !important; }">
+<link rel="stylesheet" href="" %23test { background-color: green !important; }">
 </head>
 <body>
 <p>This tests that loading a stylesheet with a data URL is allowed when the page has Content Security Policy &quot;style-src *&quot; and the WebKit setting AllowContentSecurityPolicySourceStarToMatchAnyProtocol is enabled. This test PASSED if you see a green square below. Otherwise, it FAILED.</p>

Modified: trunk/LayoutTests/svg/animations/css-animation-background-svg.html (267994 => 267995)


--- trunk/LayoutTests/svg/animations/css-animation-background-svg.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/svg/animations/css-animation-background-svg.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -9,7 +9,7 @@
                         from { opacity:0; } \
                         to { opacity:1; } \
                     } \
-                    #green { \
+                    %23green { \
                         animation: fadein 16ms; \
                     } \
                 %3C/style%3E \

Modified: trunk/LayoutTests/svg/animations/css-animation-embedded-svg.html (267994 => 267995)


--- trunk/LayoutTests/svg/animations/css-animation-embedded-svg.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/svg/animations/css-animation-embedded-svg.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -12,7 +12,7 @@
                     from { opacity:0; }
                     to { opacity:1; }
                 }
-                #green { 
+                %23green { 
                     animation: fadein 16ms;
                 }
             </style>

Modified: trunk/LayoutTests/svg/animations/css-animation-hover-svg.html (267994 => 267995)


--- trunk/LayoutTests/svg/animations/css-animation-hover-svg.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/svg/animations/css-animation-hover-svg.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -12,7 +12,7 @@
                         from { opacity:0; } \
                         to { opacity:1; } \
                     } \
-                    #green { \
+                    %23green { \
                         animation: fadein 16ms; \
                     } \
                 %3C/style%3E \

Modified: trunk/LayoutTests/svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html (267994 => 267995)


--- trunk/LayoutTests/svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -23,7 +23,7 @@
                 + '            </feImage>'
                 + '        </filter>'
                 + '    </defs>'
-                + '    <rect width="100%" height="100%" style="filter:url(#image);"/>'
+                + '    <rect width="100%" height="100%" style="filter:url(%23image);"/>'
                 + '</svg>';
 
         var svg = new Image();

Modified: trunk/LayoutTests/svg/custom/object-data-href.html (267994 => 267995)


--- trunk/LayoutTests/svg/custom/object-data-href.html	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/LayoutTests/svg/custom/object-data-href.html	2020-10-05 19:36:22 UTC (rev 267995)
@@ -7,7 +7,7 @@
       <defs>
         <rect id='rect' width='100' height='100' fill='green'/>
       </defs>
-      <use xlink:href=''/>
+      <use xlink:href=''/>
     </svg>
   "></object>
 </body>

Modified: trunk/Source/WTF/ChangeLog (267994 => 267995)


--- trunk/Source/WTF/ChangeLog	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WTF/ChangeLog	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,3 +1,13 @@
+2020-10-05  Rob Buis  <rb...@igalia.com>
+
+        WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
+        https://bugs.webkit.org/show_bug.cgi?id=68089
+
+        Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.
+
+        * wtf/URL.h:
+        * wtf/spi/darwin/dyldSPI.h:
+
 2020-10-05  Aditya Keerthi  <akeer...@apple.com>
 
         [Contact Picker API] Introduce bindings for the Contact Picker API

Modified: trunk/Source/WTF/wtf/URL.h (267994 => 267995)


--- trunk/Source/WTF/wtf/URL.h	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WTF/wtf/URL.h	2020-10-05 19:36:22 UTC (rev 267995)
@@ -107,7 +107,7 @@
     WTF_EXPORT_PRIVATE StringView queryWithLeadingQuestionMark() const;
     WTF_EXPORT_PRIVATE StringView fragmentIdentifierWithLeadingNumberSign() const;
     WTF_EXPORT_PRIVATE StringView stringWithoutQueryOrFragmentIdentifier() const;
-    StringView stringWithoutFragmentIdentifier() const;
+    WTF_EXPORT_PRIVATE StringView stringWithoutFragmentIdentifier() const;
 
     WTF_EXPORT_PRIVATE String protocolHostAndPort() const;
     WTF_EXPORT_PRIVATE String hostAndPort() const;

Modified: trunk/Source/WTF/wtf/spi/darwin/dyldSPI.h (267994 => 267995)


--- trunk/Source/WTF/wtf/spi/darwin/dyldSPI.h	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WTF/wtf/spi/darwin/dyldSPI.h	2020-10-05 19:36:22 UTC (rev 267995)
@@ -61,6 +61,10 @@
 #define DYLD_IOS_VERSION_14_0 0x000E0000
 #endif
 
+#ifndef DYLD_IOS_VERSION_14_5
+#define DYLD_IOS_VERSION_14_5 0x000E0500
+#endif
+
 #ifndef DYLD_MACOSX_VERSION_10_13
 #define DYLD_MACOSX_VERSION_10_13 0x000A0D00
 #endif
@@ -85,6 +89,10 @@
 #define DYLD_MACOSX_VERSION_10_16 0x000A1000
 #endif
 
+#ifndef DYLD_MACOSX_VERSION_11_3
+#define DYLD_MACOSX_VERSION_11_3 0x000B0300
+#endif
+
 #else
 
 #define DYLD_IOS_VERSION_3_0 0x00030000
@@ -102,6 +110,7 @@
 #define DYLD_IOS_VERSION_13_2 0x000D0200
 #define DYLD_IOS_VERSION_13_4 0x000D0400
 #define DYLD_IOS_VERSION_14_0 0x000E0000
+#define DYLD_IOS_VERSION_14_5 0x000E0500
 
 #define DYLD_MACOSX_VERSION_10_11 0x000A0B00
 #define DYLD_MACOSX_VERSION_10_12 0x000A0C00
@@ -111,6 +120,7 @@
 #define DYLD_MACOSX_VERSION_10_15_1 0x000A0F01
 #define DYLD_MACOSX_VERSION_10_15_4 0x000A0F04
 #define DYLD_MACOSX_VERSION_10_16 0x000A1000
+#define DYLD_MACOSX_VERSION_11_3 0x000B0300
 
 #endif
 

Modified: trunk/Source/WebCore/ChangeLog (267994 => 267995)


--- trunk/Source/WebCore/ChangeLog	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WebCore/ChangeLog	2020-10-05 19:36:22 UTC (rev 267995)
@@ -1,3 +1,20 @@
+2020-10-05  Rob Buis  <rb...@igalia.com>
+
+        WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
+        https://bugs.webkit.org/show_bug.cgi?id=68089
+
+        Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.
+
+        To maintain compatibility with existing iOS and macOS apps, we only do this for apps linked
+        with the SDK after the change.
+
+        Covered by newly passing web platform tests (which Chrome and Firefox already passed).
+
+        * loader/ResourceLoader.cpp:
+        (WebCore::shouldStripFragmentIdentifier):
+        (WebCore::ResourceLoader::loadDataURL):
+        * platform/cocoa/VersionChecks.h:
+
 2020-10-05  Aditya Keerthi  <akeer...@apple.com>
 
         [Contact Picker API] Introduce bindings for the Contact Picker API

Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (267994 => 267995)


--- trunk/Source/WebCore/loader/ResourceLoader.cpp	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp	2020-10-05 19:36:22 UTC (rev 267995)
@@ -54,6 +54,10 @@
 #include <wtf/CompletionHandler.h>
 #include <wtf/Ref.h>
 
+#if PLATFORM(COCOA)
+#include "VersionChecks.h"
+#endif
+
 #if ENABLE(CONTENT_EXTENSIONS)
 #include "UserContentController.h"
 #endif
@@ -248,6 +252,15 @@
     return &m_frame->loader();
 }
 
+static bool shouldStripFragmentIdentifier()
+{
+#if PLATFORM(COCOA)
+    return linkedOnOrAfter(SDKVersion::FirstWithDataURLFragmentRemoval);
+#else
+    return true;
+#endif
+}
+
 void ResourceLoader::loadDataURL()
 {
     auto url = ""
@@ -261,6 +274,8 @@
     auto mode = DataURLDecoder::Mode::Legacy;
     if (m_request.requester() == ResourceRequest::Requester::Fetch)
         mode = DataURLDecoder::Mode::ForgivingBase64;
+    if (shouldStripFragmentIdentifier())
+        url.removeFragmentIdentifier();
     DataURLDecoder::decode(url, scheduleContext, mode, [this, protectedThis = makeRef(*this), url](auto decodeResult) mutable {
         if (this->reachedTerminalState())
             return;

Modified: trunk/Source/WebCore/platform/cocoa/VersionChecks.h (267994 => 267995)


--- trunk/Source/WebCore/platform/cocoa/VersionChecks.h	2020-10-05 19:31:37 UTC (rev 267994)
+++ trunk/Source/WebCore/platform/cocoa/VersionChecks.h	2020-10-05 19:36:22 UTC (rev 267995)
@@ -64,6 +64,7 @@
     FirstWithInitializeWebKit2MainThreadAssertion = DYLD_IOS_VERSION_14_0,
     FirstWithWKWebsiteDataStoreInitReturningNil = DYLD_IOS_VERSION_14_0,
     FirstVersionWithiOSAppsOnMacOS = DYLD_IOS_VERSION_FIRST_WITH_IOS_APPS_ON_MACOS,
+    FirstWithDataURLFragmentRemoval = DYLD_IOS_VERSION_14_5,
 #elif PLATFORM(MAC)
     FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11,
     FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13,
@@ -79,6 +80,7 @@
     FirstWithSessionCleanupByDefault = DYLD_MACOSX_VERSION_10_16,
     FirstWithInitializeWebKit2MainThreadAssertion = DYLD_MACOSX_VERSION_10_16,
     FirstWithWKWebsiteDataStoreInitReturningNil = DYLD_MACOSX_VERSION_10_16,
+    FirstWithDataURLFragmentRemoval = DYLD_MACOSX_VERSION_11_3,
 #endif
 };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to