はてなスクリーンショットで「ファイルに保存」ができない
こんなのを書きました。
修正したコードのテストをしてて思い出したのだけれど、そう言えば「ファイルに保存」が機能しなかったなあ、と。
画面キャプチャするアドオンはいくつかあるけど、直接 フォトライフ にアップロードができるところが、はてなスクリーンショットの良いところなので、ファイルに保存することは滅多にないので忘れてたさ。
とりあえずエラーの確認
アドオンのデバッグの仕方を覚えたぼくには死角はない(なんてね)。
というわけで、ブラウザツールボックスのコンソールでエラーを確認。
NS_ERROR_XPC_NOT_ENOUGH_ARGS: Not enough arguments [nsIWebBrowserPersist.saveURI] 10-Manager.js:273:0
分かりやすいエラーメッセージだ。
一応、調べるよ
まずは、公式のドキュメントを確認するところから。
void saveURI(
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowserPersist#saveURI%28%29
in nsIURI aURI,
in nsISupports aCacheKey,
in nsIURI aReferrer,
in long aReferrerPolicy,
in nsIInputStream aPostData,
in string aExtraHeaders,
in nsISupports aFile,
in nsILoadContext aPrivacyContext
);
ああ、引数の数が合ってないじゃない(エラーメッセージのまんま)。
aReferrerPolicy Requires Gecko 36.0 とある第4引数が怪しい。
っていうか、developer.mozilla.org にあるサンプルコードも、引数が 7つしかないじゃない (´・ω・`)
他の似たようなアドオンでも、こんな指摘が。
Very nice, but a bit abandoned for now (manual fix for FF 36+ needed)
https://addons.mozilla.org/ja/thunderbird/addon/abduction/reviews/
Need replacing this:
persist.saveURI(source, null, null, null, null, null, picker.file, privacyContext);
with this (one more null):
persist.saveURI(source, null, null, null, null, picker.file, privacyContext);
ゴールは目前
chrome/content/browser/10-Manager.js の 273 行目、saveURI メソッドに引数を足してみる。
// wbp.saveURI(uri, null, null, null, null, filePicker.file, privacyContext); wbp.saveURI(uri, null, null, null, null, null, filePicker.file, privacyContext);
いえーい。
修正を反映するためには、
- xpinstall.signatures.required を false に変更して、署名検証をスキップする
- Firefox の再起動
が、必要。
というわけで
Firefox 44 の対応を含めて、フィードバックしてもらえるように運営に お問い合わせしてみた。
あまりアドオンを入れる方ではないけれど、やっぱり、署名の検証をスキップするのは、できればしたくないしね。