らいふうっどの閑話休題

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

新訳:ADB Helperをハックしてみた(adb-running-checker.js)

この記事は『Firefox OS / B2G OS Advent Calendar 2016』 15日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

前回、新訳:ADB Helperをハックしてみた(adb-client.js)に引き続き、 adb-helperをハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. adb-running-checker.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毎に使用されるファイルが有る事が確認できます。


adb-running-checker.js
  前回に引き続き、adb.jsファイルからハックしていきたいと思います。   ご覧の通り、各OSでの差異はありません。 2014.11.06 時点から、かなりバージョンアップしているのが分かります。 モジュールは下図の通りです



モジュール構成
  上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 37 行目
  • コメント
    ADB が実行中の場合、使用しているホストバージョン検出するサービス
    オリジナルの ADB の adb-file-transfer をモディファイ
  • Cu, Cc, Ci にchrome ライブラリ読み込み
  • 変数 promise に Promise.jsm を代入
  • client を用いて、adb-client.js を読み込み
18 行目以降
check オブジェクト
  • Deferred オブジェクト deferred を promise.defer() 用いて生成
  • runFSM() 関数
  • setupSocket() 関数
 
関数名
処理概要
runFSM() 関数
  • 変数:state を判定し、状態毎の処理を実行します。
setupSocket() 関数
  • 関数 socket.s.onerror を定義し、引数:"running checker onerror" で、deferred.reject() を実行します。
  • 関数 socket.s.onopen を定義し、関数runFSM() を実行します。
  • 関数 socket.s.onclose を定義します。
  • 関数 socket.s.ondata を定義し、関数runFSM() を実行します。


今回のまとめ
  今回のモジュールは、 adb 実行時におけるチェック処理でした。 次回は、adb-socket.js をハックする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar