この記事は『Firefox OS / B2G OS Advent Calendar 2016』 10日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。
目次
前回、新訳:ADB Helperをハックしてみた(前篇)に引き続き、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毎に使用されるファイルが有る事が確認できます。
install.rdf
※rdfファイル
Resource Description Framework (リソース・ディスクリプション・フレームワーク、RDF) とは、
ウェブ上にある「リソース」を記述するための統一された枠組
weblioより抜粋
ご覧の通り、中身はXMLファイルでした。
並びはWindos,mac,Linuxの順番です。
各OSとの差異は無いか比較してみると・・・・・。
トピックは、versionタグとupdateURLタグです。
updateURLタグは、ご覧の通り各OSのURLへ繋がるようになっていますね。
2014.11.06 時点から、かなりバージョンアップしているのが分かります。
main.js
次は、main.jsを見たいと思います。
2014.11.06 時点から、かなりバージョンアップしているのが分かります。
こちらは、ご覧の通り、各OSでの差異はありません。
関数がどの程度有るか調べると・・・・・・・
拡大すると下記画像になります。
関数名
処理概要
ファイル先頭部
- defineLazyGetter 定義
- events 定義
- system 定義
- Devices 定義
- gDevToolsBrowser 定義
- defineLazyGetter を用いて、adb.js 取得
- defineLazyGetter を用いて、fastboot.js 取得
- defineLazyGetter を用いて、device.js 取得
onADBStart()
- devtools/client/webide/modules 内の runtimes を読み込み
-
runtimes のインスタンス Runtimes が存在する時
- scanner.js を読み込み
- scanner.js を登録
- adb.js が開始された時、trackDevices() 実行
onADBStop()
adb.js を停止します。
onFastbootStart()
fastboot.js の startPolling() を実行
onFastbootStop()
fastboot.js の stopPolling() を実行
onConnected(deviceId)
Device のインスタンス device を引数 deviceId 用いて登録
onDisconnected(deviceId)
Device のインスタンス device を引数 deviceId 用いて登録解除
参考リンク
今回のまとめ
数年ぶりに同じアドオン/ xpi ファイルをハックしてみると
ソースの読み方やバージョンアップによる改変の度合いが良くわかります
コードの見え方も変わっているのを感じます。
引き続きハックしていきたいと思います。
関連記事
今年のAdvent Calendar
去年のAdvent Calendar