Growl for WindowsのFirefox add-onで日本語が通らないバグを修正(修正版のインストールパッケージを暫定公開しました)

Vimperatorで、ブログやダイアリーのはてブ数を通知するプラグイン作ってるんだけど、Windows 版でもかっこよく Growl したかったので、がんばって直した。

これからパッチ投げて、プラグインのコミットしたら寝る。

直したところは、以下のとおり。

--- growlgntp.js.orig   2009-06-08 04:16:17.109375000 +0900
+++ growlgntp.js        2009-06-08 04:18:23.093750000 +0900
@@ -67,8 +67,11 @@
         var socket = transportService.createTransport(null, 0, "localhost", 23053, null);
         socket.setTimeout(socket.TIMEOUT_READ_WRITE, 2);
         var stream = socket.openOutputStream(0, 0, 0);
-        stream.write(data, data.length);
-        stream.close();
+        var binstream = Components.classes["@mozilla.org/binaryoutputstream;1"]
+                        .createInstance(Components.interfaces.nsIBinaryOutputStream);
+        binstream.setOutputStream(stream);
+        binstream.writeUtf8Z(data);
+        binstream.close();
         //socket.close(0); TODO: this causes the data to not be written for some reason
     },

通常のソケットで通信で使用する nsIOutputStream だとASCII文字しか送信できないらしく、それ以外の文字(日本語などの非ASCII文字)を送るにはバイナリで送信する必要があり、それには nsIBinaryOutputStream を使用する必要があった。

これで、無事に日本語が通った。
http://gyazo.com/3b856aae92d6c40d1289b95755f7d571.png

修正版のインストール用ファイル(追記:2009.6.8)

パッチをプロジェクトのMLに投げたのですぐに対応してくれると思うけど、それまでの間は以下から修正版をダウンロードできるようにしておきます。正式版が待てない人は使ってみてください。

Growl/GNTP 1.1.1 (UTF-8バグフィックス版)-2009.6.11 公開終了-

インストール後、アドオンの管理画面で以下のように"UTF8 bug fix version"となっていればインストール成功です。
http://gyazo.com/6276d21ee66a72ef833596efc9976b75.png

追記:2009.6.11 正式版が公開されたので個人的なバグフィクス版を公開終了

ということで、終了です。


正式版ダウンロードは以下から

https://addons.mozilla.org/en-US/firefox/addon/11611