[あすかぜ・ねっと]あすかぜ・ねっとその他Jetpack SDK > No-Restarts

No-Restarts

問い

Jetpack といえば「再起動不要」。 Jetpack Prototype では、Firefox 拡張である Jetpack が 動的に *.js ファイルを読み込み、管理することでこれを実現していた。 しかし、Jetpack SDK では、それぞれの軽量拡張自体が *.xpi として パッケージングされ、従来の拡張と同じ枠組みで管理される。 それなのになぜ再起動が不要なのか。

答え

Firefox の拡張管理機能自体に手を加え、 再起動不要な場合は再起動しないようにするから。

Bug 555349 に、toolkit に対するパッチが登録されている。 アドオンのタイプが拡張であり、install.rdf で bootstrap が "true" と宣言されている場合、再起動なしでもアドオンが有効化される。 この変更は Firefox 4 で実装され、 Firefox 3.6 以前では Jetpack も通常の拡張と同じように再起動が要求される。

再起動せずに拡張の有効/無効を切り替えるには、 有効化時に拡張を初期化し、無効化時に全ての変更を元に戻さなければならない。 この仕組みは Extension_Manager: Bootstrapped_Extensions で解説されている。 install.rdf と同じフォルダに置かれた bootstrap.js で、 拡張の起動/終了/インストール/アンインストールをハンドリングする。 各拡張は適切な bootstrap.js を用意しなければならない。

Jetpack SDK を利用する場合、適切な bootstrap.js が自動生成される (Bug 562819)。 Jetpack API を使って登録したイベントハンドラやメニュー等は自動的に破棄される。 開発者が起動/終了/インストール/アンインストール時に独自に処理をしたい場合には、 Lifecycle API を利用する。

更新履歴

Menu


Copyright (C) 2010 asukaze, Some Rights Reserved.
Last Update: 2010/07/04
mail (at) asukaze.net