FirefoxのXULを覗いてみる

Firefox 3 Hack を買ってきたので XULを弄ってみる。

isbn:487311375X

browser.xulに直接アクセス

Firefoxchrome://browser/content/browser.xul にアクセスしてみると、ブラウザの中でブラウザのUIが呼び出される。変な気分。読み込むたびに .vimperatorrcが呼び出してるようで違和感
この画面をDOM Inspectorを用いて解析させた。
アドオンの類いはこの画面に対して操作を行っているらしい。スタイルシートや要素に対するオーバーレイなど。

ファイルとして開く

Firefoxをインストールしたディレクトリから中身を取り出す。
Mac だと/Applicaitons/Firefox.app

open /Applications/Firefox.app/Content/MacOS/chrome/

ユーティリティにもよるが、まあこれでapp以下がFinderで覗ける。
/Applicaitons/Firefox.app/Content/MacOS/chrome/browser.jar をUnarchiver.app で解凍 (Winだと7zipなど)
この解凍して出てくる content/browser/browser.xulがさっきのxulの本体か

これをエディタで開いてみる。ずらずらでてくる

<?xml version="1.0"?>

<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>

...(省略)

XMLなので何やってるかの雰囲気はわかる。が、飛ばしてる命令の詳細まではわからない。


これはstatusbarかな

  <vbox id="browser-bottombox">
    <findbar browserid="content" id="FindToolbar"/>
  
    <statusbar class="chromeclass-status" id="status-bar"
               ondrop="nsDragAndDrop.drop(event, contentAreaDNDObserver);">
      <statusbarpanel id="statusbar-display" label="" flex="1"/>
      <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
        <progressmeter class="progressmeter-statusbar" id="statusbar-icon" mode="normal" value="0"/>
      </statusbarpanel>
      <statusbarpanel id="download-monitor" class="statusbarpanel-iconic-text"
                      tooltiptext="&downloadMonitor2.tooltip;" hidden="true"
                      command="Tools:Downloads"/>
      <statusbarpanel id="security-button" class="statusbarpanel-iconic-text"
                      hidden="true"
                      ondblclick="if (event.button == 0) displaySecurityInfo();"/>
      <statusbarpanel id="page-report-button" type="menu"
                      class="statusbarpanel-menu-iconic"
                      tooltiptext="&pageReportIcon.tooltip;">
        <menupopup onpopupshowing="gPopupBlockerObserver.fillPopupList(event);">
          <menuitem observes="blockedPopupAllowSite"/>
          <menuitem observes="blockedPopupEditSettings"/>
          <menuitem observes="blockedPopupDontShowMessage"/>
          <menuseparator observes="blockedPopupsSeparator"/>
        </menupopup>
      </statusbarpanel>
    </statusbar>
  </vbox>


本にはこれを書き換えてzipで圧縮し、拡張子をjarにして元のbrowser.jarと差し替えれば動く、みたいなことが書かれていたが、失敗した。MacOS標準のzip圧縮をしたのだが、圧縮方式に指定がありそう。表示には失敗したが通信プロトコルは動いていた。分離しているのだろう。
しかし、ここから先は筆者のウェブサイトみれと言われ、次のページをみたらFUELの解説がわけがわからない。どこの権限で何を行っているのかが不明。つまり読むの前提。ちょっとやる気が失せたが、仕方ない。(この筆者的にもFUELはあまり好ましくない手法と言われていて、jetpack等の代替手段を用いる方がいいかもしれないなぁ)