現在、SpiderMonkey のnsJSContext::CompileEventHandler関数は、イベント ハンドラを null プリンシパルでコンパイルします。したがって、Spidermonkey のfrontend::CompileFunctionBody関数では、現在、プリンシパルをイベント ハンドラに関連付ける方法がありません。その後、イベント ハンドラ関数のプリンシパルはnsScriptSecurityManager::CheckFunctionAccessで決定されます。
私の質問は、イベント ハンドラーのセキュリティ プリンシパルをコンパイラのエントリ ポイントで検出できるかどうかです。この背後にある私の直感は次のとおりです。通常、イベント ハンドラーは DOM 要素に関連付けられ、そのプリンシパルはコンテナー ドキュメントです。イベント ハンドラーがコンテナー ドキュメントとは別のプリンシパルによって呼び出されるケースはありますか? 上記が当てはまる場合、イベント ハンドラーのプリンシパルは、frontend::CompileFunctionBody関数の「ファイル名」属性から判断できますか (たとえば、chrome:// URI はシステムを意味し、http:// uri はシステムではないことを意味します)。
(ところで、about: protocol ドキュメントのプリンシパルをどのように検出できますか?「システム」である場合もあれば、そうでない場合もあります)