Skip to main content

Module web_engine

Module web_engine 

Source
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§

AsyncLoadRequest 🔒
AsyncLoadState 🔒
全タブ共有の非同期ロードキュー。owner ID で各タブの結果を分離する。
DecodedImage
GradientStop
HyperlinkArea
LinearGradient
RadialGradient
RenderElement
WebEngine

Enums§

BgRepeatMode
CSS background-repeat の1軸ぶんのモード。
BgSizeMode
CSS background-size のモード。
BgSizeVal
CSS background-size の1軸ぶんの値。
BorderStyle
CSS border-style の値。RenderElement は要素あたり最大 5 個(全体 + 4辺)保持するため、 String(24バイト)ではなく 1 バイトの enum にしてメモリを節約する。
CssFilter
ListStyleType
CSS list-style-type の値。同じ理由で String の代わりに enum を使う。
ObjectFit
CSS object-fit 要素の内容フィッティング)。
RadialShape

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