Firefox に凹まされた件

散々な一日だった。

  • 最新版が出ていると add-on controller が教えてくれたにもかかわらず XUL/Migemo が自動でも手動でも更新できなかった件。
    • いまだにわかんない。 version check に引っかかっていたわけではないみたいだしというかそもそもダウンロード自体ができてなかったみたい。 PC 再起動でこれは治った。
  • 再起動するたびに更新が失敗しましたと出てウザかった件。
    • Firefox 3.0.2 の自動更新が動いていたみたいなんだけど複数起動してて一方だけ vimperator plugin 書きのために再起動を繰り返してたのでずっと失敗してたというオチ。ぶっちゃけ前述の XUL/Migemo がいつまでもダメなのかと勘違いしていた。
    • いい加減ウザいのに耐えられなくなったので何も考えずに PC 再起動したらここまでは治ったもののいきなり 3.0.2 へ。このへんからついていけなくなる。
  • 3.0.2 で vimperator のキーバインド j, k, f がきかなくなっていた + Minibuffer, AutoPagerize, LDRize 以外の Greasemonkey script が動かなくなっていた件。
    • 前者で気づけばよかったんだけど後者もあって何が原因かよくわからなくてメダパニ状態。 vimperator を切ったら全部治ったので vimperator が悪さをしていると思ったんだけど実は違った。
    • http://d.hatena.ne.jp/nokturnalmortum/20080925#1222316039 に書いてあるとおり ldrize_cooperation.js が悪さをしてるみたい。 plugin フォルダから削除したらすべて治った。
    • 原因は http://d.hatena.ne.jp/nokturnalmortum/20080925#1222336042 にあるように window.eval の動作が変更されたということらしいんだけど正直わからん。該当部分のコードが何やってるのかわからんしていうかそもそも window.eval が何やるものなのかサッパリ ( サイ本も web も MDC も調べたけどどこにも載ってないんだよね。 ) 。
    • とりあえずわからないのがどうしても納得いかなかったのでいろいろググってみたらどうもここら辺の処理は http://d.hatena.ne.jp/brazil/20080106/1199611086 が元ネタみたい。シンプルな形でソース読んだら意味わかった。いやでもこれマズイんじゃないかな色々と。っていうのはおいといて Greasemonkey の挙動がおかしくなる原因は ldrize_cooperation.js が仕込んだコードがエラー吐いてそれ以降の Greasemonkey script が実行されないからだとわかった。
    • で、タブごとの sandbox 内で働いてる Greasemonkey script のオブジェクトを取ってくる方法は普通に代入じゃダメなのかと思ってまたいろいろ見てたら gmperator.js ( 読みやすかった refer: http://d.hatena.ne.jp/teramako/20080216/p1 , see also: http://d.hatena.ne.jp/teramako/20080213/p1 ) で似たようなことやってたので代入でいいと結論した。
    • LDRize がないとちょっと精神的に耐えられなかったので上記 patch を手動であてたら動くようになった。あ、でも LDRize への変更はしなくていいみたい。あと vimperator の command-line から Minibuffer のコマンドをたたく気がないなら以下のようにしてもかまわない。以下の場合、 ldrize_cooperation.js の変更のみで済むというメリットもある。
--- ldrize_cooperation.js.orig    2008-09-23 04:30:11.578125000 +0900
+++ ldrize_cooperation.js    2008-09-26 11:55:02.765625000 +0900
@@ -114,7 +114,7 @@
         initialize: function(){
             var self = this;
             this.LDRize = {getSiteinfo: function(){return undefined;}};
-            this.Minibuffer = null;
+//            this.Minibuffer = null;
             this.handlerInfo = handlerInfo;
 
             this.LDRizeCooperationPanel = this.setupStatusbarPanel();
@@ -161,12 +161,12 @@
             this.addAfter(GreasemonkeyService,'evalInSandbox',function(code,codebase,sandbox){
                 if(sandbox.window.LDRize != undefined && sandbox.window.Minibuffer != undefined){
                     sandbox.window.addEventListener("focus",function(){
-                        self.LDRize = window.eval("self",sandbox.LDRize.getSiteinfo);
-                        self.Minibuffer = window.eval("command",sandbox.Minibuffer.addCommand);
+                        self.LDRize = sandbox.LDRize;
+//                        self.Minibuffer = sandbox.Minibuffer.command;
                     },false);
                     if(window.content.wrappedJSObject == sandbox.unsafeWindow){
-                        self.LDRize = window.eval("self",sandbox.LDRize.getSiteinfo);
-                        self.Minibuffer = window.eval("command",sandbox.Minibuffer.addCommand);
+                        self.LDRize = sandbox.LDRize;
+//                        self.Minibuffer = sandbox.Minibuffer.command;
                     }
                 }
             });
@@ -263,6 +263,7 @@
                     });
                     liberator.commandline.echo(showString, liberator.commandline.HL_NORMAL, liberator.commandline.FORCE_MULTILINE);
                 } ,{});
+/*
             liberator.commands.addUserCommand(["mb","m","minibuffer"], "Execute Minibuffer",
                 function(arg){self.Minibuffer.execute(arg)},
                 {
@@ -277,6 +278,7 @@
                         return [0,completionList];
                     }
                 });
+*/
             liberator.commands.addUserCommand(["pindownload"], "Download pinned links by any software",
                 function(arg){ self.downloadLinksByProgram(self.getPinnedItems());} ,{});
             liberator.commands.addUserCommand(["toggleldrizecooperation","toggleldrc"], "Toggle LDRize Cooperation",