さて、ここではGoogle GearsのLocalServer機能を利用して、ボタンをクリックしたらページのキャッシュを保存するアプリケーションを作成してみる。ページのキャッシュをjMakiの拡張機能として実装するには、extension.jsのexecute関数においてResourceStoreを利用してキャプチャを実行すればよい。LocalServerの利用方法に関する詳細はGoogle Gearsのドキュメントを参照していただきたい。
今回はexecute関数および関連する関数をリスト5のように作成した。このコードをリスト4の(3)部分に記述すればよい。
(4)のinitLocalserverは、LocalServerを初期化するための関するである。execute関数の本体は(5)の部分で、Storeを開いて第2引数に指定されたファイル群をキャプチャする。この部分の処理が、(1)の設定によって/google/gears/executeに対するアクセスにマップされる。(5)はキャプチャの実行に対するコールバック関数である。
リスト5 execute関数の実装
var localServer = null;
var store = null;
// (4)LocalServerの初期化
function initLocalserver(store_name) {
if (!window.google || !google.gears) {
jmaki.log("Google Gears not found.");
return;
}
try {
localServer =
google.gears.factory.create('beta.localserver', '1.0');
} catch (ex) {
jmaki.log('Could not create localserver: ' + ex.message);
}
store = localServer.openStore(store_name);
}
// (5)execute関数
this.execute = function(args) {
var store_name = args.storename;
var fileToCapture = args.files;
if (!localServer) initLocalserver(store_name);
if (!localServer) {
jmaki.log("Google Gears Extension: Unable to find localserver.");
return;
}
// Storeを作成
store = localServer.createStore(store_name);
if (!store) {
jmaki.log("Google Gears Extension: Unable to create store.");
return;
}
jmaki.log("Google Gears Extension: Created the store.");
// キャプチャを実行
store.capture(filesToCapture, captureCallback);
}
// (6)コールバック関数
function captureCallback(url, success, captureId) {
jmaki.log("Google Gears Extension: " + url + ' captured ' + (success ? 'succeeded' : 'failed'));
}
}