<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[279706] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/279706">279706</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2021-07-07 19:19:19 -0700 (Wed, 07 Jul 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Our structured cloning implementation does not encode all of RegExp's flags
https://bugs.webkit.org/show_bug.cgi?id=227779

Reviewed by Yusuke Suzuki.

LayoutTests/imported/w3c:

Rebaseline WPT test.

* web-platform-tests/IndexedDB/structured-clone.any-expected.txt:

Source/WebCore:

Our structured cloning implementation does not encode all of RegExp's flags.
In particular, we are failing to encode the 'y', 'u', 's' and 'd' flags.

This is causing one of the checks to fail in WebKit on:
- http://wpt.live/IndexedDB/structured-clone.any.html?61-80

That subtest is passing in Firefox and Chrome.

Test: fast/dom/Window/post-message-regexp.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):

LayoutTests:

Add layout test coverage.

* fast/dom/Window/post-message-regexp-expected.txt: Added.
* fast/dom/Window/post-message-regexp.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBstructuredcloneanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatamessagechannelanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatamessagechannelanyworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatawindowpostmessagewindowexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsworkerssemanticsstructuredclonededicatedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/workers/semantics/structured-clone/dedicated-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomWindowpostmessageregexpexpectedtxt">trunk/LayoutTests/fast/dom/Window/post-message-regexp-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowpostmessageregexphtml">trunk/LayoutTests/fast/dom/Window/post-message-regexp.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog      2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/ChangeLog 2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2021-07-07  Chris Dumez  <cdumez@apple.com>
+
+        Our structured cloning implementation does not encode all of RegExp's flags
+        https://bugs.webkit.org/show_bug.cgi?id=227779
+
+        Reviewed by Yusuke Suzuki.
+
+        Add layout test coverage.
+
+        * fast/dom/Window/post-message-regexp-expected.txt: Added.
+        * fast/dom/Window/post-message-regexp.html: Added.
+
</ins><span class="cx"> 2021-07-07  Alex Christensen  <achristensen@webkit.org>
</span><span class="cx"> 
</span><span class="cx">         Only first set-cookie HTTP header in websocket http response is accepted
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowpostmessageregexpexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/Window/post-message-regexp-expected.txt (0 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/post-message-regexp-expected.txt                               (rev 0)
+++ trunk/LayoutTests/fast/dom/Window/post-message-regexp-expected.txt  2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+Tests that our structured clone algorithm properly encodes all JS RegExp flags.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS event.data.toString() is "/(?:)/"
+PASS event.data.toString() is "/abc/"
+PASS event.data.toString() is "/abc/g"
+PASS event.data.toString() is "/abc/i"
+PASS event.data.toString() is "/abc/gi"
+PASS event.data.toString() is "/abc/m"
+PASS event.data.toString() is "/abc/gm"
+PASS event.data.toString() is "/abc/im"
+PASS event.data.toString() is "/abc/gim"
+PASS event.data.toString() is "/abc/s"
+PASS event.data.toString() is "/abc/u"
+PASS event.data.toString() is "/abc/y"
+PASS event.data.toString() is "/abc/d"
+PASS event.data.toString() is "/abc/gimsuy"
+PASS event.data.toString() is "/abc/dgimsuy"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowpostmessageregexphtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/Window/post-message-regexp.html (0 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/post-message-regexp.html                               (rev 0)
+++ trunk/LayoutTests/fast/dom/Window/post-message-regexp.html  2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<body>
+<script src="../../../resources/js-test.js"></script>
+<script>
+description("Tests that our structured clone algorithm properly encodes all JS RegExp flags.");
+jsTestIsAsync = true;
+
+var tests = [
+  new RegExp(),
+  /abc/,
+  /abc/g,
+  /abc/i,
+  /abc/gi,
+  /abc/m,
+  /abc/mg,
+  /abc/mi,
+  /abc/mgi,
+  /abc/s,
+  /abc/u,
+  /abc/y,
+  /abc/d,
+  /abc/gimsuy,
+  /abc/gimsuyd,
+];
+
+let currentTest = 0;
+onmessage = (_event) => {
+    event = _event;
+    shouldBeEqualToString("event.data.toString()", "" + tests[currentTest++].toString());
+    if (currentTest >= tests.length)
+        finishJSTest();
+};
+
+for (let test of tests)
+    postMessage(test);
+</script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -1,5 +1,16 @@
</span><span class="cx"> 2021-07-07  Chris Dumez  <cdumez@apple.com>
</span><span class="cx"> 
</span><ins>+        Our structured cloning implementation does not encode all of RegExp's flags
+        https://bugs.webkit.org/show_bug.cgi?id=227779
+
+        Reviewed by Yusuke Suzuki.
+
+        Rebaseline WPT test.
+
+        * web-platform-tests/IndexedDB/structured-clone.any-expected.txt:
+
+2021-07-07  Chris Dumez  <cdumez@apple.com>
+
</ins><span class="cx">         [WebCrypto] Support Elliptic Curve P-521 on Mac
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=216755
</span><span class="cx">         <rdar://problem/69667220>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBstructuredcloneanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any-expected.txt (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any-expected.txt    2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any-expected.txt       2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -1,5 +1,123 @@
</span><del>-CONSOLE MESSAGE: SyntaxError: No identifiers allowed directly after numeric literal
</del><span class="cx"> 
</span><del>-Harness Error (FAIL), message = SyntaxError: No identifiers allowed directly after numeric literal
</del><ins>+Harness Error (TIMEOUT), message = null
</ins><span class="cx"> 
</span><ins>+PASS undefined: undefined
+PASS object: null
+PASS boolean: false
+PASS boolean: true
+PASS number: NaN
+PASS number: -Infinity
+PASS number: -1.7976931348623157e+308
+PASS number: -4294967295
+PASS number: -2147483648
+PASS number: -2147483647
+PASS number: -1
+PASS number: -5e-324
+PASS number: -0
+PASS number: 0
+PASS number: 1
+PASS number: 5e-324
+PASS number: 2147483647
+PASS number: 2147483648
+PASS number: 4294967295
+PASS number: 1.7976931348623157e+308
+PASS number: Infinity
+PASS bigint: -12345678901234567890
+PASS bigint: -1
+PASS bigint: 0
+PASS bigint: 1
+PASS bigint: 12345678901234567890
+PASS string:
+PASS string: this is a sample string
+PASS string: null(\0)
+PASS Boolean: false
+PASS Boolean: true
+PASS Number: NaN
+PASS Number: -Infinity
+PASS Number: -1.7976931348623157e+308
+PASS Number: -4294967295
+PASS Number: -2147483648
+PASS Number: -2147483647
+PASS Number: -1
+PASS Number: -5e-324
+PASS Number: -0
+PASS Number: 0
+PASS Number: 1
+PASS Number: 5e-324
+PASS Number: 2147483647
+PASS Number: 2147483648
+PASS Number: 4294967295
+PASS Number: 1.7976931348623157e+308
+PASS Number: Infinity
+PASS String:
+PASS String: this is a sample string
+PASS String: null(\0)
+PASS Date: Sun Feb 09 1653 22:20:22 GMT-0752 (PST)
+PASS Date: Sun Apr 24 1938 14:13:20 GMT-0800 (PST)
+PASS Date: Sat Dec 20 1969 02:13:20 GMT-0800 (PST)
+PASS Date: Wed Dec 31 1969 15:43:20 GMT-0800 (PST)
+PASS Date: Wed Dec 31 1969 15:59:59 GMT-0800 (PST)
+PASS Date: Wed Dec 31 1969 16:00:00 GMT-0800 (PST)
+PASS Date: Wed Dec 31 1969 16:00:01 GMT-0800 (PST)
+PASS Date: Wed Dec 31 1969 16:16:40 GMT-0800 (PST)
+PASS Date: Mon Jan 12 1970 05:46:40 GMT-0800 (PST)
+PASS Date: Sat Sep 08 2001 18:46:40 GMT-0700 (PDT)
+PASS Date: Sat Nov 20 2286 09:46:40 GMT-0800 (PST)
+PASS RegExp: /(?:)/
+PASS RegExp: /abc/
+PASS RegExp: /abc/g
+PASS RegExp: /abc/i
+PASS RegExp: /abc/gi
+PASS RegExp: /abc/m
+PASS RegExp: /abc/gm
+PASS RegExp: /abc/im
+PASS RegExp: /abc/gim
+PASS RegExp: /abc/gimsuy
+PASS ArrayBuffer: [object ArrayBuffer]
+PASS Uint8Array:
+PASS Uint8Array: 0,1,254,255
+PASS Uint16Array: 0,1,65534,65535
+PASS Uint32Array: 0,1,4294967294,4294967295
+PASS Int8Array: 0,1,-2,-1
+PASS Int16Array: 0,1,-2,-1
+PASS Int32Array: 0,1,-2,-1
+PASS Uint8ClampedArray: 0,1,254,255
+PASS Float32Array: -Infinity,-1.5,-1,-0.5,0,0.5,1,1.5,Infinity,NaN
+PASS Float64Array: -Infinity,-1.7976931348623157e+308,-5e-324,0,5e-324,1.7976931348623157e+308,Infinity,NaN
+PASS Map: [object Map]
+PASS Set: [object Set]
+FAIL Error: Error promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL Error: Error: abc promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL EvalError: EvalError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL EvalError: EvalError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL RangeError: RangeError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL RangeError: RangeError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL ReferenceError: ReferenceError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL ReferenceError: ReferenceError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL SyntaxError: SyntaxError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL SyntaxError: SyntaxError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL TypeError: TypeError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL TypeError: TypeError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL URIError: URIError promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+FAIL URIError: URIError: ghi promise_test: Unhandled rejection with value: object "DataCloneError: The object can not be cloned."
+PASS Array:
+PASS Array: 1,2,3
+PASS Array: foo,bar,,,,,,,,,true,false,,,,,,,,,123,456,,,,,,,,,
+PASS Array: foo,bar
+PASS Object: [object Object]
+PASS DOMMatrix: matrix(1, 0, 0, 1, 0, 0)
+PASS DOMMatrixReadOnly: matrix(1, 0, 0, 1, 0, 0)
+PASS DOMPoint: [object DOMPoint]
+PASS DOMPointReadOnly: [object DOMPointReadOnly]
+PASS DOMRect: [object DOMRect]
+PASS DOMRectReadOnly: [object DOMRectReadOnly]
+PASS ImageData: [object ImageData]
+TIMEOUT Blob: [object Blob] Test timed out
+NOTRUN File: [object File]
+NOTRUN FileList: [object FileList]
+NOTRUN Not serializable: function: function () {}
+NOTRUN Not serializable: symbol: Symbol(desc)
+NOTRUN Not serializable: Window: [object Window]
+NOTRUN Not serializable: Event: [object Event]
+NOTRUN Not serializable: MessageChannel: [object MessageChannel]
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatamessagechannelanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any-expected.txt (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any-expected.txt    2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any-expected.txt       2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -55,20 +55,20 @@
</span><span class="cx"> PASS Array Date objects
</span><span class="cx"> PASS Object Date objects
</span><span class="cx"> PASS RegExp flags and lastIndex
</span><del>-FAIL RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS RegExp sticky flag
+PASS RegExp unicode flag
</ins><span class="cx"> PASS RegExp empty
</span><span class="cx"> PASS RegExp slash
</span><span class="cx"> PASS RegExp new line
</span><span class="cx"> PASS Array RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Array RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Array RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Array RegExp object, RegExp sticky flag
+PASS Array RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Array RegExp object, RegExp empty
</span><span class="cx"> PASS Array RegExp object, RegExp slash
</span><span class="cx"> PASS Array RegExp object, RegExp new line
</span><span class="cx"> PASS Object RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Object RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Object RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Object RegExp object, RegExp sticky flag
+PASS Object RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Object RegExp object, RegExp empty
</span><span class="cx"> PASS Object RegExp object, RegExp slash
</span><span class="cx"> PASS Object RegExp object, RegExp new line
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatamessagechannelanyworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.worker-expected.txt (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.worker-expected.txt     2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.worker-expected.txt        2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -55,20 +55,20 @@
</span><span class="cx"> PASS Array Date objects
</span><span class="cx"> PASS Object Date objects
</span><span class="cx"> PASS RegExp flags and lastIndex
</span><del>-FAIL RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS RegExp sticky flag
+PASS RegExp unicode flag
</ins><span class="cx"> PASS RegExp empty
</span><span class="cx"> PASS RegExp slash
</span><span class="cx"> PASS RegExp new line
</span><span class="cx"> PASS Array RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Array RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Array RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Array RegExp object, RegExp sticky flag
+PASS Array RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Array RegExp object, RegExp empty
</span><span class="cx"> PASS Array RegExp object, RegExp slash
</span><span class="cx"> PASS Array RegExp object, RegExp new line
</span><span class="cx"> PASS Object RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Object RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Object RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Object RegExp object, RegExp sticky flag
+PASS Object RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Object RegExp object, RegExp empty
</span><span class="cx"> PASS Object RegExp object, RegExp slash
</span><span class="cx"> PASS Object RegExp object, RegExp new line
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlinfrastructuresafepassingofstructureddatawindowpostmessagewindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window-expected.txt (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window-expected.txt     2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window-expected.txt        2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -55,20 +55,20 @@
</span><span class="cx"> PASS Array Date objects
</span><span class="cx"> PASS Object Date objects
</span><span class="cx"> PASS RegExp flags and lastIndex
</span><del>-FAIL RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS RegExp sticky flag
+PASS RegExp unicode flag
</ins><span class="cx"> PASS RegExp empty
</span><span class="cx"> PASS RegExp slash
</span><span class="cx"> PASS RegExp new line
</span><span class="cx"> PASS Array RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Array RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Array RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Array RegExp object, RegExp sticky flag
+PASS Array RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Array RegExp object, RegExp empty
</span><span class="cx"> PASS Array RegExp object, RegExp slash
</span><span class="cx"> PASS Array RegExp object, RegExp new line
</span><span class="cx"> PASS Object RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Object RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Object RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Object RegExp object, RegExp sticky flag
+PASS Object RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Object RegExp object, RegExp empty
</span><span class="cx"> PASS Object RegExp object, RegExp slash
</span><span class="cx"> PASS Object RegExp object, RegExp new line
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsworkerssemanticsstructuredclonededicatedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/workers/semantics/structured-clone/dedicated-expected.txt (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/workers/semantics/structured-clone/dedicated-expected.txt      2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/workers/semantics/structured-clone/dedicated-expected.txt 2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -55,20 +55,20 @@
</span><span class="cx"> PASS Array Date objects
</span><span class="cx"> PASS Object Date objects
</span><span class="cx"> PASS RegExp flags and lastIndex
</span><del>-FAIL RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS RegExp sticky flag
+PASS RegExp unicode flag
</ins><span class="cx"> PASS RegExp empty
</span><span class="cx"> PASS RegExp slash
</span><span class="cx"> PASS RegExp new line
</span><span class="cx"> PASS Array RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Array RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Array RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Array RegExp object, RegExp sticky flag
+PASS Array RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Array RegExp object, RegExp empty
</span><span class="cx"> PASS Array RegExp object, RegExp slash
</span><span class="cx"> PASS Array RegExp object, RegExp new line
</span><span class="cx"> PASS Object RegExp object, RegExp flags and lastIndex
</span><del>-FAIL Object RegExp object, RegExp sticky flag assert_equals: sticky expected true but got false
-FAIL Object RegExp object, RegExp unicode flag assert_equals: unicode expected true but got false
</del><ins>+PASS Object RegExp object, RegExp sticky flag
+PASS Object RegExp object, RegExp unicode flag
</ins><span class="cx"> PASS Object RegExp object, RegExp empty
</span><span class="cx"> PASS Object RegExp object, RegExp slash
</span><span class="cx"> PASS Object RegExp object, RegExp new line
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/Source/WebCore/ChangeLog      2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2021-07-07  Chris Dumez  <cdumez@apple.com>
+
+        Our structured cloning implementation does not encode all of RegExp's flags
+        https://bugs.webkit.org/show_bug.cgi?id=227779
+
+        Reviewed by Yusuke Suzuki.
+
+        Our structured cloning implementation does not encode all of RegExp's flags.
+        In particular, we are failing to encode the 'y', 'u', 's' and 'd' flags.
+
+        This is causing one of the checks to fail in WebKit on:
+        - http://wpt.live/IndexedDB/structured-clone.any.html?61-80
+
+        That subtest is passing in Firefox and Chrome.
+
+        Test: fast/dom/Window/post-message-regexp.html
+
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::CloneSerializer::dumpIfTerminal):
+
</ins><span class="cx"> 2021-07-07  Alan Bujtas  <zalan@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [LFC][IFC] Add support for partially trimmed trailing whitespace
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (279705 => 279706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp       2021-07-08 01:46:07 UTC (rev 279705)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp  2021-07-08 02:19:19 UTC (rev 279706)
</span><span class="lines">@@ -1240,7 +1240,7 @@
</span><span class="cx">                 return true;
</span><span class="cx">             }
</span><span class="cx">             if (auto* regExp = jsDynamicCast<RegExpObject*>(vm, obj)) {
</span><del>-                char flags[3];
</del><ins>+                char flags[7];
</ins><span class="cx">                 int flagCount = 0;
</span><span class="cx">                 if (regExp->regExp()->global())
</span><span class="cx">                     flags[flagCount++] = 'g';
</span><span class="lines">@@ -1248,6 +1248,14 @@
</span><span class="cx">                     flags[flagCount++] = 'i';
</span><span class="cx">                 if (regExp->regExp()->multiline())
</span><span class="cx">                     flags[flagCount++] = 'm';
</span><ins>+                if (regExp->regExp()->dotAll())
+                    flags[flagCount++] = 's';
+                if (regExp->regExp()->unicode())
+                    flags[flagCount++] = 'u';
+                if (regExp->regExp()->sticky())
+                    flags[flagCount++] = 'y';
+                if (regExp->regExp()->hasIndices())
+                    flags[flagCount++] = 'd';
</ins><span class="cx">                 write(RegExpTag);
</span><span class="cx">                 write(regExp->regExp()->pattern());
</span><span class="cx">                 write(String(flags, flagCount));
</span></span></pre>
</div>
</div>

</body>
</html>