* 仕様書

[REFS[
- [59] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-14 09:55:50 +09:00]]) <https://html.spec.whatwg.org/#semantics-2>
- [82] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2018-08-22 08:13:26 +09:00]]) <https://html.spec.whatwg.org/#update-the-rendering>'''
-- [10] 旧URL: '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-11-21 03:08:35 +09:00]] 版) <https://html.spec.whatwg.org/#processing-model-9>'''
- [23] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-11-21 03:08:35 +09:00]] 版) <https://html.spec.whatwg.org/#pause>
]REFS]

* 文書の意味とレンダリング

[60] [[文書の意味]]は、[[スクリプト]]その他の方法でいつ変化するとも限りません。
[[利用者エージェント]]は、[[文書の意味]]が変化したら、
[[文書]]の[RUBYB[表現]@en[presentation]]を更新しなければ[MUST[なりません]] [SRC[>>59]]。

[67] [[Webブラウザー]]の[F[既読URLリスト]]の変化も、随時[[レンダリング]]に反映されます。

* レンダリングの更新

[8] 
[VAR[イベントループ]]と[VAR[今]]についての[DFN[[RUBYB[[[レンダリングの更新]]]@en[update the rendering]]]]は、
[[イベントループ]]の各周回の後半で行われる処理の1つです。
[[仕様書]]で「レンダリングの更新」と呼ばれている一連の手順は、
[[閲覧文脈]]に関する[[イベントループ]]で実行されますが、
[[ワーカー]]に関する[[イベントループ]]では実行されません。 [SRC[>>82]]

[108] 
ただし[[専用ワーカー]]の[[イベントループ]]では、
[CODE[requestAnimationFrame]] に関する処理が実行されます [SRC[>>82]]。

;; [11] [[タスク]]や[[マイクロタスク]]の後に実行されます。


;; [205] [[レンダリング]]の更新は[[一時停止]]でも行われます。

[25] こうした処理を次にいつ実行するかは、[[アイドル期間]]の締切の決定に影響を及ぼすことがあります。


[123] 
なお[[レンダリングの更新]]全体の[[時間長]]の計測と報告も行われます。
[SEE[ [[イベントループ]] ]]

** 対象の決定

[12] [[レンダリングの更新]]の対象となる[[文書]]の[[リスト]][VAR[文書群]]は、
当該[[イベントループ]]に関連付けられた[[文書]]すべてから、
次に挙げる条件に該当するものを除去したものです。 [SRC[>>82]]

-*-*-

[100] [VAR[文書群]]における[[文書]]の順序は、

- [101] 基本的に任意ですが、
- [102] [VAR[B]] の[F[閲覧文脈]]の[F[包含子文書]]が [VAR[A]] なとき、
[VAR[A]] より [VAR[B]] が後で[MUST[なければならず]]、
- [103] [VAR[A]] の[F[閲覧文脈]]の[F[包含子文書]]と
[VAR[B]] の[F[閲覧文脈]]の[F[包含子文書]]が同じ
[VAR[C]] なとき、[VAR[A]] と [VAR[B]] の順序は
[VAR[A]] の[F[閲覧文脈]]の[F[包含子][閲覧文脈包含子]]と
[VAR[B]] の[F[閲覧文脈]]の[F[包含子][閲覧文脈包含子]]の[[影を含む木順]]でなければ[MUST[ならない]]

... とされています [SRC[>>82]]。

;; [104] つまり[[フレーム]]の入れ子関係で[[木]]を作った時、
[[行きがけ順]]で探索しなければなりません。
異なる[[木]]に属する[[フレーム]]同士の順序は自由です。

-*-*-

[124] [[イベントループ]]で毎回[[レンダリング]]の更新を行う必要はなく、
いつ更新するかの正確なタイミングは実装に任されています。
レンダリングの更新をスキップする条件は、
3つに大別されています。

