Firefoxで "chrome://"プロトコルを使用しているときに入力ストリーム を見ることができるかどうか疑問に思っていました。もっと クリアさせてください。Firefoxでクロムプロトコルを調べる
- nsXULDocument.cppにはnsXULDocument :: ResumeWalk()メソッドがあります。
- LoadScript()[行:3004]を呼び出します。
- LoadScript()がNS_NewStreamLoader [nsXULDocument.cpp、行 3440]を呼び出します。
- NS_NewStreamLoaderはNS_NewChannel()[nsNetUtil.h、行:593]を呼び出します。
- NS_NewChannel()は、ioservice-> NewChannelFromURI() [nsNetUtil.h、line:226]を呼び出します。
- NewChannelFromURI()がNewChannelFromURIWithProxyFlags()を呼び出します。 [nsIOService.cppライン:596]。
- NewChannelFromURIWithProxyFlags() がnsChromeProtocolHandler-> newChannel() [nsChromeProtocolHandler.cpp、行:182]になるように、実行時に解決されhandler-> newChannel()を呼び出します。
- これは、ioServ-> NewChannelFromURI() [nsChromeProtocolHandler.cpp、line:196]を呼び出します。
- ステップ6を繰り返す。
- ステップ7を繰り返すが、異なる時点で、それは(等ファイル、クロム、JAR)プロトコルに基づいて 異なるハンドラをロードすることができるが、
上記呼び出しシーケンスを説明するための私の意図は、設定しました私の問題の文脈を にしてください。私は "chrome://"プロトコルが であることを知りたいのですが、それが使われるときは入力ストリームを処理したいのです。例えば、 の場合、Firefoxが "chrome:// package/content/ script.js"のようなスクリプトをロードしている場合、 ディスクからアクセスされたときにファイルをインターセプトしたいと思います。ファイルを傍受した後、その内容を変更するか、 ファイルの内容を自分が選択したフォルダにダンプします。
fread()のような方法でFirefoxがファイルを読み込むと、おそらく、私も知りたいことですが、read要求がchromeプロトコルかどうかを判断したいと思いますが、その瞬間に自分のニーズに基づいてファイルを変更することができます。これに関するどんな助け? 「クローム」プロトコルについてここで好奇心つまずいてきた人のために
:// 'プロトコルハンドラ - しかし、それはすぐに大きな混乱になるでしょう。パフォーマンス上の理由から、 'chrome://'プロトコルはもはや "内部を覗く"方法を提供しません。 –
ええと、私は理解しています。 Neckoの一般的なインターフェースは、具体的なプロトコル情報が失われている場所だと思います。 – Anton