TracDragDropPluginをChrome7.0betaに対応

id:jun66j5さんが作成された便利なプラグイン、TracDragDropPluginですが、Google Chrome4には対応しているそうですが、自分が普段使っているChrome7.0betaでは残念ながら動かない。

デバッグしてみると、HTML5Google Gearsの判定がうまくいっていない模様で、ちょっと修正すれば動くようになりました。

trac-hacksにチケットを投稿しようと思いましたが、TracDragDropPluginのコンポーネントがなぜか現在は存在しないようなので投稿できず…。なのでここにパッチ内容を書いておきます。

Index: 0.12/tracdragdrop/htdocs/tracdragdrop.js
===================================================================
--- 0.12/tracdragdrop/htdocs/tracdragdrop.js	(revision 9287)
+++ 0.12/tracdragdrop/htdocs/tracdragdrop.js	(working copy)
@@ -352,11 +352,10 @@
         try {
             new FileReader();
             var xhr = new XMLHttpRequest();
-            if (!xhr.upload || !xhr.sendAsBinary) {
-                return false;
+            if (xhr.upload && xhr.sendAsBinary) {
+                methods = methodsHTML5;
+                return true;
             }
-            methods = methodsHTML5;
-            return true;
         }
         catch (e) {
         }
Index: 0.11/tracdragdrop/htdocs/tracdragdrop.js
===================================================================
--- 0.11/tracdragdrop/htdocs/tracdragdrop.js	(revision 9287)
+++ 0.11/tracdragdrop/htdocs/tracdragdrop.js	(working copy)
@@ -347,11 +347,10 @@
         try {
             new FileReader();
             var xhr = new XMLHttpRequest();
-            if (!xhr.upload || !xhr.sendAsBinary) {
-                return false;
+            if (xhr.upload && xhr.sendAsBinary) {
+                methods = methodsHTML5;
+                return true;
             }
-            methods = methodsHTML5;
-            return true;
         }
         catch (e) {
         }

※パッチ補足:Chrome7betaだとxhr.uploadは存在するがxhr.sendAsBinaryはundefinedなのでfalseが返り、GoogleGearモードになっていませんでした。