開発ツールのインストール
基本的には、tarファイルをダウンロードして、展開するだけ完了です。
展開したディレクトリの中にあるbinディレクトリにパスを通すと更によいでしょう。
詳しくは、次のページを参照してください。
https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation
アドオンのプロジェクトの作成
プロジェクトのディレクトを適当な場所に作成して、その直下で次のコマンドを実行します。
1 |
すると、ディレクトリやファイルが作成されます。
その中のlibディレクトリの中のmain.jsにプログラムを記述します。
アドオンのテスト
main.jsを作成したら、次のコマンドで簡単にテストすることができます。
1 |
作成したアドオンが一時的にインストールされた状態で、Firefoxが立ち上がります。
アドオンのパッケージング
Firefoxにアドオンをインストールするには、パッケージングする必要があります。
次のコマンドで、xpiファイルを作成することができます。
1 |
アドオンのインストール
アドオンを公開せずに、XPIファイルをFirefoxにインストールするには、Firefoxのアドオン画面で次のようにします。
ツール > アドオン > 「設定」アイコン > ファイルからアドオンをインストール
通信を監視するプログラム
次のコードは、Firefoxが生成した全てのHTTPリクエストの接続先URLをコンソールに出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // クラスを作成するライブラリをインポートする var { Class } = require('sdk/core/heritage'); // 基本的なクラスUnknownをインポートする // Unknownクラスは、nsISupportsインターフェースを実装してる。 var { Unknown } = require('sdk/platform/xpcom'); // XPCOMライブラリをインポートする。 // CCは、Components.classの別名。 // Ciは、Components.interfacesの別名。 // 詳しくは、https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Chrome_Authorityを参照。 var { Cc, Ci } = require('chrome') // いろんなものを監視するライブラリobserver serviceを取得する。 // observer serviceのaddObserverメソッドで監視内容を設定する。 var observerService = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService); // StarObserverクラスを定義 // observer serviceのaddObserverメソッドは、第一引数にnsIObserverインターフェースを指定する必要があるため、 // StarObserverは、nsIObserverインターフェースを実装する。 // nsIObserverのobserveメソッドを実装しなければならない。 var StarObserver = Class({ extends: Unknown, // Unknownクラスを継承する。 interfaces: [ 'nsIObserver' ], // nsIObserverインターフェースを実装する。 // どんな情報を監視するか指定する。 // この値は、addObserverメソッドの第二引数に渡される。 // 他の指定できるtopicは、https://developer.mozilla.org/ja/docs/Observer_Notificationsを参照。 topic: 'http-on-modify-request', register: function register() { observerService.addObserver(this, this.topic, false); }, unregister: function() { observerService.removeObserver(this, this.topic); }, // addObserverメソッドに渡されるコールバック関数。 // このコールバック関数の引数には、nsIHttpChannelのインスタンスが渡される。 // nsIHttpChannelでリクエストの情報の取得やキャンセルなどができる。 observe: function observe(subject, topic, data) { // キャスト的なことをする。 // これをしないと、nsIHttpChannelのメソッドが使えない。 subject.QueryInterface(Ci.nsIHttpChannel); // URLを取得する。 var url = subject.URI.spec; // コンソールにURLを取得する。 console.log('star observer:', url); } }); var starobserver = StarObserver(); starobserver.register(); // nsIObserverを登録する。 |