[105] 
[F[レンダリング機会]]を持たない[[閲覧文脈]]については、
対応する[[文書]]をすべて[VAR[文書群]]から除外します。
[[閲覧文脈]]が[DFN[[F[[RUBYB[レンダリング機会]@en[rendering opportunity]]]]]]を持つとは、
[[利用者エージェント]]が[[閲覧文脈]]の内容を[[利用者]]に[[提示]]できる状態にあることをいいます。
[[提示]]できるかどうかは[[ハードウェア]]の [[refresh rate]] 
の制約や、[[性能]]上の理由による[[利用者エージェント]]基準の [[throttle]]
によって定めることとし、
[[viewport]] 外にあるとしても[[提示]]可能とみなします。 
[[レンダリング機会]]の判断は[[利用者エージェント]]に委ねられており、
例えば特定の [[refresh rate]] の維持を目的に[[レンダリング機会]]を間引いたり、
[[可視]]状態にない[[閲覧文脈]]の[[レンダリング機会]]を著しく削減したりできます。
[SRC[>>82]]

[HISTORY[

[50] 以前の[[仕様書]]にはより具体的な例として、
[[第三者]]内容 ([[広告]]や[[SNS]]ボタンの類など)
が非表示だったり[[資源]]の制約が厳しかったりする場合にはその更新頻度を低下させることができる
[SRC[>>10]] とありました。

]HISTORY]

[49] 
[[レンダリング]]の更新が可視的な影響を持たないと[[利用者エージェント]]が判断する、
[F[アニメーションフレームコールバックの写像]]が[[空]]で''ない''[[閲覧文脈]]については、
[DFN[[RUBYB[不要レンダリング]@en[unnecessary rendering]]]]であるとして、
対応する[[文書]]をすべて[VAR[文書群]]から除外します。 [SRC[>>82]]

[106] [[不要レンダリング]]により除外された[[文書]]については、
[[mark paint timing]] を実行しなければ[MUST[なりません]]。 [SRC[>>82]]

[107] 
その他[[利用者エージェント]]が[[レンダリング]]の更新を飛ばすのが望ましいと判断する[[閲覧文脈]]については、
対応する[[文書]]をすべて[VAR[文書群]]から除外します。
例えば[[タイマーコールバック]]が連続して実行される間の[[レンダリングの更新]]を抑制したりできます。
[SRC[>>82]]



** 更新処理

[13] [VAR[文書群]]と[VAR[今]]について、次のようにします。 [SRC[>>82]]

[FIG(steps)[
= [118] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [119] [VAR[文書]]の[F[閲覧文脈]]の[F[最上位閲覧文脈]]が[[真]]の場合、
=== [120] [VAR[文書]]について、
[[flush autofocus candidates]]
を実行します。
= [14] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [83] [VAR[文書]]が[F[完全に活性]]な場合、
=== [84] [VAR[文書]]と[VAR[今]]について、
[[サイズ変更手順を実行]]します。
= [15] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [85] [VAR[文書]]が[F[完全に活性]]な場合、
=== [86] [VAR[文書]]と[VAR[今]]について、
[[スクロール手順を実行]]します。
= [16] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [87] [VAR[文書]]が[F[完全に活性]]な場合、
=== [88] [VAR[文書]]と[VAR[今]]について、
[[媒体クエリーを評価して報告]]します。
= [17] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [89] [VAR[文書]]が[F[完全に活性]]な場合、
=== [90] [VAR[文書]]と[VAR[今]]について、
[[update animations and send events]]します。
= [18] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [91] [VAR[文書]]が[F[完全に活性]]な場合、
=== [92] [VAR[文書]]と[VAR[今]]について、
[[全画面手順を実行]]します。
= [19] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [93] [VAR[文書]]が[F[完全に活性]]な場合、
=== [94] [VAR[文書]]と[VAR[今]]について、
[[アニメーションフレームコールバックを実行]]します。
= [54] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [95] [VAR[文書]]が[F[完全に活性]]な場合、
=== [96] [VAR[文書]]と[VAR[今]]について、
[[run the update intersection observations steps]] します。
= [78] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [97] [VAR[文書]]について、
[[mark paint timing]] を実行します。
= [21] [VAR[文書群]]中の各[VAR[文書]]について、順に、
== [98] [VAR[文書]]が[F[完全に活性]]な場合、
=== [99] [VAR[文書]]と[VAR[今]]について、
[[レンダリングや利用者インターフェイスを更新]]します。
= [125] [VAR[文書群]]を返します。
]FIG]

