Blob and File serialization steps drop the type attribute (all engines keep it; WPT asserts it)
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 74/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- html, javascript
- 領域
- web-dev
調査の方向性
Read the Blob and File serialization and deserialization sections in the File API specification, then inspect WPT's compare_Blob in html/webappapis/structured-clone/structured-clone-battery-of-tests.js. Update the four algorithms to preserve type and verify the structured-clone, postMessage, and IndexedDB cases pass.
索引モデルが issue の本文から書いたものです。
説明
The serialization and deserialization steps for Blob and File don't carry the type attribute, but every engine keeps it and WPT asserts it.
What the spec says
Blob's serialization steps set serialized.[[SnapshotState]] and serialized.[[ByteSequence]], and the deserialization steps restore only those two. File's steps add [[Name]] and [[LastModified]]. None of the four algorithms mentions type, so read literally:
structuredClone(new Blob(["x"], { type: "text/plain" })).type // "" by the spec text
structuredClone(new File(["x"], "a.txt", { type: "text/plain" })).type // "" by the spec text
The same holds for postMessage, history.pushState, and IndexedDB's StructuredSerializeForStorage.
What engines do
All three keep the type ("text/plain" above):
- Blink:
V8ScriptValueSerializer::WriteDOMObjectwrites the blob's uuid, type and size (kBlobTag), and File's type with its other fields. - WebKit:
SerializedScriptValue.cpp:CloneSerializerwritesblob->type()after the URL (BlobTag) andfile.type()(FileTag), andreadFilepasses the type toFile::deserialize. - Gecko:
StructuredCloneHolder.cpp:WriteBlobkeeps a reference to theBlobImpl(which holds the content type), andReadBlobwraps the same impl, so the type carries over.
Tests
WPT's compare_Blob (html/webappapis/structured-clone/structured-clone-battery-of-tests.js) asserts actual.type === input.type for every cloned Blob and File, across the structured-clone, postMessage and IndexedDB variants.
Proposal
- Blob serialization steps: add "Set
serialized.[[Type]]to the value ofvalue'stypeattribute." - Blob deserialization steps: add "Initialize the value of
value'stypeattribute toserialized.[[Type]]." - File serialization and deserialization steps: the same two steps.
Possibly related: #98 (whether a clone copies or references the data), which doesn't cover type.
Found while implementing structured serialization for Blob and File in Crane, a web platform engine, which keeps the type as the engines do.
- 主要言語
- HTML
- スター
- 118
- フォーク
- 52
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
w3c/FileAPI のほかの issue
-
TPAC2026
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
似ている issue
-
[Bug] Logo style setting missing and `classic` style not applied across multiple platforms (v3.1.0)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Stirling-Tools/Stirling-PDF#8382 · リアクション 1 件 ·
メンテナーはふだん 2 日以内に返信
-
dev experience frontend good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
cuttle-cards/cuttle#1403 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
-
bug priority:medium ready-for-dev
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
bug escritorio mapa
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
marcosferr/reporte-ciudadano#4 · コメント 1 件 ·