この記事は『Firefox OS / B2G OS Advent Calendar 2016』 15日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。
目次
前回、新訳:ADB Helperをハックしてみた(adb-client.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
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、mac,linux用ファイル
OS毎に使用されるファイルが有る事が確認できます。
adb-running-checker.js
前回に引き続き、adb.jsファイルからハックしていきたいと思います。
ご覧の通り、各OSでの差異はありません。
2014.11.06 時点から、かなりバージョンアップしているのが分かります。
モジュールは下図の通りです
予備知識
Promisehttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise
HTML5 Advent Calendar 3日目:最近気になっているHTML5の最新技術に触れてみました
http://albatrosary.hateblo.jp/entry/2014/12/03/072118
deferred.resolve()
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred#resolve()
モジュール構成
上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 37 行目
- コメント
ADB が実行中の場合、使用しているホストバージョン検出するサービス
オリジナルの ADB の adb-file-transfer をモディファイ - Cu, Cc, Ci にchrome ライブラリ読み込み
- 変数 promise に Promise.jsm を代入
- client を用いて、adb-client.js を読み込み
18 行目以降
check オブジェクト
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() を実行します。