この記事は『Firefox OS / B2G OS Advent Calendar 2016』 17日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。
前回、新訳:ADB Helperをハックしてみた(adb-socket.js)に引き続き、 adb-helperをハックしていきたいと思います
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、mac,linux用ファイル
OS毎に使用されるファイルが有る事が確認できます。
2014.11.06 時点から、かなりバージョンアップしているのが分かります。
モジュールは下図の通りです
https://developer.mozilla.org/ja/docs/Extensions/Bootstrapped_extensions
bootstrap.js
http://mdn.beonex.com/en/Extensions/bootstrap.js.html
Components.interfaces
概要:プロパティがそれらの名前によって索引付けされたクラスである、読み出し専用オブジェクトです。
https://developer.mozilla.org/ja/docs/Components.interfaces
Components.utils
概要:便利でありながらも必須というわけではない、さまざまな XPConnect の機能のまとまりです。
そのインタフェースは js/src/xpconnect/idl/xpccomponents.idl で定義されています。
https://developer.mozilla.org/ja/docs/Components.utils
Preferences 概要:Mozilla 設定システムを利用しようとする拡張機能開発者向けのサンプルを示しています。
https://developer.mozilla.org/ja/docs/Code_snippets/Preferences
- Ci に Components.interfaces ライブラリ読み込み
- Cu に Components.utils ライブラリ読み込み
- Cu に Services.jsm をインポート
- 定数:REASON を定義
['unknown', 'startup', 'shutdown', 'enable', 'disable', 'install', 'uninstall', 'upgrade', 'downgrade']
registerAddonResourceHandler() 関数
- 変数:file にパスを格納します。
- 変数:fileuri file.isDirectory() を用いて、
uri 情報を取得します。 - encodeURIComponent() 関数を用いて、
リソース名を格納します。 - getProtocolHandler() 関数を用いて、
リソース名をセットします。 - リソース情報を返します。
- 変数:mainModule 定義
- 変数:loader 定義
- 変数:unload 定義
- install() 関数
startup オブジェクト
- 変数:loaderModule を定義
- 変数:unload を定義
- 変数:loaderOptions を定義
- 定数:LOGPREF を定義
- 定数:LOGPREFIX を定義
- canLog() 関数
- 変数:ConsoleAPI を定義
- 変数:consolePaths を定義
- ConsoleAPI() のインスタンス:_console を定義
- 変数:loaderOptions.globals を定義
- log() 関数を定義します。
- warn() 関数を定義します。
- error() 関数を定義します。
- exception() 関数を定義します。
- debug() 関数を定義します。
- Loader() 関数に上記 loaderOptions を代入し、
モジュールをロードします。 - Require() 関数に引数:loader, { id: "./addon" } を
代入し、変数:require_ を定義します。 - 変数:mainModule にrequire_ を代入します。
shutdown 関数
- 引数:reasonCode を用いて、変数:reason に代入します。
- 変数:loader = true の場合、unload() 関数を実行します。
- mainModule = true かつ mainModule.shutdown = true の時
mainModule.shutdown() 関数を実行します。
- uninstall() 関数
- 新訳:ADB Helperをハックしてみた(前篇)
- 新訳:ADB Helperをハックしてみた(install.rdf,main.js)
- 新訳:ADB Helperをハックしてみた(adb.js)
- 新訳:ADB Helperをハックしてみた(adb-client.js)
- 新訳:ADB Helperをハックしてみた(adb-running-checker.js)
- 新訳:ADB Helperをハックしてみた(adb-socket.js)