[webkit-changes] [WebKit/WebKit] 664fe9: Introduce StructuredSerializeInternal forStorage p...

youennf noreply at github.com
Thu Oct 20 09:39:11 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 664fe9493a72508a29a3e6a3018bd55d4fca8985
      https://github.com/WebKit/WebKit/commit/664fe9493a72508a29a3e6a3018bd55d4fca8985
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2022-10-20 (Thu, 20 Oct 2022)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/chunk-serialization.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/chunk-serialization.any.js
    M Source/WebCore/Modules/indexeddb/IDBCursor.cpp
    M Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp
    M Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp
    M Source/WebCore/bindings/js/JSDOMConvertSerializedScriptValue.h
    M Source/WebCore/bindings/js/JSDOMWrapper.cpp
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp
    M Source/WebCore/bindings/js/SerializedScriptValue.h
    M Source/WebCore/dom/ErrorEvent.cpp
    M Source/WebCore/dom/PopStateEvent.cpp
    M Source/WebCore/page/DOMWindow.cpp
    M Source/WebCore/page/WindowOrWorkerGlobalScope.cpp
    M Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp
    M Source/WebCore/workers/Worker.cpp
    M Source/WebCore/workers/service/ExtendableMessageEvent.cpp
    M Source/WebCore/workers/service/ServiceWorker.cpp
    M Source/WebCore/workers/service/ServiceWorkerClient.cpp

  Log Message:
  -----------
  Introduce StructuredSerializeInternal forStorage parameter
https://bugs.webkit.org/show_bug.cgi?id=246744
rdar://problem/101367447

Reviewed by Alex Christensen.

We introduce a SerializationForStorage (No/Yes) parameter to SerializedScriptValue::create.
This allows to throw in case we are serializing objects that are serializable but are throwing for forStorage=yes cases.
Make use of SerializationForStorage parameter for WebCodecsEncodedVideoChunk as per https://w3c.github.io/webcodecs/#encodedvideochunk-serialization.

The default is SerializationForStorage = No.
We set SerializationForStorage = Yes for IDB and IDLSerializedScriptValue, which is used for History pushState.
Both IDB and History.pushState are using https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeforstorage.

Covered by added tests.

* LayoutTests/imported/w3c/web-platform-tests/webcodecs/chunk-serialization.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/chunk-serialization.any.js:
(test):
* Source/WebCore/Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::update):
* Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::putOrAdd):
* Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:
(WebCore::AudioWorkletNode::create):
* Source/WebCore/bindings/js/JSDOMConvertSerializedScriptValue.h:
(WebCore::Converter<IDLSerializedScriptValue<T>>::convert):
* Source/WebCore/bindings/js/JSDOMWrapper.cpp:
(WebCore::cloneAcrossWorlds):
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::SerializedScriptValue::create):
* Source/WebCore/bindings/js/SerializedScriptValue.h:
(WebCore::SerializedScriptValue::convert):
* Source/WebCore/dom/ErrorEvent.cpp:
(WebCore::ErrorEvent::trySerializeError):
* Source/WebCore/dom/PopStateEvent.cpp:
(WebCore::PopStateEvent::trySerializeState):
* Source/WebCore/page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):
* Source/WebCore/page/WindowOrWorkerGlobalScope.cpp:
(WebCore::WindowOrWorkerGlobalScope::structuredClone):
* Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::postMessage):
* Source/WebCore/workers/Worker.cpp:
(WebCore::Worker::postMessage):
* Source/WebCore/workers/service/ExtendableMessageEvent.cpp:
(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):
* Source/WebCore/workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::postMessage):
* Source/WebCore/workers/service/ServiceWorkerClient.cpp:
(WebCore::ServiceWorkerClient::postMessage):

Canonical link: https://commits.webkit.org/255788@main




More information about the webkit-changes mailing list