目次
前回:ADB Helperをハックしてみた(adb-socket.js篇)に引き続き、
adb-helperをハックしていきたいと思います
フォルダ内のファイル構成
windows | mac | linux | |
---|---|---|---|
install.rdf | ○ | ○ | ○ |
main.js | ○ | ○ | ○ |
adb.js | ○ | ○ | ○ |
adb-client.js | ○ | ○ | ○ |
adb-running-checker.js | ○ | ○ | ○ |
adb-socket.js | ○ | ○ | ○ |
bootstrap.js | ○ | ○ | ○ |
scanner.js | ○ | ○ | ○ |
subprocess.js | ○ | ○ | ○ |
subprocess_worker_unix.js | - | ○ | ○ |
subprocess_worker_win.js | ○ | - | - |
前回に引き続き、bootstrap.jsファイルをハックしていきたいと思います。
予備知識
Bootstrap - ウィキペディア
http://is.gd/pcEkKn
Bootstrap · The world's most popular mobile-first and responsive front-end framework.
http://getbootstrap.com/
The Official Bootstrap Blog
http://blog.getbootstrap.com/
皆さんは、当然Bootstrapをご存知かと思います。
不勉強な自分は、今回初めてじっくり見る事になります。
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
bootstrap.js
ご覧の通り、各OSでの差異はありません。(当たり前ですね。)
モジュールの構成はシンプルな感じです。
上記のComponents.interfaces,Components.utilsを用いて
インターフェースオブジェクトへのアクセスを定義します。
配列REASONに下記値を格納します。
'unknown', 'startup', 'shutdown', 'enable', 'disable','install', 'uninstall', 'upgrade', 'downgrade'
コメントには、このように記載されています。
Usefull piece of code from :bent
http://mxr.mozilla.org/mozilla-central/source/dom/workers/test/extensions/bootstrap/bootstrap.js
【訳文】
方向性:有益なコードを部分的に流用
http://mxr.mozilla.org/mozilla-central/source/dom/workers/test/extensions/bootstrap/bootstrap.js
・引数からファイルパスを取得
・取得したファイルパスを用いてリソース名取得
・リソース名を返します
関数定義のみです。
◆オブジェクト定義
loaderModule:'resource://gre/modules/commonjs/toolkit/loader.js'をインポートします。
{ Loader, Require, Main }:loaderModuleをロードします。
unload:loaderModule.unloadを代入します。
◆定数定義
LOGPREF:"extensions.adbhelper@mozilla.org.debug"
LOGPREFIX:"ADB Addon Helper:"
startup関数の内部関数です。
- canLog() Services.jsmのPreferences serviceを利用して 真偽値をセットします
- canLog()+ログ出力用無名関数
- canLog()+ワーニング出力用無名関数
- canLog()+エラー出力用無名関数
- canLog()+デバッグ出力用無名関数
・引数reasonCodeより、上記配列REASONからキーワードを格納します。
・loaderが有る場合、上記キーワードでunloadします。
・mainModuleオブジェクトが存在し、且つmainModule.shutdown関数が実行していない時に
mainModule.shutdown()を実行します
関数定義のみです。
今回のまとめ
今回は、大分間が空いてしまいました。(1/5以来)
理由は、諸々の活動をしてました。
この活動は、また別の機会で書きたいと思います。
次回はscanner.jsファイルの中身をハックしていきたいと思います。
お時間のある方、宜しかったら見て下さい。m(__)m
グンマー@坊主五厘
追伸
何か間違いが有った場合は、ご指摘ください。
バックナンバー