[26] [[文書]]が[[完全に活性]]かどうかの判断は、それぞれの時点で行われます。
前の方の手順で[[完全に活性]]の基準を満たさなくなることがあると、後の方の手順は実行されないこともあります。

[66] [VAR[今]]は[[イベントループ]]が[[レンダリングの更新]]の前に取得した[[現在高精度時刻]]です。

[126] [VAR[文書群]]は、この後[[レンダリングの更新]]にかかった時間の報告に用いられます。
[SEE[ [[イベントループ]] ]]

** 専用ワーカーの処理

[109] 
[[専用ワーカー]]の[[レンダリングの更新]]相当の処理は、
次のようなものです [SRC[[CITE[HTML Standard]]]]。

[FIG(steps)[
= [111] [VAR[イベントループ]]の [CODE[DedicatedWorkerGlobalScope]]
の[F[対応中]]が[[真]]の場合で、
[[利用者エージェント]]が今回[[レンダリング]]を更新するのが好ましいと判断する場合、
== [110] [VAR[今]]を、[[現在高分解能時刻]]に設定します。
== [112] [VAR[イベントループ]]の [CODE[DedicatedWorkerGlobalScope]]
と[VAR[今]]について、
[[アニメーションフレームコールバックを実行]]します。
== [114] [VAR[イベントループ]]の [CODE[DedicatedWorkerGlobalScope]]
について、
[[レンダリング]]を更新します。
]FIG]

[SEE[ [CODE[OffscreenCanvas]] ]]

* レンダリングや利用者インターフェイスの更新

[24] [[レンダリングの更新]]の最後 (>>21) や[[一時停止]] [SRC[>>23]]
では、「[RUBYB[[[レンダリングや利用者インターフェイスの更新]]]@en[update the rendering or user interface]]」
を行います。

[52] 具体的に何を行うかは明確に定義されているわけではありませんが、次のものが含まれています。
[FIG(list)[
- [53] [[canvas]] における[[利用者へ通知]]
([[タスク]]内で同期的に行なって良いしこのタイミングで行なっても良いし、行わなくても良い)
-- [204] <http://www.whatwg.org/specs/web-apps/current-work/#inform>
- [113] 外部参照を含む[[スタイルシート]]に[[スクリプト]]がアクセスできるようになるのは、
最初のレンダリング更新のタイミング以降です。
-- <http://www.whatwg.org/specs/web-apps/current-work/#style-sheet-ready>
]FIG]

[32] [[event loop step 1]] 時点での状態が参照されているもの 
([SEE[ [[event loop step 1]] ]]) は、
次の [[event loop step 1]] を過ぎた時点でレンダリングを更新する必要が生じます。

* 閲覧文脈のレンダリング

[44] [[閲覧文脈]]の存在と、それが[[レンダリング]]されて[[利用者]]から観察可能かどうかは、
必ずしも等しくありません。

[EG[
[45] 最も明確な例は、現在選択されていない[[タブ]]です。
]EG]

[EG[
[46] [[Webブラウザー]]によっては、[[タブ]]の表示位置の移動の際、
一時的に [[viewport]] が消滅することがあります。
]EG]

