diff options
Diffstat (limited to 'WebCore/bindings/js/JSInjectedScriptHostCustom.cpp')
-rw-r--r-- | WebCore/bindings/js/JSInjectedScriptHostCustom.cpp | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp b/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp index 3db894d..8bfb8a3 100644 --- a/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp +++ b/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> - * Copyright (C) 2009 Google Inc. All rights reserved. + * Copyright (C) 2010 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -48,6 +48,7 @@ #include "InspectorController.h" #include "InspectorResource.h" #include "JSDOMWindow.h" +#include "JSDOMWindowCustom.h" #include "JSNode.h" #include "JSRange.h" #include "Node.h" @@ -67,17 +68,17 @@ #if ENABLE(JAVASCRIPT_DEBUGGER) #include "JavaScriptCallFrame.h" -#include "JavaScriptDebugServer.h" #include "JSJavaScriptCallFrame.h" +#include "ScriptDebugServer.h" #endif using namespace JSC; namespace WebCore { -static ScriptObject createInjectedScript(const String& source, InjectedScriptHost* injectedScriptHost, ScriptState* scriptState, long id) +ScriptObject InjectedScriptHost::createInjectedScript(const String& source, ScriptState* scriptState, long id) { - SourceCode sourceCode = makeSource(source); + SourceCode sourceCode = makeSource(stringToUString(source)); JSLock lock(SilenceAssertionsOnly); JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(scriptState->lexicalGlobalObject()); JSValue globalThisValue = scriptState->globalThisValue(); @@ -91,9 +92,10 @@ static ScriptObject createInjectedScript(const String& source, InjectedScriptHos return ScriptObject(); MarkedArgumentBuffer args; - args.append(toJS(scriptState, globalObject, injectedScriptHost)); + args.append(toJS(scriptState, globalObject, this)); args.append(globalThisValue); args.append(jsNumber(scriptState, id)); + args.append(jsString(scriptState, String("JSC"))); JSValue result = JSC::call(scriptState, functionValue, callType, callData, globalThisValue, args); if (result.isObject()) return ScriptObject(scriptState, result.getObject()); @@ -118,10 +120,9 @@ JSValue JSInjectedScriptHost::databaseForId(ExecState* exec, const ArgList& args #endif #if ENABLE(JAVASCRIPT_DEBUGGER) - JSValue JSInjectedScriptHost::currentCallFrame(ExecState* exec, const ArgList&) { - JavaScriptCallFrame* callFrame = impl()->currentCallFrame(); + JavaScriptCallFrame* callFrame = ScriptDebugServer::shared().currentCallFrame(); if (!callFrame || !callFrame->isValid()) return jsUndefined(); @@ -134,7 +135,6 @@ JSValue JSInjectedScriptHost::isActivation(ExecState*, const ArgList& args) JSObject* object = args.at(0).getObject(); return jsBoolean(object && object->isActivationObject()); } - #endif JSValue JSInjectedScriptHost::nodeForId(ExecState* exec, const ArgList& args) @@ -223,15 +223,23 @@ InjectedScript InjectedScriptHost::injectedScriptFor(ScriptState* scriptState) if (injectedScript) return InjectedScript(ScriptObject(scriptState, injectedScript)); - ASSERT(!m_injectedScriptSource.isEmpty()); - ScriptObject injectedScriptObject = createInjectedScript(m_injectedScriptSource, this, scriptState, m_nextInjectedScriptId); - globalObject->setInjectedScript(injectedScriptObject.jsObject()); - InjectedScript result(injectedScriptObject); - m_idToInjectedScript.set(m_nextInjectedScriptId, result); - m_nextInjectedScriptId++; + ASSERT(!m_injectedScriptSource.isEmpty()); + pair<long, ScriptObject> injectedScriptObject = injectScript(m_injectedScriptSource, scriptState); + globalObject->setInjectedScript(injectedScriptObject.second.jsObject()); + InjectedScript result(injectedScriptObject.second); + m_idToInjectedScript.set(injectedScriptObject.first, result); return result; } +bool InjectedScriptHost::canAccessInspectedWindow(ScriptState* scriptState) +{ + JSLock lock(SilenceAssertionsOnly); + JSDOMWindow* inspectedWindow = toJSDOMWindow(scriptState->lexicalGlobalObject()); + if (!inspectedWindow) + return false; + return inspectedWindow->allowsAccessFromNoErrorMessage(scriptState); +} + } // namespace WebCore #endif // ENABLE(INSPECTOR) |