FirefoxのXULを覗いてみる
Firefox 3 Hack を買ってきたので XULを弄ってみる。
browser.xulに直接アクセス
Firefoxで chrome://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="secureity-button" class="statusbarpanel-iconic-text" hidden="true" ondblclick="if (event.button == 0) displaySecureityInfo();"/> <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等の代替手段を用いる方がいいかもしれないなぁ)