summaryrefslogtreecommitdiff
path: root/Source/WebCore/bindings/js/ScriptState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/bindings/js/ScriptState.cpp')
-rw-r--r--Source/WebCore/bindings/js/ScriptState.cpp29
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)