この記事は<a href="http://www.adventar.org/calendars/1722" target="_blank">『Firefox OS / B2G OS Advent Calendar 2016』</a> 22日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。
目次
前回、新訳:ADB Helperをハックしてみた(device.js)に引き続き、 adb-helperをハックしていきたいと思います
フォルダ内のファイル構成
main.js
○
○
○
adb.js
○
○
○
adb-client.js
○
○
○
adb-running-checker.js
○
○
○
adb-socket.js
○
○
○
bootstrap.js
○
○
○
scanner.js
○
○
○
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
devtools-import.js
前回に引き続き、devtools-import.js ファイルをハックしていきたいと思います。
ご覧の通り、各OSでの差異はありません。
2014.11.06 時点では、このファイルは存在していませんでした。
モジュールは下図の通りです
予備知識
Components.utils.import
https://developer.mozilla.org/ja/docs/Components.utils.import
モジュール構成
上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 29 行目
- Cu にchrome ライブラリ読み込み
- コメント
Firefox 44 以降のバージョンは、再構成されています。
以下を参照してください
https://bugzil.la/912121 - devtools 用配列変数:PATH_RENAMES を定義します。
30 ~ 35 行目
scopedImport() 関数
scopedImport() 関数
- パス格納用変数:scope を定義します。
- パス格納用変数:scope を用いてコンポーネントをインポートします。
- パス格納用変数:scope を返します。
37 ~ 55 行目
devtoolsImport() 関数
devtoolsImport() 関数
- scopedImport() 関数を実行します。
- 例外発生時は以下の処理を行います。
- コメント
Firefox 43 以前のバージョンは、リネームされています。 - PATH_RENAMES の配列分繰り返します。
- 引数:path と一致しない場合、処理を継続します。
- 上記以外場合、リネームし、scopedImport() 関数を実行します。
- コメント
今回のまとめ
今回は、devtools モジュールをインポートした時の処理をハックしました。
次回は、devtools-require.js をハックする予定です。
関連記事
- 新訳: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)
- 新訳:ADB Helperをハックしてみた(bootstrap.js)
- 新訳:ADB Helperをハックしてみた(scanner.js)
- 新訳:ADB Helperをハックしてみた(device.js)
今年のAdvent Calendar
去年のAdvent Calendar