Expand description
HTML パーサ・レイアウトエンジン・レンダラ(ブラウザエンジン本体)。
WebEngine が HTML 文字列を受け取り、パース → CSS カスケード → レイアウト →
描画までの一連のパイプラインを提供する。JavaScript 実行は crate::os_lib::js へ、
ネットワーク取得は crate::kernel::net_stack へ委譲する。
アーキテクチャ詳細(コンポーネント構成・タブモデル・座標規約・テーブルレイアウト等)は
spec/DESIGN.md §3「ブラウザエンジン アーキテクチャ」を参照。
暴走ページ対策として MAX_RENDER_ELEMENTS(要素数上限)と MAX_HTML_BYTES
(HTML サイズ上限)で打ち切る。
Modules§
- alpha_
blend 🔒 - アルファ合成(Simple alpha compositing / source-over)。
- anim_
budget 🔒 - アニメーション由来の再レイアウトを、実測コストに応じて間引くための予算判定。
- blur_
box 🔒 - ボックスブラーの高速実装(累積和による厳密な等価変換)。
- cache 🔒
- cache_
path 🔒 - キャッシュのファイル名を組み立てる(純粋モジュール)。
- css_
units 🔒 - draw_
helpers 🔒 - fetch_
limit 🔒 - リソース取得の同時実行を種別横断で制御する。
- font_
budget 🔒 - Web フォント取得の可否判定(描画をブロックしないための予算)。
- font_
queue 🔒 - フォント取得の非同期キュー(レンダリングをブロックしない)。
- gradient_
lut 🔒 linear-gradientのラスタライズ補助(LUT の段数決定と軸判定)。- helpers 🔒
- image 🔒
- image_
budget 🔒 - 画像取得・デコードの予算判定(描画をブロックしないため)。
- layout 🔒
- paint_
cull 🔒 - 要素がフレームのどこへ描かれるか、そして描かれるかどうかの判定(純粋関数)。
- paint_
order 🔒 - 描画順(スタッキング順)の算出。
- perf 🔒
- ページ読み込み経路の軽量プロファイラ。
- queue_
batch 🔒 - 取得待ち行列から「まとめ取得する分」を選ぶ判定(純粋モジュール)。
- rel_
path 🔒 - HTML 属性の相対パス解決(純粋モジュール)。
- render 🔒
- repaint_
scope 🔒 - アニメーション/トランジションで変化したプロパティが、 再レイアウトを要するか / 再ペイントだけで足りるかの判定。
- sticky 🔒
position: stickyの描画 Y 座標計算(純粋モジュール)。- url_
resolve 🔒 - video 🔒
Structs§
- Async
Load 🔒Request - Async
Load 🔒State - 全タブ共有の非同期ロードキュー。owner ID で各タブの結果を分離する。
- Decoded
Image - Gradient
Stop - Hyperlink
Area - Linear
Gradient - Radial
Gradient - Render
Element - WebEngine
Enums§
- BgRepeat
Mode - CSS
background-repeatの1軸ぶんのモード。 - BgSize
Mode - CSS
background-sizeのモード。 - BgSize
Val - CSS
background-sizeの1軸ぶんの値。 - Border
Style - CSS
border-styleの値。RenderElement は要素あたり最大 5 個(全体 + 4辺)保持するため、 String(24バイト)ではなく 1 バイトの enum にしてメモリを節約する。 - CssFilter
- List
Style Type - CSS
list-style-typeの値。同じ理由で String の代わりに enum を使う。 - Object
Fit - CSS
object-fit(要素の内容フィッティング)。
- Radial
Shape
Constants§
- HOME_
HTML - ブラウザ内蔵のホームページ(OS 同梱 of 静的ページ)。 YouTubeへのリンクは、DNS解決フォールバックやYouTubeモック解除の修正に伴い、 ダミーURLではなく公式のYouTubeアドレスに設定されています。
- MAX_
HTML_ 🔒BYTES - パース対象 HTML の上限バイト数。これを超える分は切り捨てる。
- MAX_
RENDER_ 🔒ELEMENTS - flatten 時に生成する RenderElement の上限。病的なページでのヒープ枯渇を防ぐ。 1 要素あたり数百バイト程度なので、2 万要素でも十数 MB に収まる。
Statics§
- ASYNC_
LOAD 🔒 - NEXT_
ENGINE_ 🔒ID - SVG_
BACK 🔒 - SVG_
HOME 🔒 - SVG_
LOAD 🔒 - SVG_
SAVE 🔒 - SVG_
SHIELD_ 🔒SECURE - SVG_
SHIELD_ 🔒WARN - SVG_
WRAP 🔒
Functions§
- async_
load_ 🔒thread_ entry - clear_
browser_ cache - /cache/browser/ 以下の全キャッシュを削除する
- draw_
border - draw_
gradation - font_
pending - 取得待ちのフォント件数。再描画の判定から使う。
- hash_
str - image_
results_ ready - デコード完了した画像が「取り込み待ち」で存在するか(エッジトリガ再描画用)。 旧実装は pending/thread_active も見ていたため、画像のロード待ちの間ずっと 全画面再描画が走り続け(画面が波打つ)原因になっていた。 完了結果がある時だけ true を返すことで、完了ごとに1回だけ再描画する。
- key_
name_ 🔒for - 非印字キーの keycode を DOM の
KeyboardEvent.key風の名前に変換する。 - number_
to_ alpha - 1始まりの序数を A, B, … Z, AA, AB, … の26進表記に変換する(
upper-alpha/lower-alpha)。 - number_
to_ roman - 1〜3999 の序数をローマ数字表記に変換する(
upper-roman/lower-roman)。範囲外は十進数にフォールバック。 - parse_
url 🔒 - set_
draw_ stage - shared_
image srcからデコード済み画像を引く。無ければNone。- url_
encode