[EG[
[47] [[Webブラウザー]]や[[ウィンドウマネージャー]]の実装によっては、
[[最小化]]されていたり[[画面]]の表示領域外にあったり、
隠れていたりする[[窓]]や[[タブ]]であっても、その現在の状態を表示できる機能があるかもしれません。
例えば [KBD[[KBD[[[Ctrl]]] + [KBD[[[Tab]]]]]] で[[窓]]の切り替えメニューが表示され、
最新の[[窓]]の状態が表示されるかもしれません。
[[タスクバー]]上の[[窓]]の表示に[[マウスカーソル]]を合わせると、
最新の[[窓]]の状態が表示されるかもしれません。
]EG]

@@ [[Page Visibility]] との関係

[35] [CODE(JS)@en[[[location.reload]]]] は、文脈によっては[[閲覧文脈]]を [[repaint]]
することになっています。

;; [CODE(JS)@en[[[location.reload]]]] は [CODE(DOMm)@en[[[refresh]]]]
[[メソッド]]から呼び出されることもあります。

* 関係が不明瞭なもの

[9] [[イベントループ]]の明文化以前から存在する機能は、
[[イベントループ]]との相互作用が明文化されていないものがあります。

[63] [[fetch]] が[[画像]]や [[XML]] の[[タスク]]を複数生成する時に、
それを[[インクリメンタル・レンダリング]]する処理モデルは定義されていません。

;; [36] [[Web]] で使われる[[画像形式]]は、データが到着した部分から順次[[レンダリング]]できるのが普通です。
通常は[[上]]の[[画素]]から順に表示されていきますが、[[プログレッシブJPEG]]
など全体を最初にレンダリングし、徐々に高解像度化して表示できる形式もあります。

[194] [CODE(HTMLe)@en[[[blink]]]] [[要素]]や [[CSS]] の [CODE(CSS)@en[[[text-decoration]]: [[blink]]]]
では[[点滅]]が発生します。

[195] [CODE(HTMLe)@en[[[marquee]]]] の[[アニメーション]]は [[HTML Standard]] で定義されていますが、
[[イベントループ]]との関係には言及がありません。

[40] [CODE(HTMLe)@en[[[progress]]]] [[要素]]は[[アニメーション]]で[[レンダリング]]されることがあります。

[193] [[レンダリング]]を行うタイミングは[[イベントループ]]で定義されていますので、
[[レンダリング]]の変化はその時に発生するのでしょうが、
[[ハードウェア]]に[[動画]]の再生を任せている場合など、
独自のタイミングで更新が発生するかもしれません。

[37] [[プラグイン]]は、 [[Webブラウザー]]本体とは独立して[[レンダリング]]を行うかもしれません。

[64] [[アニメーションGIF]]の[[レンダリング]]との関係は定義されていません。
ただし同じ[[URL]]の[[アニメーションGIF]]は、最初に読み込まれたものの再生と同期する、
と [[HTML]] により規定されています。

[38] テキスト入力の現在位置を表す[[カーソル]] ([[キャレット]]) は、
[[プラットフォーム]]によっては[[点滅]]するかもしれません。

@@ [197] [[CSS Transitions]], [[SMIL Animations]], [[SVG]] 

@@ [[スクロール]]や[[ズーム]]との関係、
[[窓]]や[[タブ]]の切り替えによる再描画との関係

@@ 動画やアニメーションと [[pause]] との関係

* 閲覧文脈外の利用者インターフェイス

[41] 普通[[レンダリング]]というとき、[[閲覧文脈]]内 ([[画布]])
のことをいいます。

[42] しかし[[利用者エージェント]]によっては[[閲覧文脈]]外の[[利用者インターフェイス]]も同じようなタイミングで更新するかもしれません。
例えば次のものがあります。
[FIG(list)[
- [[タイトルバー]] ([CODE(JS)@en[[[document.title]]]])
- [[favicon]]
- [[アドレスバー]] ([[文書の番地]]、[[service identity]]、[[EV証明書]])
- [[検索]] ([[OpenSearch]] など)
- [[状態バー]] ([CODE(JS)@en[[[window.status]]]])
- [[ツールチップ]]
- [[フォームの検証]]に関する表示
- 読み込み中の表示 ([[navigate]] 参照)
- [[色]] ([CODE(HTML)@en[[[theme-color]]]])
- [[履歴]]に関するメニューやボタン
- [[Site Navigation Bar]] や [[Link Toolbar]] の類 ([CODE(HTMLe)@en[[[link]]]])
- [[文脈メニュー]]や[[命令]]の一覧の[[メニュー]]
- [39] [[マウスカーソル]]は、通常は [[OS]] の機能によって実現され、
[[Webブラウザー]]とは独立して動作します。[[アニメーション]]に対応しているかもしれません。
- [[Permission]] や[[スクリプト無効]]等の[[文書]]や[[起源]]や[[閲覧文脈]]に依存する設定の表示
- [[基本認証]]や[[パスワードマネージャー]]等認証情報に関する表示
- [[開発者ツール]]の表示、[[コンソール]]など
]FIG]

[43] なお、更新が必要になることはないかもしれませんが、次のような[[閲覧文脈]]外の[[利用者インターフェイス]]もあります。
[FIG(list short)[
- [[ダイアログ]]
- [[通知]]
]FIG]

* 文脈

@@ [[イベントループ]]からの呼び出し

@@ [[CSSOM View]] からの呼び出し

* その他

@@ [69] [CODE[suspendRedraw]]

* 関連

[70] [[レンダリングの開始]]も参照。

* 歴史

[22] [[レンダリング]]に関する諸々の処理は従来[[イベントループ]]において
(このタイミングで実行してもよいという以上には) 明確には規定されていませんでした。
しかし個々の規定が詳細化され、相互作用も明確にする必要が生じてきたことから、
2014年11月に [[HTML Standard]] の[[イベントループ]]の規定が各仕様の処理を呼び出す形に詳細化されました。

[REFS[
- [1] [CITE[Define fullscreen in terms of "animation frame tasks" and reduce the amo... · 5187282 · whatwg/fullscreen]]
( ([TIME[2014-07-31 07:28:54 +09:00]] 版))
<https://github.com/whatwg/fullscreen/commit/5187282e5fd24a1c4ff0164d444e1bfc2bdf44ef>
- [2] [CITE@en[Animation frame task]]
( ([[Anne van Kesteren]] 著, [TIME[2014-07-31 00:29:07 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014Jul/0586.html>
- [3] [CITE@en[Bug 26440 – Allow fullscreenchange events to be synchronized with animation frames]]
( ([TIME[2014-07-31 14:28:12 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26440>
- [4] [CITE@en[Re: Animation frame task]]
( ([[Elliott Sprehn]] 著, [TIME[2014-08-22 12:37:46 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014Aug/0365.html>
- [5] [CITE@en[Bug 26636 – We need to flush out step 8 of the event loop processing model per http://lists.w3.org/Archives/Public/www-dom/2014JulSep/0091.html and other emails in that thread]]
( ([TIME[2014-08-24 02:30:54 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26636>
- [20] [CITE@en[Web Applications 1.0 r8782 Reframe the 'update the rendering' step so we can add substeps.]] ([TIME[2014-09-18 05:42:00 +09:00]] 版) <https://html5.org/r/8782>
- [6] [CITE@en[Make list of fullscreenElements during animation frame task https://www.... · 13e267c · whatwg/fullscreen]]
( ([TIME[2014-08-27 02:50:42 +09:00]] 版))
<https://github.com/whatwg/fullscreen/commit/13e267c9bf275b645d4e7652e3acbc16f3dc5efb>
- [7] [CITE@en[Bug 26839 – Integrate "Timing control for script-based animations" spec into HTML]]
( ([TIME[2014-11-22 00:51:57 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26839>
- [27] [CITE@en[Web Applications 1.0 r8849  Flesh out how rendering happens in the event loop. This also defines requestAnimationFrame() and obsoletes the 'Timing control for script-based animations' spec (by request of that spec's editors)]] ([TIME[2014-11-20 06:56:00 +09:00]] 版) <https://html5.org/r/8849>
- [28] [CITE@en[Web Applications 1.0 r8850 Teach the event loop that it might not have a task to run]] ([TIME[2014-11-20 07:20:00 +09:00]] 版) <https://html5.org/r/8850>
- [29] [CITE@en[Web Applications 1.0 r8851  Handle the case of a 'resize' handler removing the Document from the rendering]] ([TIME[2014-11-20 07:42:00 +09:00]] 版) <https://html5.org/r/8851>
- [30] [CITE@en-US[csswg: changeset 14799:1e907e3ac50c]] ([TIME[2014-11-22 14:34:29 +09:00]] 版) <https://dvcs.w3.org/hg/csswg/rev/1e907e3ac50cf28bb21750d49d1229195e79d33c>
]REFS]

[206] [CITE@en[Re: ''''''[''''''cssom-view'''''']'''''''''['''css3-animations''']''' Sync events with  requestAnimationFrame]]
( ([[Simon Pieters]] 著, [TIME[2014-12-09 19:00:26 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014Dec/0133.html>

[31] [CITE[IRC logs: freenode / #whatwg / 20150212]]
([TIME[2015-02-13 13:18:09 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150212>

[33] [CITE[IRC logs: freenode / #whatwg / 20150702]]
([TIME[2015-07-03 11:15:58 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150702>

[34] [CITE@en[Bug 28876 – Doing too much stuff around animation frame tick may cause rendering updates to be postponed]]
([TIME[2015-07-03 11:16:06 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28876>

[48] [CITE@en[Allow not rendering nested browsing contexts · whatwg/html@ee77b87]]
([TIME[2016-02-14 00:29:33 +09:00]] 版)
<https://github.com/whatwg/html/commit/ee77b8710cea05aa1c56b32b9d7d790c39a62aef>

[51] [CITE@en[Add intersection observer to the event loop's rendering · whatwg/html@a5f708c]]
([TIME[2016-02-29 17:41:57 +09:00]] 版)
<https://github.com/whatwg/html/commit/a5f708cf5cbb909345a0da695fb86b2a6cd9d3a0>

[55] [CITE@en[Fix #818: add another example of when to skip updating the rendering · whatwg/html@a999104]]
([TIME[2016-03-09 15:37:09 +09:00]] 版)
<https://github.com/whatwg/html/commit/a9991042e27cb9e90538b287352577db3b427780>

[57] [CITE@en[New 'update the rendering' process may have negative consequences with respect to callbacks · Issue #818 · whatwg/html]]
([TIME[2016-03-09 15:48:53 +09:00]] 版)
<https://github.com/whatwg/html/issues/818>

[58] [CITE@en[28001 – Formalize rendering tasks]]
([TIME[2016-03-26 12:00:14 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28001>

[FIG(quote)[
[FIGCAPTION[
[61] [CITE[W3M FAQ]]
( ([TIME[2001-02-01 18:02:39 +09:00]]))
<http://homepage2.nifty.com/aito/w3m/FAQ.html>
]FIGCAPTION]

> w3mはHTML文書を2パスで整形するので,文書全体を読みこまないと 表示ができません.Netscapeなどは文書を読みながら表示するので, 表示が速いように思えるのでしょう.

]FIG]


[62] [CITE@en[Remove the concept of CSS Bindings]]
([[annevk]]著, [TIME[2016-07-08 02:00:41 +09:00]])
<https://github.com/whatwg/html/commit/6c96beabfa41d6d28ab23633966b82c5cdb9fd94>

[65] [CITE@en[Reject exitFullscreen() in inactive documents]]
([[foolip]]著, [TIME[2016-12-16 22:39:22 +09:00]])
<https://github.com/whatwg/fullscreen/commit/59574a4dc4cebf5dc13cb9823ef4f91fbb496be3>

[68] [CITE@ja[Browser Rendering Pipeline - Google ドキュメント]]
([TIME[2017-05-18 23:33:11 +09:00]])
<https://docs.google.com/document/d/1Mw6qNw8UAEfW96CXaXRVYPPZjqQS3YdK7v57wFttAhs/edit?pref=2&pli=1#>

[71] [CITE@en[Fullscreen/unfullscreen ASAP; fire events at animation frame timing]]
([[foolip]]著, [TIME[2017-06-15 17:48:13 +09:00]])
<https://github.com/whatwg/fullscreen/commit/4208e5a98c78d716f664a85749fba6d4eb2822f2>

[72] [CITE@en[Link to "run the fullscreen steps" in Fullscreen]]
([[foolip]]著, [TIME[2017-06-15 21:43:09 +09:00]])
<https://github.com/whatwg/html/commit/7c2b5dcbfd27d2727eaeeb504faa654d3d8cc8f8>

[73] [CITE@en[Add img.decode() API for "predecoding" images]]
([[domenic]]著, [TIME[2017-02-08 08:11:49 +09:00]])
<https://github.com/whatwg/html/commit/af6b0e9b5c2942ad32ccb600031fb4b953011982>

[74] [CITE@en[Properly reference "update animations and send events"]]
([[domenic]]著, [TIME[2017-12-20 08:00:02 +09:00]])
<https://github.com/whatwg/html/commit/99c9e027417d453ed2bd35e08df16d47524fddd2>

[75] [CITE@en[Use the current high resolution time concept]]
([[annevk]]著, [TIME[2018-05-23 22:58:47 +09:00]])
<https://github.com/whatwg/html/commit/9dbad6a2c9f24c9a7998997d2b1b337c2acd5a52>

[76] [CITE@en[Use the current high resolution time concept by annevk · Pull Request #3707 · whatwg/html]]
([TIME[2018-05-31 00:18:38 +09:00]])
<https://github.com/whatwg/html/pull/3707>

[77] [CITE@en[Integrate with the Paint Timing spec]]
([[tdresser]]著, [TIME[2018-08-17 04:05:28 +09:00]])
<https://github.com/whatwg/html/commit/92b90bd6137faac0d15aca1ec234afdc80b9547b>

[79] [CITE@en[It is totally unclear what 'duration' tries to measure · Issue #6 · WICG/event-timing]]
([TIME[2018-08-22 21:49:05 +09:00]])
<https://github.com/WICG/event-timing/issues/6>

[80] [CITE@en[Eliminate paint timing monkey patching by tdresser · Pull Request #3923 · whatwg/html]]
([TIME[2018-08-22 21:49:27 +09:00]])
<https://github.com/whatwg/html/pull/3923>

[81] [CITE@en[Integrate with Paint Timing · Issue #1609 · w3c/html]]
([TIME[2018-08-22 21:50:30 +09:00]])
<https://github.com/w3c/html/issues/1609>

[56] [CITE@en[Add requestAnimationFrame() in workers]]
([[fserb]]著, [TIME[2018-08-28 01:02:51 +09:00]])
<https://github.com/whatwg/html/commit/3d9b41d1086131f21cd87a1957344a6fdb7e1748>

[115] [CITE@en[OffscreenCanvasAnimation/OffscreenCanvasAnimation.md at 2e0546417d4f45d194270a67a1cdf303f2e0ef88 · junov/OffscreenCanvasAnimation]]
([TIME[2018-09-21 23:51:49 +09:00]])
<https://github.com/junov/OffscreenCanvasAnimation/blob/2e0546417d4f45d194270a67a1cdf303f2e0ef88/OffscreenCanvasAnimation.md>

[116] [CITE@en[Update autofocus processing algorithm]]
([[tkent-google]]著, [TIME[2019-09-04 01:07:59 +09:00]])
<https://github.com/whatwg/html/commit/2d783dbb7c6c0343b4850f3be935e893a1de5582>

[117] [CITE@en[Autofocus spec should probably allow browsers to delay running the focusing steps, maybe? · Issue #3551 · whatwg/html]]
([TIME[2020-08-31 17:50:51 +09:00]])
<https://github.com/whatwg/html/issues/3551>

[121] [CITE@en[Change the timing of "flush autofocus candidates"]]
([[tkent-google]]著, [TIME[2019-10-18 10:23:25 +09:00]])
<https://github.com/whatwg/html/commit/74b61242c716876bad8e24fe358796d31b9ecae1>

[122] [CITE@en[Integrate with the Long Tasks spec]]
([[npm1]], [TIME[2018-10-23 07:23:27 +09:00]], [TIME[2021-03-25T06:36:31.000Z]])
<https://github.com/whatwg/html/commit/425a67ba81288305fce86736a0772f84c3f30eed>

[127] [CITE@en[Add the Paint Timing spec to References section by sideshowbarker · Pull Request #3949 · whatwg/html]]
([TIME[2021-03-25T07:04:43.000Z]])
<https://github.com/whatwg/html/pull/3949>

[128] [CITE@en[Give browsing context an explicit container]]
([[annevk]], [TIME[2019-11-22 17:11:31 +09:00]], [TIME[2022-01-13T10:14:46.000Z]])
<https://github.com/whatwg/html/commit/7b4964ad0a953b05738afc66600fa47a4dc8045d>