bool ScriptValue::isEqual(ScriptState* scriptState, const ScriptValue& anotherValue) const { if (hasNoValue()) return anotherValue.hasNoValue(); return JSValueIsEqual(toRef(scriptState), toRef(scriptState, jsValue()), toRef(scriptState, anotherValue.jsValue()), 0); }
PassRefPtr<SerializedScriptValue> InjectedScript::callFrames() { ASSERT(!hasNoValue()); ScriptFunctionCall function(m_injectedScriptObject, "callFrames"); ScriptValue callFramesValue = function.call(); return callFramesValue.serialize(m_injectedScriptObject.scriptState()); }
void InjectedScript::releaseWrapperObjectGroup(const String& objectGroup) { ASSERT(!hasNoValue()); ScriptFunctionCall releaseFunction(m_injectedScriptObject, "releaseWrapperObjectGroup"); releaseFunction.appendArgument(objectGroup); releaseFunction.call(); }
void InjectedScript::inspectNode(Node* node) { ASSERT(!hasNoValue()); ScriptFunctionCall function(m_injectedScriptObject, "inspectNode"); function.appendArgument(nodeAsScriptValue(node)); RefPtr<InspectorValue> result; makeCall(function, &result); }
String ScriptString::flattenToString() const { if (hasNoValue()) return String(); v8::HandleScope handleScope; v8::Handle<v8::String> value = v8::Handle<v8::String>::Cast(v8Value()); return v8StringToWebCoreString<String>(value, Externalize); }
void InjectedScript::inspectObject(Deprecated::ScriptValue value) { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall function(injectedScriptObject(), ASCIILiteral("inspectObject"), inspectorEnvironment()->functionCallHandler()); function.appendArgument(value); RefPtr<InspectorValue> result; makeCall(function, &result); }
void InjectedScript::releaseObjectGroup(const String& objectGroup) { ASSERT(!hasNoValue()); ScriptFunctionCall releaseFunction(m_injectedScriptObject, "releaseObjectGroup"); releaseFunction.appendArgument(objectGroup); bool hadException = false; callFunctionWithEvalEnabled(releaseFunction, hadException); ASSERT(!hadException); }
ScriptString ScriptString::concatenateWith(const String& string) { v8::Isolate* isolate = v8::Isolate::GetCurrent(); v8::HandleScope handleScope(isolate); v8::Handle<v8::String> b = v8String(string, isolate); if (hasNoValue()) return ScriptString(b); v8::Handle<v8::String> a = v8::Handle<v8::String>::Cast(v8Value()); return ScriptString(v8::String::Concat(a, b)); }
ScriptString ScriptString::concatenateWith(const String& string) { v8::Isolate* nonNullIsolate = isolate(); v8::HandleScope handleScope(nonNullIsolate); v8::Handle<v8::String> b = v8String(nonNullIsolate, string); if (hasNoValue()) return ScriptString(b, nonNullIsolate); v8::Handle<v8::String> a = v8::Handle<v8::String>::Cast(v8Value()); return ScriptString(v8::String::Concat(a, b), nonNullIsolate); }
void InjectedScript::releaseObjectGroup(const String& objectGroup) { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall releaseFunction(injectedScriptObject(), ASCIILiteral("releaseObjectGroup"), inspectorEnvironment()->functionCallHandler()); releaseFunction.appendArgument(objectGroup); bool hadException = false; callFunctionWithEvalEnabled(releaseFunction, hadException); ASSERT(!hadException); }
ScriptValue InjectedScript::findObjectById(const String& objectId) const { ASSERT(!hasNoValue()); ScriptFunctionCall function(injectedScriptObject(), "findObjectById"); function.appendArgument(objectId); bool hadException = false; ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); return resultValue; }
PassRefPtr<InspectorArray> InjectedScript::wrapCallFrames(const ScriptValue& callFrames) { ASSERT(!hasNoValue()); ScriptFunctionCall function(m_injectedScriptObject, "wrapCallFrames"); function.appendArgument(callFrames); ScriptValue callFramesValue = function.call(); RefPtr<InspectorValue> result = callFramesValue.toInspectorValue(m_injectedScriptObject.scriptState()); if (result->type() == InspectorValue::TypeArray) return result->asArray(); return InspectorArray::create(); }
bool ScriptValue::getString(String& result) const { if (hasNoValue()) return false; if (!v8ValueRaw()->IsString()) return false; result = toWebCoreString(v8ValueRaw()); return true; }
PassRefPtr<SerializedScriptValue> InjectedScript::wrapForConsole(ScriptValue value) { ASSERT(!hasNoValue()); ScriptFunctionCall wrapFunction(m_injectedScriptObject, "wrapObjectForConsole"); wrapFunction.appendArgument(value); wrapFunction.appendArgument(canAccessInspectedWindow()); bool hadException = false; ScriptValue r = wrapFunction.call(hadException); if (hadException) return SerializedScriptValue::create("<exception>"); return r.serialize(m_injectedScriptObject.scriptState()); }
bool ScriptValue::getString(String& result) const { if (hasNoValue()) return false; v8::HandleScope handleScope(m_isolate); v8::Handle<v8::Value> string = v8Value(); if (string.IsEmpty() || !string->IsString()) return false; result = toCoreString(string.As<v8::String>()); return true; }
bool ScriptValue::getString(String& result, v8::Isolate* isolate) const { if (hasNoValue()) return false; if (!m_value->isString()) return false; v8::HandleScope handleScope(isolate); result = toWebCoreString(v8Value()); return true; }
Deprecated::ScriptValue InjectedScript::findObjectById(const String& objectId) const { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall function(injectedScriptObject(), ASCIILiteral("findObjectById"), inspectorEnvironment()->functionCallHandler()); function.appendArgument(objectId); bool hadException = false; Deprecated::ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); return resultValue; }
PassRefPtr<Array<CallFrame> > InjectedScript::wrapCallFrames(const ScriptValue& callFrames) { ASSERT(!hasNoValue()); ScriptFunctionCall function(m_injectedScriptObject, "wrapCallFrames"); function.appendArgument(callFrames); bool hadException = false; ScriptValue callFramesValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); RefPtr<InspectorValue> result = callFramesValue.toInspectorValue(m_injectedScriptObject.scriptState()); if (result->type() == InspectorValue::TypeArray) return Array<CallFrame>::runtimeCast(result); return Array<CallFrame>::create(); }
Node* InjectedScript::nodeForObjectId(const String& objectId) { if (hasNoValue() || !canAccessInspectedWindow()) return 0; ScriptFunctionCall function(m_injectedScriptObject, "nodeForObjectId"); function.appendArgument(objectId); bool hadException = false; ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); return InjectedScriptHost::scriptValueAsNode(resultValue); }
PassRefPtr<TypeBuilder::Runtime::RemoteObject> InjectedScript::wrapObject(ScriptValue value, const String& groupName) const { ASSERT(!hasNoValue()); ScriptFunctionCall wrapFunction(m_injectedScriptObject, "wrapObject"); wrapFunction.appendArgument(value); wrapFunction.appendArgument(groupName); wrapFunction.appendArgument(canAccessInspectedWindow()); bool hadException = false; ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) { return 0; } RefPtr<InspectorObject> rawResult = r.toInspectorValue(m_injectedScriptObject.scriptState())->asObject(); return TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult); }
PassRefPtr<TypeBuilder::Runtime::RemoteObject> InjectedScript::wrapObject(const ScriptValue& value, const String& groupName, bool generatePreview) const { ASSERT(!hasNoValue()); ScriptFunctionCall wrapFunction(injectedScriptObject(), "wrapObject"); wrapFunction.appendArgument(value); wrapFunction.appendArgument(groupName); wrapFunction.appendArgument(canAccessInspectedWindow()); wrapFunction.appendArgument(generatePreview); bool hadException = false; ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) return 0; RefPtr<JSONObject> rawResult = r.toJSONValue(scriptState())->asObject(); return TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult); }
PassRefPtr<Array<Inspector::TypeBuilder::Debugger::CallFrame>> InjectedScript::wrapCallFrames(const Deprecated::ScriptValue& callFrames) { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall function(injectedScriptObject(), ASCIILiteral("wrapCallFrames"), inspectorEnvironment()->functionCallHandler()); function.appendArgument(callFrames); bool hadException = false; Deprecated::ScriptValue callFramesValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); RefPtr<InspectorValue> result = callFramesValue.toInspectorValue(scriptState()); if (result->type() == InspectorValue::TypeArray) return Array<Inspector::TypeBuilder::Debugger::CallFrame>::runtimeCast(result); return Array<Inspector::TypeBuilder::Debugger::CallFrame>::create(); }
void InjectedScript::makeCall(ScriptFunctionCall& function, RefPtr<InspectorValue>* result) { if (hasNoValue() || !canAccessInspectedWindow()) { *result = InspectorValue::null(); return; } bool hadException = false; ScriptValue resultValue = function.call(hadException); ASSERT(!hadException); if (!hadException) *result = resultValue.toInspectorValue(m_injectedScriptObject.scriptState()); else *result = InspectorString::create("Exception while making a call."); }
void InjectedScript::dispatch(const String& methodName, const String& arguments, RefPtr<InspectorValue>* result, bool* hadException) { ASSERT(!hasNoValue()); if (!canAccessInspectedWindow()) { *hadException = true; return; } ScriptFunctionCall function(m_injectedScriptObject, "dispatch"); function.appendArgument(methodName); function.appendArgument(arguments); *hadException = false; ScriptValue resultValue = function.call(*hadException); if (!*hadException) *result = resultValue.toInspectorValue(m_injectedScriptObject.scriptState()); }
PassRefPtr<InspectorObject> InjectedScript::wrapObject(ScriptValue value, const String& groupName) const { ASSERT(!hasNoValue()); ScriptFunctionCall wrapFunction(m_injectedScriptObject, "wrapObject"); wrapFunction.appendArgument(value); wrapFunction.appendArgument(groupName); wrapFunction.appendArgument(canAccessInspectedWindow()); bool hadException = false; ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) { RefPtr<InspectorObject> result = InspectorObject::create(); result->setString("description", "<exception>"); return result; } return r.toInspectorValue(m_injectedScriptObject.scriptState())->asObject(); }
PassRefPtr<Inspector::TypeBuilder::Runtime::RemoteObject> InjectedScript::wrapObject(const Deprecated::ScriptValue& value, const String& groupName, bool generatePreview) const { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall wrapFunction(injectedScriptObject(), ASCIILiteral("wrapObject"), inspectorEnvironment()->functionCallHandler()); wrapFunction.appendArgument(value); wrapFunction.appendArgument(groupName); wrapFunction.appendArgument(hasAccessToInspectedScriptState()); wrapFunction.appendArgument(generatePreview); bool hadException = false; Deprecated::ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) return nullptr; RefPtr<InspectorObject> rawResult = r.toInspectorValue(scriptState())->asObject(); return Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult); }
PassRefPtr<TypeBuilder::Runtime::RemoteObject> InjectedScript::wrapTable(const ScriptValue& table, const ScriptValue& columns) const { ASSERT(!hasNoValue()); ScriptFunctionCall wrapFunction(injectedScriptObject(), "wrapTable"); wrapFunction.appendArgument(canAccessInspectedWindow()); wrapFunction.appendArgument(table); if (columns.hasNoValue()) wrapFunction.appendArgument(false); else wrapFunction.appendArgument(columns); bool hadException = false; ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) return 0; RefPtr<JSONObject> rawResult = r.toJSONValue(scriptState())->asObject(); return TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult); }
void InjectedScript::makeCall(ScriptFunctionCall& function, RefPtr<InspectorValue>* result) { if (hasNoValue() || !canAccessInspectedWindow()) { *result = InspectorValue::null(); return; } bool hadException = false; ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); if (!hadException) { *result = resultValue.toInspectorValue(m_injectedScriptObject.scriptState()); if (!*result) *result = InspectorString::create(String::format("Object has too long reference chain(must not be longer than %d)", InspectorValue::maxDepth)); } else *result = InspectorString::create("Exception while making a call."); }
void InjectedScriptBase::makeCall(Deprecated::ScriptFunctionCall& function, RefPtr<JSON::Value>* result) { if (hasNoValue() || !hasAccessToInspectedScriptState()) { *result = JSON::Value::null(); return; } bool hadException = false; auto resultValue = callFunctionWithEvalEnabled(function, hadException); ASSERT(!hadException); if (!hadException) { *result = toInspectorValue(*m_injectedScriptObject.scriptState(), resultValue); if (!*result) *result = JSON::Value::create(String::format("Object has too long reference chain (must not be longer than %d)", JSON::Value::maxDepth)); } else *result = JSON::Value::create("Exception while making a call."); }
PassRefPtr<Inspector::TypeBuilder::Runtime::RemoteObject> InjectedScript::wrapTable(const Deprecated::ScriptValue& table, const Deprecated::ScriptValue& columns) const { ASSERT(!hasNoValue()); Deprecated::ScriptFunctionCall wrapFunction(injectedScriptObject(), ASCIILiteral("wrapTable"), inspectorEnvironment()->functionCallHandler()); wrapFunction.appendArgument(hasAccessToInspectedScriptState()); wrapFunction.appendArgument(table); if (columns.hasNoValue()) wrapFunction.appendArgument(false); else wrapFunction.appendArgument(columns); bool hadException = false; Deprecated::ScriptValue r = callFunctionWithEvalEnabled(wrapFunction, hadException); if (hadException) return nullptr; RefPtr<InspectorObject> rawResult = r.toInspectorValue(scriptState())->asObject(); return Inspector::TypeBuilder::Runtime::RemoteObject::runtimeCast(rawResult); }