Firefoxのソースコードをいじって機能を追加してみた


はじめに

この記事は後期実験「大規模ソフトウェエアを手探る」のレポート兼ねたものです。ここではブラウザバックをした後今開いていたタブを新しいタブで開き直す機能をつけた際の過程をまとめています。

目標

どのような機能かもう少し細かく説明すると、ウェブページを見ている時にリンクなどを新しいタブで開きたかったのに、そのままクリックしてしまい現在のタブで開いてしまうことがあると思います。そういうときは一度ブラウザバックしてからそのリンクを新しいタブで開くと思います。少しの手間かもしれませんが、これをショートカットキーなどで一気に出来るようにするというのが今回加えた機能です。

実装

このページでも書いたようにbrowser.js内に変更を加えていきます。grepによる検索やMozillaのホームページなどで探したところ、この機能に使えそうないくつかのメソッドやプロパティを見つけたので次のように追加しました。

browser.js
document.onkeydown = function(e) {
  if(event.ctrlKey && event.keyCode == 8) {
    var link_browser = gBrowser.selectedBrowser;
    var link_url = link_browser.currentURI.spec;
    BrowserBack();
    gBrowser.selectedTab = gBrowser.addTab(link_url.toString());
  }
}

ショートカットキーはCtrl+Backspaceにしました。if文内について説明していくと、1行目で現在選択しているタブのブラウザオブジェクトを取得して2行目でそのブラウザオブジェクトのURLを取得しています。その後3行目でブラウザバックし4行目で記憶しておいたURLを新しいタブで開きそのタブに選択を移動しています。これで目標の動作をするように変更できました。ただこの機能をブラウザバックが出来ないページで行うとBrowserBack()では何も起きないのでタブを複製するだけになります。ブラウザバックが出来るかどうかによってこの機能を動かないようにすることが出来れば更に良かったと思います。