らいふうっどの閑話休題

興味のあることをゆる~く書いていく

新訳:ADB Helperをハックしてみた(devtools-import.js )

            この記事は<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をハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. devtools-import.js
  3. 予備知識
  4. モジュール構成
  5. 今回のまとめ
  6. 関連記事
  7. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
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
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル ※2 : version 0.7.1 時点で有ったファイル ※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル ※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル OS毎に使用されるファイルが有る事が確認できます。


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() 関数
  • パス格納用変数:scope を定義します。
  • パス格納用変数:scope を用いてコンポーネントをインポートします。
  • パス格納用変数:scope を返します。
37 ~ 55 行目
devtoolsImport() 関数
  • scopedImport() 関数を実行します。
  • 例外発生時は以下の処理を行います。
    • コメント
      Firefox 43 以前のバージョンは、リネームされています。
    • PATH_RENAMES の配列分繰り返します。
    • 引数:path と一致しない場合、処理を継続します。
    • 上記以外場合、リネームし、scopedImport() 関数を実行します。


今回のまとめ
  今回は、devtools モジュールをインポートした時の処理をハックしました。 次回は、devtools-require.js をハックする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar