Firefox 44 で Hatena Bookmark 拡張が動かなくなったので、Google Chrome 用の拡張を流用してみた話

Firefox 44 をインストールして Hatena Bookmark 拡張が動かなくなってしまいました。
個人的にはブコメが見られれば良いだけなので自作してみようかとも考えましたが、
ふと、「新しいfirefoxのweb extensionsがChromeExtentionとの互換性そのままだった」 を思い出し、
いけるのでは?と思い立ってやってみました。

Google Chrome 用の拡張をコピー

Windows な方なら ChromeHantea Bookmark 拡張 をインストールすると以下に展開されているかと思います。

C:\Users\{自分のユーザー名}\AppData\Local\Google\Chrome\User Data\Default\Extensions\dnlfpnhinnjdgmjfpccajboogcjocdla

記事執筆時点で1.4.4_0 というバージョンが入っていました。
「新しいfirefoxのweb extensionsがChromeExtentionとの互換性そのままだった」 の記事を参考に、
manifest.jsonJSON として有効になるようカンマなど漏れがないか注意して以下を記入します。
今回は先頭の方に追加したので、お尻にカンマを付けています。

   "applications": {
      "gecko": {
         "id": "borderify@mozilla.org"
      }
   },

あとはディレクトリ内のファイル一式を zip で圧縮し、拡張子を xpi にしておきます。
これでとりあえずの準備は完了しました。

署名に関する警告を無効化

そのままでは署名に関する警告が出てしまい、インストール出来ません。
安全ではないですが、一時的に設定を変更することでインストールを許可しておきます。

http://blog.halpas.com/archives/8371 を参考に about:config で xpinstall.signatures.required を false にします。

実験が終わったら xpinstall.signatures.required を true に戻すのを忘れないようにしておきます。

で、インストールしてみると・・・

Firefox のアドオンのページに固めた xpi をドラッグドロップしてインストールします。
するとなんだか動きそうな感じが!??



ためしに Googleブコメを開いてみようとすると白紙に・・・。

ブラウザコンソールを開いてみると以下のようなエラーが出ていました。

TypeError: BG.chrome.tabs.getSelected is not a function
 popup.js:95:9

調べてみると、chrome.tabs.getSelected は廃止予定らしく、Firefox には実装されていないのかもしれません。

https://developer.chrome.com/extensions/tabs#method-getSelected によれば、

Deprecated since Chrome 33. Please use tabs.query {active: true}.

となっているので、そのように書き換えてみます。

先ほど修正した manifest.jsonディレクトリを辿っていくと、background/popup.js があるので95行目当たりを以下のように修正してみます。

修正前

    if (popupMode) {
        BG.chrome.tabs.getSelected(null, function(tab) {
            d.call({
                url: tab.url,
                faviconUrl: tab.faviconUrl,
                winId: tab.windowId,
                tabId: tab.id,
                title: tab.title,
            });
        });
    } else {

修正後

    if (popupMode) {
        BG.chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) { // ここと
            var tab = tabs[0]; // ここ
            d.call({
                url: tab.url,
                faviconUrl: tab.faviconUrl,
                winId: tab.windowId,
                tabId: tab.id,
                title: tab.title,
            });
        });
    } else {

再インストール

で、再度 zip に圧縮して xpi として Firefox にインストールしてみます。
すると・・・

動きました!

ただ、他にも修正しないといけない箇所があるようで、完璧ではありません。
とりあえず「ブコメを見る」という目的は達成できたのでよしとします。

もともと はてなブックマーク Google Chrome 拡張ソースコードは公開されているようなので、Pull Request などを送ると対応してくれるかもしれません。
が、いろいろ検証するのが面倒なのでどなたかお願いします
m(_ _)m

そもそもで言えば Firefoxの拡張(ソースコード)が直ると良いんですが・・・

まとめ

Hatena Bookmark Chrome 用の拡張が (ほとんどそのままで) Firefox でも動く事が分かりました。
意外とあっさり動いてしまったので自作しなくて良かったです。

追記 (2016-02-02)

はてなブックマーク Firefox 拡張 v2.3.9 で修正されたもよう。
良かった。