QVariant QWebFrameAdapter::evaluateJavaScript(const QString &scriptSource) { ScriptController* scriptController = frame->script(); QVariant rc; if (scriptController) { int distance = 0; ScriptValue value = scriptController->executeScript(ScriptSourceCode(scriptSource)); JSC::ExecState* exec = scriptController->globalObject(mainThreadNormalWorld())->globalExec(); JSValueRef* ignoredException = 0; JSC::JSLock::lock(exec); JSValueRef valueRef = toRef(exec, value.jsValue()); JSC::JSLock::unlock(exec); rc = JSC::Bindings::convertValueToQVariant(toRef(exec), valueRef, QMetaType::Void, &distance, ignoredException); } return rc; }
bool InspectorClient::sendMessageToFrontend(const String& message) { if (!m_frontendPage) return false; Frame* frame = m_frontendPage->mainFrame(); if (!frame) return false; ScriptController* scriptController = frame->script(); if (!scriptController) return false; String dispatchToFrontend("WebInspector.dispatchMessageFromBackend("); dispatchToFrontend += message; dispatchToFrontend += ");"; scriptController->executeScript(dispatchToFrontend); return true; }