らいふうっどの閑話休題

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

新訳:ADB Helperをハックしてみた(install.rdf,main.js)

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

目次

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

  1. フォルダ内のファイル構成
  2. install.rdf
  3. main.js
  4. 今回のまとめ
  5. 関連記事
  6. 今年の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毎に使用されるファイルが有る事が確認できます。


install.rdf
  ※rdfファイル Resource Description Framework (リソース・ディスクリプション・フレームワークRDF) とは、 ウェブ上にある「リソース」を記述するための統一された枠組 weblioより抜粋 ご覧の通り、中身はXMLファイルでした。 並びはWindos,macLinuxの順番です。 各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 用いて登録解除
  アドオンの main.js コードは、アドオンが読み込まれるとすぐに実行されます。 ※ADD-ON SDKより抜粋
参考リンク
  • アドオンのロードとアンロードのリッスン https://dev.mozilla.jp/addon-sdk-docs/dev-guide/tutorials/load-and-unload.html
  • Lifecycle - Add-on SDK (Jetpack SDK) - あすかぜ・ねっと http://www.asukaze.net/etc/jetpack/105.html
  • Device.jsm

  • 今回のまとめ
      数年ぶりに同じアドオン/ xpi ファイルをハックしてみると ソースの読み方やバージョンアップによる改変の度合いが良くわかります
    コードの見え方も変わっているのを感じます。
    引き続きハックしていきたいと思います。


    関連記事


    今年のAdvent Calendar


    去年のAdvent Calendar