TomblooをFirefox3で動くようにするパッチ#2

補足 2008.3.5

Tombloo0.1.2からFirefox3でも動くようになっているので、動かないときは新しくするといいですよ。

更新 2008.2.27

拡張機能インストール後の再起動時に動かない問題はtombloo.jscreateInstanceの中で改めてnsIExtensionManagerを取得するようにしたら解決しました。下のdiffに反映してあります。

補足 2008.2.22

Tomblooを入れて再起動してはじめのときだけじゃなくて、Tombloo以外の拡張機能でも、入れて再起動したはじめのときには動かなそうです。

TomblooがFirefox3で動かなくて困ってたけどちょっといじったら動くようになった。

Firefox3でnsIScriptableInterfaceInfoがなくなったのでそれを使ってるあたりでエラーが出てるのと、あとなんかインストール後の初回起動時にだけExtensionManagerがtype errorを出しててなんでなのかは知らない。例外をcatchするようにしたらインストール後初回起動時には動かないんだけど、もう一度再起動すると動くようになった。

extensions.checkCompatibilityをdisableにしたらバージョンチェックなくなるんですね。知らなかった。
Change CTRL+N to CTRL+T – MozillaZine Forums

diff --exclude=CVS --exclude='*.o' --exclude=.svn -rwu tombloo-0.1.1/chrome/content/library/00_Components.js tombloo/chrome/content/library/00_Components.js
--- tombloo-0.1.1/chrome/content/library/00_Components.js  2008-01-25 17:31:58.000000000 +0900
+++ tombloo/chrome/content/library/00_Components.js  2008-02-20 12:58:32.000000000 +0900
@@ -48,8 +48,8 @@
   Components.Constructor('@mozilla.org/io/string-input-stream;1', 'nsIStringInputStream', 'setData');
 const InputStream =
   Components.Constructor('@mozilla.org/scriptableinputstream;1', 'nsIScriptableInputStream', 'init');
-const InterfaceInfo =
-  Components.Constructor('@mozilla.org/scriptableInterfaceInfo;1', 'nsIScriptableInterfaceInfo');
+//const InterfaceInfo =
+//  Components.Constructor('@mozilla.org/scriptableInterfaceInfo;1', 'nsIScriptableInterfaceInfo');
 const ScriptError =
   Components.Constructor('@mozilla.org/scripterror;1', 'nsIScriptError', 'init');
@@ -84,6 +84,7 @@
 };
 function createMock(ifcNames){
+  return {};
   ifcNames = [].concat(ifcNames).map(function(ifcNames){
     return ''+ifcNames;
   });
diff --exclude=CVS --exclude='*.o' --exclude=.svn -rwu tombloo-0.1.1/components/tombloo.js tombloo/components/tombloo.js
--- tombloo-0.1.1/components/tombloo.js  2008-01-29 12:31:42.000000000 +0900
+++ tombloo/components/tombloo.js  2008-02-20 12:58:04.000000000 +0900
@@ -74,7 +74,7 @@
 }

 function getContentDir(){
-       var dir = ExtensionManager
+       var dir = getService('/extensions/manager;1', Ci.nsIExtensionManager)
                .getInstallLocation(EXTENSION_ID)
                .getItemLocation(EXTENSION_ID).QueryInterface(ILocalFile);
        dir.setRelativeDescriptor(dir, 'chrome/content');

diff --exclude=CVS --exclude='*.o' --exclude=.svn -rwu tombloo-0.1.1/install.rdf tombloo/install.rdf
--- tombloo-0.1.1/install.rdf  2008-02-02 20:19:16.000000000 +0900
+++ tombloo/install.rdf  2008-02-20 12:59:55.000000000 +0900
@@ -6,17 +6,16 @@
     <em:id>tombloo@brasil.to</em:id>
     <em:type>2</em:type>
     <em:name>Tombloo</em:name>
-    <em:version>0.1.1</em:version>
+    <em:version>0.1.1p1</em:version>
     <em:description>Tumblr Utilities</em:description>
     <em:creator>to</em:creator>
     <em:optionsURL>chrome://tombloo/content/prefs.xul</em:optionsURL>
-    <em:updateURL>http://www.asahi-net.or.jp/~xe4r-kmt/extension/tombloo/update.rdf</em:updateURL>
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.0.0.*</em:maxVersion>
+        <em:maxVersion>3.0.0.*</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>

About this entry