diff options
Diffstat (limited to 'Source/WebCore/bindings/js/ScriptState.cpp')
-rw-r--r-- | Source/WebCore/bindings/js/ScriptState.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/Source/WebCore/bindings/js/ScriptState.cpp b/Source/WebCore/bindings/js/ScriptState.cpp index af1048dce..301c7cc50 100644 --- a/Source/WebCore/bindings/js/ScriptState.cpp +++ b/Source/WebCore/bindings/js/ScriptState.cpp @@ -50,23 +50,32 @@ namespace WebCore { DOMWindow* domWindowFromExecState(JSC::ExecState* scriptState) { JSC::JSGlobalObject* globalObject = scriptState->lexicalGlobalObject(); - if (!globalObject->inherits(JSDOMWindowBase::info())) - return 0; - return &JSC::jsCast<JSDOMWindowBase*>(globalObject)->impl(); + JSC::VM& vm = globalObject->vm(); + if (!globalObject->inherits(vm, JSDOMWindowBase::info())) + return nullptr; + return &JSC::jsCast<JSDOMWindowBase*>(globalObject)->wrapped(); +} + +Frame* frameFromExecState(JSC::ExecState* scriptState) +{ + ScriptExecutionContext* context = scriptExecutionContextFromExecState(scriptState); + Document* document = is<Document>(context) ? downcast<Document>(context) : nullptr; + return document ? document->frame() : nullptr; } ScriptExecutionContext* scriptExecutionContextFromExecState(JSC::ExecState* scriptState) { JSC::JSGlobalObject* globalObject = scriptState->lexicalGlobalObject(); - if (!globalObject->inherits(JSDOMGlobalObject::info())) - return 0; + JSC::VM& vm = globalObject->vm(); + if (!globalObject->inherits(vm, JSDOMGlobalObject::info())) + return nullptr; return JSC::jsCast<JSDOMGlobalObject*>(globalObject)->scriptExecutionContext(); } JSC::ExecState* mainWorldExecState(Frame* frame) { if (!frame) - return 0; + return nullptr; JSDOMWindowShell* shell = frame->script().windowShell(mainThreadNormalWorld()); return shell->window()->globalExec(); } @@ -74,18 +83,18 @@ JSC::ExecState* mainWorldExecState(Frame* frame) JSC::ExecState* execStateFromNode(DOMWrapperWorld& world, Node* node) { if (!node) - return 0; + return nullptr; Frame* frame = node->document().frame(); if (!frame) - return 0; + return nullptr; if (!frame->script().canExecuteScripts(NotAboutToExecuteScript)) - return 0; + return nullptr; return frame->script().globalObject(world)->globalExec(); } JSC::ExecState* execStateFromPage(DOMWrapperWorld& world, Page* page) { - return page->mainFrame().script().globalObject(world)->globalExec(); + return page ? page->mainFrame().script().globalObject(world)->globalExec() : nullptr; } JSC::ExecState* execStateFromWorkerGlobalScope(WorkerGlobalScope* workerGlobalScope) |