* 仕様書

[REFS[
- [1]
[CITE@en-US[Push API]], [TIME[2020-02-04 16:21:34 +09:00]] <https://w3c.github.io/push-api/#pushmessagedata-interface>
]REFS]

* [CODE[PushMessageData]]

[2] [CODE[PushMessageData]] [[インターフェイス]]では、
[[プッシュメッセージ]]のデータにアクセスできます。
[[メソッド]]がすべて [CODE[Promise]] ではなく値自体を返すことに注意が必要です。

[22] [[仕様書]]の規定はどうにも [CODE[null]] の場合の処理が怪しいです。

[3] [CODE[PushMessageData]] は、
[DFN[[F[[RUBYB[[[バイト群]]][bytes]]][byets (PushMessageData)]]]]
を持ちます。
値は[[バイト列]]で、作成時に設定されます。
[[プッシュメッセージ]]がデータを持たない場合、
値は [CODE[null]] です。
[SRC[>>1]]

[4] [CODE[PushMessageData]] [[インターフェイス]]の
[DFN[[CODE[arrayBuffer]]]]
[[メソッド]]は、
次のようにしなければ[MUST[なりません]]。
[SRC[>>1]]

[FIG(steps)[
= [5] [VAR[配列]]を、
[[文脈オブジェクト]]の[F[バイト群]]の [CODE[ArrayBuffer]]
を作成した結果に設定します。
[[例外]]は[[再び投げ]]ます。
= [6] [VAR[配列]]を返します。
]FIG]

[7] [CODE[PushMessageData]] [[インターフェイス]]の
[DFN[[CODE[blob]]]]
[[メソッド]]は、
次のようにしなければ[MUST[なりません]]。
[SRC[>>1]]

[FIG(steps)[
= [8] [VAR[blob]]を、
[[文脈オブジェクト]]の[F[バイト群]]の [CODE[Blob]]
を作成した結果に設定します。
= [9] [VAR[blob]]
を返します。
]FIG]

[10] [CODE[PushMessageData]] [[インターフェイス]]の
[DFN[[CODE[text]]]]
[[メソッド]]は、
次のようにしなければ[MUST[なりません]]。
[SRC[>>1]]

[FIG(steps)[
= [15] [VAR[テキスト]]を、
[[文脈オブジェクト]]の[F[バイト群]]に
[[UTF-8復号]]を適用した結果に設定します。
= [16] [VAR[テキスト]]を返します。
]FIG]

[14] [CODE[PushMessageData]] [[インターフェイス]]の
[DFN[[CODE[json]]]]
[[メソッド]]は、
次のようにしなければ[MUST[なりません]]。
[SRC[>>1]]

[FIG(steps)[
= [11] [VAR[テキスト]]を、
[[文脈オブジェクト]]の[F[バイト群]]に
[[UTF-8復号]]を適用した結果に設定します。
= [12] [VAR[json]] を、
[VAR[テキスト]]に
[CODE[JSON.parse]]
を適用した結果に設定します。
[[例外]]は[[再び投げ]]ます。
= [13] [VAR[json]]
を返します。
]FIG]

* 歴史

[910] [CITE@en[Put body members directly on Response/Request · a898f9a · whatwg/fetch]]
( ([TIME[2014-09-07 12:35:46 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/a898f9a2941350aa625aa79b24673628ac2b2a8e>

[911] [CITE@en[TLS & align with Fetch · 4cd1644 · whatwg/xhr]]
( ([TIME[2014-09-16 04:22:22 +09:00]] 版))
<https://github.com/whatwg/xhr/commit/4cd16449653d010173ecdd6455589293b8552732>

[49] [CITE@en[Use interface mixins instead of '''['''NoInterfaceObject''']''']]
([[romandev]]著, [TIME[2017-12-23 21:11:50 +09:00]])
<https://github.com/whatwg/fetch/commit/7e617beaedf731e2904b14919b5c0270a73b75dc>

[51] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #624 · whatwg/fetch]]
([TIME[2017-12-24 12:44:24 +09:00]])
<https://github.com/whatwg/fetch/issues/624>

[55] [CITE@en[Use `interface mixins` instead of `'''['''NoInterfaceObject''']'''` by romandev · Pull Request #645 · whatwg/fetch]]
([TIME[2017-12-24 12:46:23 +09:00]])
<https://github.com/whatwg/fetch/pull/645>

[112] [CITE@en[Define the Content-Type header parser]]
([[annevk]]著, [TIME[2018-11-27 18:47:01 +09:00]])
<https://github.com/whatwg/fetch/commit/0b2bc05b2550dcbefe1321ea3e8026702514a798>