Определение участника безопасности обработчика событий в точке входа компилятора SpiderMonkey

В настоящее время функция nsJSContext :: CompileEventHandler для SpiderMonkey компилирует обработчики событий с нулевыми участниками. Следовательно, в frontend :: CompileFunctionBody функция Spidermonkey, в настоящее время нет возможности связать принципала с обработчиком событий. Позже основной принцип функции обработчика событий определяется в nsScriptSecurityManager :: CheckFunctionAccess.
У меня вопрос, может ли участник безопасности обработчика событий быть обнаружен в точке входа компилятора? Моя интуиция за этим заключается в следующем: обычно обработчики событий прикрепляются к элементам DOM, основным элементом которых является документ контейнера. Есть ли какой-нибудь угловой случай, когда обработчик событий вызывается отдельным участником, а не контейнерным документом? Если вышеизложенное верно, можно ли определить принципала обработчика событий по атрибуту filename в frontend :: CompileFunctionBody (например, chrome: // URI означает систему, http: // uri означает не систему)?
(Кстати, как можно мы определяем принцип about: протокольные документы? иногда они "системные", иногда нет)


person Anton    schedule 09.03.2012    source источник


Ответы (1)


Один обработчик событий может совместно использоваться в документах с разными участниками (например, через XBL), поэтому вы действительно не знаете принципала во время компиляции. Перед выполнением обработчика он клонируется с правильным участником.

person Boris Zbarsky    schedule 10.03.2012