WebKit移植のWebView 構築の進め方


WebCoreコンパイルが通るようになった。(たくさんの notImplemented() とともに)。
次のアクションとして libwebcore を使うアプリケーションを作ろうとした。WebView 最小骨格の部分を取り出して全く構造化せずベタ書きしたものを書いて動かそうという作戦。しかしこの方法は WebKit ではうまくいかないことが分かってきた。WebView を構成する多くのコンポーネントが親である WebView へのポインタを保持しており構造が循環している。つまり WebView がないとうまく動かない。WebView の stub をつっこむことを試みたが不毛なのでやめた。


泥沼にハマりたくないので落ち着いて進め方を 3 つひねりだす。

1.インクリメンタル作戦

参考にしている Haiku の WebView をコピーし、すべての I/F をコメントアウトする。そして webView->loadURL() を動かすのに必要なものだけを build & run で見極める。それらだけコメントを外し必要なら Mona 用の実装を埋めていく。

メリット:
  • 本当に必要なものだけ実装すれば良い。
  • 動くものがすこしずつ出来上がるのでデバッグが楽。おかしくなったら直前の変更が原因。
  • 全体の構造を把握していなくても時間をかければ徐々に動きそう
デメリット
  • 全体の把握ができていないため効率が悪い
  • 徐々に出来上がるので途中で最初に埋めたコードと矛盾が生じるかも

2.まとめてドン作戦

参考にしている Haiku の WebView 周りをコピーして、がんばってビルドを通す。そして動くことを祈る。動かなければデバッグする。

メリット
  • 一発で動いたら短期間で終わる(まあそんなことはないけど)
デメリット
  • 動かない場合デバッグが大変。
  • 全体の構造を把握せずビルド通すのは危険

3.コードリーディング作戦

全体の構造把握ができていないのが問題である。WebView で loadURL されて画面に表示されるまでのコードを読み理解する。構造を絵にする。

メリット
  • 全体の構造把握でき後々のデバッグが楽になる
  • 確信を持って前にすすめる
デメリット
  • 静的な状態での把握は難しいかもしれない。
    • デバッガで追えるように別のOSの Webcore を作るべき?

さてどうしたものか?

3 -> 1 の順序かな。