@requireでjQueryやunderscore.jsを読み込んでるユーザースクリプトを使うとき、requireディレクトリにキャッシュがない場合、saveURI()で失敗するようになってます。
調べるとFirefox 36以降でパラメータが増えてるのが原因っぽいです。
void saveURI( in nsIURI aURI, in nsISupports aCacheKey, in nsIURI aReferrer, in long aReferrerPolicy, in nsIInputStream aPostData, in string aExtraHeaders, in nsISupports aFile, in nsILoadContext aPrivacyContext );
ということで wbp.saveURI(uri, null, null, null, null, aFile, null); となってる箇所の4番目(in long aReferrerPolicy)に null を追加すると保存されます。
wbp.persistFlags = Ci.nsIWebBrowserPersist.PERSIST_FLAGS_BYPASS_CACHE; wbp.persistFlags |= Ci.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION; wbp.saveURI(uri, null, null, null, null, null, aFile, null); USL.debug("getContents: " + aURL);
同じようにメニューのSave Scriptをクリックしたときに保存できないのもsaveURIのパラメータが足りないからです。
こんな感じで null 追加。
var loadContext = win.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) .QueryInterface(Ci.nsILoadContext); wbp.saveURI(uri, null, uri, null, null, null, fp.file, loadContext);
XPCOM廃止するとか言ってんのに今さら仕様変更すんなよ……。