One more Tombloo patch

TomblooをFirefox3で動くようにするパッチをちょこっと改良して追記。拡張機能をインストール/アンインストールして再起動したあとの1回目でTomblooが機能しないのを解決しました。

components/tombloo.jsのいちばんはじめのほうで

const ExtensionManager = getService('/extensions/manager;1', Ci.nsIExtensionManager);

と代入してしてExtensionManagerを利用すると、たぶんXPCOMの追加/削除が行われたあとでcompreg.datなんかを再構築するときのファイル読み込み順依存でnsIExtensionManagerが利用できる/できないが決まって、それがconstに代入されちゃうので、ほんとはXPCOMの初期化が終わったあとに呼び出されるのでnsIExtensionManagerは常に利用できるはずのTomblooServicecreateInstanceの中でもExtensionManagerが存在しなくてこけてるようでした。

XPCOMコンポーネントから他のXPCOMを使うときは、利用可能になるタイミングを意識しておく必要がありそうです。今回はcreateInstanceの中で使うからかんたんに解決できるけど、registerSelfみたいな初期化の過程で呼ばれるようなところの中で使いたかったらどーするんだろう。


About this entry