しばらくぶりに更新 Firefox 72.0 Beta 4 @うちの事情

気がついたら最後の更新が 2019年の4月。
もう年が変わるじゃないの。
というわけで、久しぶりの更新についてのドタバタの話。

67.0b7 → 72.0b4

Developer Edition を使っているということもあり、アップデートが出たらすぐに更新をしている、というわけでもないのだけれど、それでもそれなりには更新はしていたんだ。

2019/4/8 に 67.0b8 に上げようとしたときのこと。
再起動がかかってセッションを復元した後に、Firefox のプロセスが落ちる。
プロファイルをまっさらにしてやってみると正常に行くので、プロファイルの何かが絡んでいるんだろうということは、すぐに分かった。
でも、継ぎ足し継ぎ足し使ってきている(一番古いファイルは 2005/4/29)プロファイルは、実は消したくなかったりする。

Developer Edition だし、何かの修正が影響しているのかもしれないし、いちばん臭いのは自前のアドオンだろうということは薄々感づいている。
でも、すぐに落ちちゃうから、どんなエラーが出ているのかも確認できないし、ブラウザを巻き込むような悪さをアドオンができないようにするための WebExtension じゃないのかい、という気もする。

そのうち修正が入るさ、と思いながらのらりくらりと調べていたら、気がつくと 8ヶ月も経っていた (´・ω・`)

というわけで 72 β4

軽く神様にお祈りしながら押したアップデートのボタン。
セッション復元後のウィンドウの山が消えないことに感謝。

軽く確認してみると、こんな辺りがダメな感じ。

  • 設定した覚えのないダークテーマとか、なんとか
  • ブックマークツールバーで消してるはずの名前やアイコンの変更が効いてない
  • プロクシ切替のアドオン(自炊)が効いてない
  • はてなスクリーンショット(帰)(自炊)でフォトライフへのアップロードができない

まあ今までも、API の仕様変更やら削除やらでアドオンが動かなくなることはあったので、ここら辺りは想定内。
ブックマークのアイコンがおかしいの、やだなあ。
また仕様変更とかだと、追っかけるのが大変だ。

とりあえず、設定した覚えがないダークテーマが選択されているということは、何かしらの設定がリセットされている可能性もある、ということで、その辺りを念頭に置きつつテーマを規定に戻す。

プロクシ切替のアドオン(自炊)

「システム設定」と「プロクシなし」を切り替えるだけの簡単なやつを作って使ってる。
ブラウザーツールボックス(Ctrl+Alt+Shift+I)」のコンソールで確認してみるとこんなエラーが出てる。

Error: proxy.settings requires private browsing permission.

言ってることは分かる。許可されてないから、許可を与えなくちゃいけない、と。

こういう場合は、エラーメッセージでググると、何かしら引っかかるんだけど、アドオンの評価と Mozilla の修正差分くらいしか引っかからない。

リファレンスとかもこんな感じ。

Finally, there is a known issue where some extensions that use the proxy.settings API require private browsing permission to use that API even in normal windows (all other proxy API work as expected). Mozilla is working to address this and will be reaching out to impacted developers.

Extensions in Firefox 67 | Mozilla Add-ons Blog

Note: The ability to change proxy settings requires private window access because proxy settings affect both private and non-private windows. Therefore, if an extension has not been granted private window permission, calls to proxy.settings.set() will throw an exception.

proxy.settings - Mozilla | MDN

manifest.json で許可を与えるのかと思ったのだけれど、それらしい説明はない。

ああ、これか。

Extensions in private windows
 ...
Starting in Firefox version 67, you will be able to decide which extensions will run while you are in private browsing. Additionally, an extension will no longer automatically be able to work in private browsing; you must grant it permission, either when you install the extension or later, through the extension’s settings.

https://support.mozilla.org/en-US/kb/extensions-private-browsing

アドオンをインストールするときか、アドオンの設定から private window でも動くように許可を与えろ、と。
proxy.settings は、private window で動く許可を与えられていないと、private じゃない window でも例外を投げてくるんだね。

アドオンの設定から「プライベートウィンドウでの実行」に「許可する」を選択。

解決。

67.0b7 より後のどこかで変わった、ということか。
もしかすると、67.0b8 でコケてたのも、こいつが原因かもしらん。

はてなスクリーンショット(帰)(自炊)でフォトライフへのアップロード

はてなスクリーンショットは、ぼくの手元では まだ生きている。
スクリーンショット系のアドオンはいくつもあるけど、いまいち手に馴染まないし、何よりはてなフォトライフにアップロードができない。
なので、Quantum で動くようにした自炊のアドオン。こいつは動いてくれないと、非常に困る。

クリップボードへのコピーや、ローカルのファイルへの保存はできているので、フォトライフへの通信の当たりが原因だろう、というのは想像がつく。

ブラウザーツールボックス(Ctrl+Alt+Shift+I)」のコンソールで確認してみても、それらしいエラーは出ていない。

ネットワークのパネルを見てみると、
http://f.hatena.ne.jp/a-kuma3/haiku への POST が 302 リダイレクトされて、
https://f.hatena.ne.jp/a-kuma3/haiku への GET に変わってる。
https へリダイレクトされた方は STATUS:200 で返ってはいるものも、パラメータも応答も空っぽ。

"haiku" が気になる。とても気になる。
はてなハイクが終了した後も使えていたはずだよな、と思いながら、とりあえずプロトコルを http → https に変更。

お、通っちゃったゼ。

はてなブログが HTTPS 化したのが 2018/4/17。
ずうっとフォトライフは http だったのが、アナウンスもなく HTTPS 化してたのはいつだったか。
自分がアップロードした範囲だと、2019/9/1 には、はてなスクリーンショットでアップロードできていた。
アップロード画面が Flash じゃなくなったのが 2019/6/18 。
それからしばらくは両方とも生きていて、数ヶ月経ってからリダイレクトされるようになった、かな。

まあ良い。
一文字追加しただけで解決 :-)


ブックマークツールバーのアイコン

めんどくさそうなアドオンの方が解決したので、次はこちら。

問題がありそうなのは以下のふたつ。

  • フォルダのアイコンがデフォルトになってる
  • 名前を消してるはずのやつが見えてる

まず、フォルダのアイコンの方。
こいつは、userChrome.css で設定しているやつ

ブラウザーツールボックス(Ctrl+Alt+Shift+I)」のインスペクターで確認してみると、セレクタに [container] がついている。
スタイルエディターでスタイルを追加して、[container] をつけたセレクタにしてみると変わる。
ああ、これかな、と思って、userChrome.css で指定したやつを全部スタイルエディターで試してみる。

んん?
名前を消している方のルールは、スタイルエディターに貼り付けると有効だ。
[container] は要らない。
そもそも、userChrome.css が有効になっていないのか?

Mozilla plans to land a change in Firefox 69 that disables the loading of userChrome.css and userContent.css by default to improve performance.

https://www.ghacks.net/2019/05/24/firefox-69-userchrome-css-and-usercontent-css-disabled-by-default/

これか。

Timeline for the change (proposed, subject to change):

  • Firefox 68: Firefox checks if userChrome.css or userContent.css exist. If yes, preference will be set to True to allow the loading of these files on browser start. If no, preference remains set to False (don't look).
  • Firefox 69: new installations will not support userChrome.css and userContent.css by default unless preference is set by the user.
https://www.ghacks.net/2019/05/24/firefox-69-userchrome-css-and-usercontent-css-disabled-by-default/

とあるけれど、ダークテーマに変わってたこともあるし、アップデートだけれど設定がリセットされてるんじゃないのか?

toolkit.legacyUserProfileCustomizations.stylesheets は、見事に false 。
true に変更して再起動してみる。

個別に指定したアイコンや、説明を削除してたのは復活した。


フォルダがデフォルトのままだ。
サイドバーのブックマーク(Ctrl-B)と、ブラウジングライブラリ(Ctrl-Shift-B)なんかは browser.xul じゃないので、こいつらは @-moz-document を指定したルールになっているんだった。
試しに、@-moz-document を外してみると、ツールバーのアイコンは指定通りになる。

ブラウザーツールボックス(Ctrl+Alt+Shift+I)」のインスペクターをよく見ると、.xul じゃなくて .xhtml になってる。
試しに、browser.xul を browser.xhtml に変更して再起動。

お、イケちゃった。


フォルダのアイコンを古いタイプのやつに変えるのと、favicon がないサイトのデフォルトの色を薄くしているのは、こんな感じのを userChrome.css に書いているの。

/* bookmark folder - グレーのやつ、かっこ悪い */
@-moz-document url(chrome://browser/content/bookmarks/bookmarksPanel.xul),
url(chrome://browser/content/history/history-panel.xul),
url(chrome://browser/content/browser.xhtml),
url(chrome://browser/content/places/places.xul),
url(chrome://browser/content/places/bookmarksSidebar.xul) {
    treechildren::-moz-tree-image(title, container),
    treechildren::-moz-tree-image(title, open),
    .bookmark-item[container] {
        list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADmklEQVR4Xu2XS2hcVRjHf9937p1JTaCmPlpKyQtUBKFio+BKCiJKRHQviuBCaXaCa1dushChYl3oQlGoD6jSurO6qA/sQ6Jt2hprZsYkbcwkmcwjnce55zgdht6MeRmdEhf9wdl+3+/7n49zueK9ZytRtpibAgIEpw/uP2KwQ945wLMSQVSJCI7uG/76GcDSJgJg27Xme196D6wFL2toGkbffuFJYBtQaKdAR2Nya6mefx2PAYRWIpK9z2ErZc68+XBeRNgMooaI4Fg9vacB+3cBAcBZvCZAQljewAM+wlWy7DvwEQibQzwEYT2954dWSy+IG1nQACR2aiAASi37DcweZwXrCXmPEJG4+xUaKUPH2gJUEVEQXaWqgpg4ktgMUVnHwYO34IsgGuuuFBBwNVATC6xN3FiVpbk8669EhJk8h4jw2rP3Djw2uLMnEWhycPj4d4CPE8AiqsDGAqKCGiV1Zpz5zGXAsxaCR/gFMcpTD3V/L9QQlFMH9x8brC9lLOAjUNOMW1g1WAFBGsXSpy9CrcLg8PvgbCyxIR7CkNFDLzaWMr4CXwMxyLVjDCKArLw2ESH14wW8jejZ20f14gjxA7YRDtPZCzueIFeongQScQJEqBrUhKROjZGdmEJWLars6NlJ7/39OOdBDaJsLOABb9GuAbKXTnJusvQFELXuQGBYnM5iyyUefPkNcFFrAgig2OnDOC94BFT5ZzjwoLfsIf/HYQ68dfZjoBxcd/cRagIWpmfp7rsPX1vCzhxZvpTxlYhp7slmECS5i6gaMT85PgsUgGqcgFrQgFxmht0PPArlKdAEyGpPs/Bv0I476/H/xFh64QOgArig6QbiubpYJNmVILl9N7b4K2ISbfpiewA0eQeFyROMfHrpQ6Dc+hJqRPb3yXr894A4xOVBA0D47zgk7MbZGvnpicpYpvAnUIkFRECgcCXLwCODUJ0D0cZpDw5NdjOfPk9mtnS0OX10XUBE8Es5bKVKx+278EszSNumBxAIu8hlTvDthdxnzelpSaB4eZrte3rBezxXQQPag0eCTnARhakUI5+M/wCUWwRElblUmtv67wJKaNDO6YGwk8XMb1zJVb4CSoBtFRAhl8rQ9/gQVPJQN24rYVddIM3PqeLnzel9i4BDiiYMu0bfOYRzjnYjIjg0/+q7Z78EKsQgwK1AP9ANCDcGD+SANLAAuOUJlIAJYIobS7XZy/F/4ubP6ZYL/AUsgWEo7Cd4IgAAAABJRU5ErkJggg==) !important;
    }

    /*
        フォルダ以外のデフォルトアイコンを、せめて薄くする
    */
    treechildren::-moz-tree-image(title, leaf), /* パネル */
    .bookmark-item:not([container]),
    .all-tabs-button:not([image]) .toolbarbutton-icon /* 全てのタブ */
    {
        fill: silver !important;
        /* not effective ...
        list-style-image: url(...) !important;
        */
    }
}

んで、こんな感じになってる。

他にもいくつか気になっていること

とりあえず、日常で使う分には不自由しなくなった。
でも、流石にメジャーバージョンが六つもワープすると、どこが変わったのか気にはなる。
つらつらとながめて的になったところをいくつか。

クラッチパッドがなくなっちゃった

Scratchpad is deprecated as of Firefox 70 (bug 1565380), and will be removed as of Firefox 72 (bug 1519103). As an alternative, starting in Firefox 71, you can use the multi-line mode of the JavaScript console input.

https://developer.mozilla.org/en-US/docs/Tools/Scratchpad

コンソールのマルチラインモードでやれ、と。
まあ、だいたいの場合、別のエディタで編集したコードを貼り付けて使っていたから、不自由しない、っちゃあ、その通りなんだが。

きっと、誰かがアドオンを作るはず。
こんなのとか。
https://addons.mozilla.org/ja/firefox/addon/contextlets/

マルチプロセス

シングルプロセスで使っていたけど、こちらの設定もデフォルトにされてた。
強制的に殺すときは、ひとつの方がちょっとだけ便利だったりするのだけれど、とりあえず推奨値にしておくかな。
メモリが厳しくなってきたら、シングルプロセスに戻す。

userScripts

Firefox 69で、デフォルトON になった userScripts

contentScript との使い分けが分からん。

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts
content_scripts と比べると、api_script しかない。
API の userScripts.register() では css 以外は指定できるのに。

https://blog.mozilla.org/addons/2019/03/26/extensions-in-firefox-67/
↑によると、Firefox 67 から組み込まれてはいた様子。

onBeforeScript かなあ。
とりあえず、user script は contentScripts.register を使った自炊にアドオンで不自由してない。

proxy.settings

private window での実行権限を必要する、というのは、挙動を変えることができる、ということみたい。
MDN では、今のところ記載がないのだけれど、Google Chrome のドキュメントには、それっぽい記載がある。

https://developer.chrome.com/extensions/proxy
https://developer.chrome.com/extensions/types#ChromeSetting

get では incognito: true にするとプライベートなセッションの設定が、set では、scope で設定先を指定できるみたいなのだ。
プライベートブラウジングでは、匿名プロクシを噛ませて、なんて使い方はありそうだね、と。



おしまい。