はてなスクリーンショット拡張 (Firefox) への最後通告
はてなでは、サービスを便利にご利用いただけるツール群を「便利なツール」のページにて提供しておりましたが、現在のご利用状況を鑑み、来たる3月31日をもちましてこちらのページでのツールの提供を終了、一部のツールを廃止することといたしました。
「便利なツール」(拡張、ツールバー、アプリケーション)に掲載されているツールのうち一部の提供を終了します - はてなの日記 - 機能変更、お知らせなど
分かってはいたけれど、運営からの最後通告がとうとう出た。
まあ良い。
幸いにして、MIT License なので好きにさせてもらう。
そういえば、Firefox 46 で、アドオンの署名検証をスキップする xpinstall.signatures.required が効かなくなるという噂があった。
その検証がてらいくつか。
Firefox 46.0b1 (64bit β)
フォトライフにアップロードをメニューで選ぶと、http://www.hatena.ne.jp/tool/hatenascreenshot?ref=login に飛ばされる。
でも、クリップボードにコピーやファイルに保存は動く。
いったん、ログアウトして、もう一度ログインしたら、正しく動くようになった。
多分、紹介ページに飛ばされているのはこの辺りの処理だ。
./chrome/content/browser/10-Manager.js:
openUILinkIn("http://www.hatena.ne.jp/tool/hatenascreenshot?ref=login", 'tab');
resources/modules/70-User.js をみるとログイン判定は Cookie を見ているらしいけれど、Firefox の起動直後だと うまく判定できてないケースがあるんだな、きっと。
他にも、フォトライフのアップロード先フォルダが「トップ」しか出ないことがある。
微妙。地雷の可能性がある。
とはいえ、xpinstall.signatures.required = false の指定が FF46 から無効になるという噂があったけど、どうやら動くみたいだ。
about:debugging で「アドオンのデバッグを有効化」のチェックを外しても動くなあ。
まあ、無効にするのを先延ばしにしてくれる分にはありがたいんだけど。
Firefox 47.0a2 (64bit) で動かなくなってる
こんなエラー。
10:38:42.572 TypeError: can't convert undefined to object 00-utils.jsm:9:22 getService() 00-utils.jsm:9 <匿名関数> 00-utils.jsm:26 <匿名関数> autoloader.js:4 10:39:53.475 TypeError: hScreenshot.Manager is undefined browser.xul:1:1
1 : // エクスポートしたくないメンバの名前はアンダースコア(_)からはじめること。 2 : 3 : const Cc = Components.classes; 4 : const Ci = Components.interfaces; 5 : const Cr = Components.results; 6 : const Cu = Components.utils; 7 : 8 : let getService = function getService(name, i) { ★ 9 : let interfaces = Array.concat(i); 10 : let service = Cc[name].getService(interfaces.shift()); 11 : // interfaces.forEach(function(i) service.QueryInterface(i)); 12 : interfaces.forEach(i => service.QueryInterface(i)); 13 : return service; 14 : }; 15 : 16 : // See https://developer.mozilla.org/en/OS_TARGET for OS_TARGET values. 17 : const OS_TARGET = getService('@mozilla.org/xre/app-info;1', Ci.nsIXULRuntime).OS; 18 : const IS_WIN = OS_TARGET.indexOf("WIN") === 0; 19 : const IS_MAC = OS_TARGET === "Darwin"; 20 : const IS_OSX = IS_MAC; 21 : 22 : // ここら辺でサービスの取得などをしているが Services.jsm を使うと良さそう 23 : // https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm 24 : 25 : const Application = ★ 26 : getService("@mozilla.org/fuel/application;1", Ci.fuelIApplication); 27 : const PrefetchService = 28 : getService("@mozilla.org/prefetch-service;1", Ci.nsIPrefetchService); 29 : const DirectoryService = 30 : getService('@mozilla.org/file/directory_service;1', Ci.nsIProperties);
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API/FUEL
https://bugzilla.mozilla.org/show_bug.cgi?id=1090880
FUEL が deprecated だった、ってやつ (FF40-) が、ついに削除されたらしい (FF47)。
Application を使ってるところを全てコメントアウトしてみる。
うん、動く。
Application を置き換えれば良いんだね。
Application の使い方は二種類。
var nowDebug = !!Application.prefs.get('extensions.hatenascreenshot.debug.log').value; ... Application.console.log((msg || '').toString());
コメントにあるように、Services.jsm を使ってみるか。
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm
//var nowDebug = !!Application.prefs.get('extensions.hatenascreenshot.debug.log').value; var nowDebug = Services.prefs.getBoolPref('extensions.hatenascreenshot.debug.log'); ... // Application.console.log((msg || '').toString()); Services.console.logStringMessage((msg || '').toString());
extensions.hatenascreenshot.debug.log = true にしても、何もコンソールに出てこないなあ。
Application を使ってるところを削除しても良かったかな。
Console とか Log を使った方が良いのかもしらんけど。
https://developer.mozilla.org/en-US/docs/Mozilla/Debugging/Debugging_JavaScript
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Log.jsm
https://developer.mozilla.org/en-US/docs/Web/API/console
まあ、気が向いたときに変更してみる。
とりあえず動いてくれれば良いのさ。
「正常に起動されていません」
何か、途中からブラウザツールボックスを開こうとすると「正常に起動されていません。SAFEモードで起動できるよ」
みたいなのが表示されるようになった。
00-utils.jsm をいじったのと、extensions.hatenascreenshot.debug.log を true にしたくらい。
元に戻しても消えない。
コンソールのログを見ても、大きく変わってないような。
他のソース(SessionManager?)でも、式クロージャのやつとか
12:06:41.784 expression closures are deprecated bootstrap.js:35:18
jar:file:///D:/Firefox%20profile/fx46_64_DEV/extensions/%7B1280606b-2510-4fe0-97ef-9b5a22eafe30%7D.xpi!/bootstrap.js
まあ良いか。
とりあえず動いているようだし、気にしない(ことにする)。
devtools
devtools の階層がなくなるよ、ってやつ。
DEPRECATION WARNING: This path to Console.jsm is deprecated. Please use Cu.import("resource://gre/modules/Console.jsm") to load this module. You may find more details about this deprecation at: https://bugzil.la/912121 resource://gre/modules/devtools/Console.jsm 19 null
アドオンのメンテナーって大変なんだなあ(実感)。