diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/inspector/InjectedScriptBase.cpp | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/inspector/InjectedScriptBase.cpp')
-rw-r--r-- | Source/JavaScriptCore/inspector/InjectedScriptBase.cpp | 72 |
1 files changed, 38 insertions, 34 deletions
diff --git a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp index 27ec8a165..c2a494728 100644 --- a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp +++ b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp @@ -32,11 +32,10 @@ #include "config.h" #include "InjectedScriptBase.h" -#include "DebuggerEvalEnabler.h" +#if ENABLE(INSPECTOR) + #include "InspectorValues.h" -#include "JSCInlines.h" #include "JSGlobalObject.h" -#include "LegacyProfiler.h" #include "ScriptFunctionCall.h" #include <wtf/text/WTFString.h> @@ -59,6 +58,12 @@ InjectedScriptBase::~InjectedScriptBase() { } +void InjectedScriptBase::initialize(Deprecated::ScriptObject injectedScriptObject, InspectorEnvironment* environment) +{ + m_injectedScriptObject = injectedScriptObject; + m_environment = environment; +} + bool InjectedScriptBase::hasAccessToInspectedScriptState() const { return m_environment && m_environment->canAccessInspectedScriptState(m_injectedScriptObject.scriptState()); @@ -71,16 +76,25 @@ const Deprecated::ScriptObject& InjectedScriptBase::injectedScriptObject() const Deprecated::ScriptValue InjectedScriptBase::callFunctionWithEvalEnabled(Deprecated::ScriptFunctionCall& function, bool& hadException) const { - JSC::ExecState* scriptState = m_injectedScriptObject.scriptState(); - JSC::LegacyProfiler::profiler()->suspendProfiling(scriptState); + if (m_environment) + m_environment->willCallInjectedScriptFunction(m_injectedScriptObject.scriptState(), name(), 1); - Deprecated::ScriptValue resultValue; - { - JSC::DebuggerEvalEnabler evalEnabler(scriptState); - resultValue = function.call(hadException); + JSC::ExecState* scriptState = m_injectedScriptObject.scriptState(); + bool evalIsDisabled = false; + if (scriptState) { + evalIsDisabled = !scriptState->lexicalGlobalObject()->evalEnabled(); + // Temporarily enable allow evals for inspector. + if (evalIsDisabled) + scriptState->lexicalGlobalObject()->setEvalEnabled(true); } - JSC::LegacyProfiler::profiler()->unsuspendProfiling(scriptState); + Deprecated::ScriptValue resultValue = function.call(hadException); + + if (evalIsDisabled) + scriptState->lexicalGlobalObject()->setEvalEnabled(false); + + if (m_environment) + m_environment->didCallInjectedScriptFunction(); return resultValue; } @@ -104,48 +118,38 @@ void InjectedScriptBase::makeCall(Deprecated::ScriptFunctionCall& function, RefP *result = InspectorString::create("Exception while making a call."); } -void InjectedScriptBase::makeEvalCall(ErrorString& errorString, Deprecated::ScriptFunctionCall& function, RefPtr<Protocol::Runtime::RemoteObject>* objectResult, Protocol::OptOutput<bool>* wasThrown, Protocol::OptOutput<int>* savedResultIndex) +void InjectedScriptBase::makeEvalCall(ErrorString* errorString, Deprecated::ScriptFunctionCall& function, RefPtr<TypeBuilder::Runtime::RemoteObject>* objectResult, TypeBuilder::OptOutput<bool>* wasThrown) { RefPtr<InspectorValue> result; makeCall(function, &result); if (!result) { - errorString = ASCIILiteral("Internal error: result value is empty"); + *errorString = ASCIILiteral("Internal error: result value is empty"); return; } - if (result->type() == InspectorValue::Type::String) { + if (result->type() == InspectorValue::TypeString) { result->asString(errorString); - ASSERT(errorString.length()); - return; - } - - RefPtr<InspectorObject> resultTuple; - if (!result->asObject(resultTuple)) { - errorString = ASCIILiteral("Internal error: result is not an Object"); + ASSERT(errorString->length()); return; } - RefPtr<InspectorObject> resultObject; - if (!resultTuple->getObject(ASCIILiteral("result"), resultObject)) { - errorString = ASCIILiteral("Internal error: result is not a pair of value and wasThrown flag"); + RefPtr<InspectorObject> resultPair = result->asObject(); + if (!resultPair) { + *errorString = ASCIILiteral("Internal error: result is not an Object"); return; } - bool wasThrownValue = false; - if (!resultTuple->getBoolean(ASCIILiteral("wasThrown"), wasThrownValue)) { - errorString = ASCIILiteral("Internal error: result is not a pair of value and wasThrown flag"); + RefPtr<InspectorObject> resultObj = resultPair->getObject(ASCIILiteral("result")); + bool wasThrownVal = false; + if (!resultObj || !resultPair->getBoolean(ASCIILiteral("wasThrown"), &wasThrownVal)) { + *errorString = ASCIILiteral("Internal error: result is not a pair of value and wasThrown flag"); return; } - *objectResult = BindingTraits<Protocol::Runtime::RemoteObject>::runtimeCast(resultObject); - *wasThrown = wasThrownValue; - - if (savedResultIndex) { - int savedIndex = 0; - if (resultTuple->getInteger(ASCIILiteral("savedResultIndex"), savedIndex)) - *savedResultIndex = savedIndex; - } + *objectResult = TypeBuilder::Runtime::RemoteObject::runtimeCast(resultObj); + *wasThrown = wasThrownVal; } } // namespace Inspector +#endif // ENABLE(INSPECTOR) |