[Firefox] アドオン用API、作成方法のまとめ:セッション関連など

基本

開発環境

Add-on SDK

最新のもの。基本的にはこれを使う。

独自の使いやすいAPIが提供されている。

機能は限られているが、下記のXPCOMを併用することもできる。

アドオンのインストール後に再起動の必要がない。

XUL

昔からあるもの。XML形式のXULで記述し、既存のインターフェイスを上書きする形で動き(XULインターフェイス)、XPCOMと呼ばれるAPIを使う。

基本的に、XMLをいちいち手書きするしかなく、非常に煩雑。

アドオンのインストール後に再起動の必要がある。

リンク

インストール – Add-on SDK Documentation
チュートリアル – Add-on SDK Documentation

gBrowser

現在実行中のブラウザを示すグローバル変数のオブジェクト。

セッション

API

AString getBrowserState()

すべてのウィンドウのすべてのタブ情報を含む、ブラウザ全体のセッション情報をJSON形式の文字列で返す。

AString getWindowState(in nsIDOMWindow aWindow)

指定ウィンドウのすべてのタブ情報をJSON形式で返す。

AString getTabState(in nsIDOMNode aTab)

指定タブのセッション情報をJSON形式で返す。

ただし、クッキー情報は含まないので、必要な場合はgetWindowState()を使う。

void setBrowserState(in AString aState)

現在のブラウザの状態を、すぐさまJSON形式の指定情報に変更する。

void setWindowState(in nsIDOMWindow aWindow, in AString aState, in boolean aOverwrite)

指定ウィンドウにJSON形式のセッション情報を文字列で与える。

void setTabState(in nsIDOMNode aTab, in AString aState)

指定タブにJSON形式のセッション情報を文字列で与える。

nsIDOMNode duplicateTab(in nsIDOMWindow aWindow, in nsIDOMNode aTab)

タブを複製。

サンプル

var ss = Components.classes["@mozilla.org/browser/sessionstore;1"]
		.getService(Components.interfaces.nsISessionStore);
var currentTab = gBrowser.selectedTab;
// getterから取得
var retrievedData = ss.getTabState(currentTab);
// setterで指定
ss.setTabState(currentTab, retrievedData);

リンク

Session store API | MDN
nsISessionStore – Mozilla | MDN

サイドバー

サイドパネルともいう。デフォルトでブックマークなどを表示するところ。

Firefox 29から導入された新しいサイドバーAPIを使う。Add-on SDKを使うことが前提になっている。

「window.sidebar API」はFirefox 23から、すでに廃止となっている。

Creating a Firefox sidebar | MDN

データベース

SQLite

Storage APIを使う。O/Rマッパー的な機能がある。

Use SQLite – Mozilla | MDN