nsIWebBrowserのガワの話。 要するにnsIWebBrowserChromeの実装の話。 とりあえず触りだけ。
最低限以下のインターフェースの実装が必要なようだ。
nsIWebBrowserChrome
ガワ本体。ガワなのに本体とはどういうことかと思うが
nsIWebBrowser.containerWindow
がnsIWebBrowserChrome
型なので仕方ない。nsIInterfaceRequestor
今ひとつどう説明すればわからないインターフェース。
queryInterface
によく似たメソッドgetInterface
を持つ。getInterface
で取得したインターフェースは逆変換できる必要はない。queryInterface
ではあくまで自分自身を返すが、getInterface
ではプロパティや関数の戻り値を返してもいいことになる。 Mozillaのソースを深く読んではいないのでどう便利なのかはいまいちわからないが、nsIWebBrowser
のガワとしては必須。
とりあえず上の2つのインターフェースのメンバのうち、
nsIInterfaceRequestor.getInterface
メソッドを
queryInterface
に丸投げして
nsIWebBrowserChrome.webBrowser
プロパティを実装すれば
残りのメソッドは全部NS_ERROR_NOT_IMPLEMENTED
にしても動く。
getInterface
を実装しないとFlashもまともに表示されないしリンクも飛べない。
でもgetInterface
さえ実装すれば動く。
それくらい重要。
はっきり言ってGecko Embedding BasicsにnsIInterfaceRequestor
がないのは詐欺だろ。
コメントする