summaryrefslogtreecommitdiffstats
path: root/WebKit/qt/Api/qwebframe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/qt/Api/qwebframe.cpp')
-rw-r--r--WebKit/qt/Api/qwebframe.cpp78
1 files changed, 49 insertions, 29 deletions
diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
index 464b4a0..46580bb 100644
--- a/WebKit/qt/Api/qwebframe.cpp
+++ b/WebKit/qt/Api/qwebframe.cpp
@@ -21,8 +21,12 @@
#include "config.h"
#include "qwebframe.h"
+#if USE(JSC)
#include "Bridge.h"
#include "CallFrame.h"
+#elif USE(V8)
+#include "V8Binding.h"
+#endif
#include "Document.h"
#include "DocumentLoader.h"
#include "DragData.h"
@@ -32,23 +36,35 @@
#include "FrameLoaderClientQt.h"
#include "FrameTree.h"
#include "FrameView.h"
+#if USE(JSC)
#include "GCController.h"
+#elif USE(V8)
+#include "V8GCController.h"
+#endif
#include "GraphicsContext.h"
#include "HTMLMetaElement.h"
#include "HitTestResult.h"
#include "HTTPParsers.h"
#include "IconDatabase.h"
#include "InspectorController.h"
+#if USE(JSC)
#include "JSDOMBinding.h"
#include "JSDOMWindowBase.h"
#include "JSLock.h"
#include "JSObject.h"
+#elif USE(V8)
+#include "V8DOMWrapper.h"
+#include "V8DOMWindowShell.h"
+#endif
+#include "NetworkingContext.h"
#include "NodeList.h"
#include "Page.h"
#include "PlatformMouseEvent.h"
#include "PlatformWheelEvent.h"
#include "PrintContext.h"
+#if USE(JSC)
#include "PutPropertySlot.h"
+#endif
#include "RenderLayer.h"
#include "RenderTreeAsText.h"
#include "RenderView.h"
@@ -64,8 +80,10 @@
#include "TiledBackingStore.h"
#include "htmlediting.h"
#include "markup.h"
+#if USE(JSC)
#include "qt_instance.h"
#include "qt_runtime.h"
+#endif
#include "qwebelement.h"
#include "qwebframe_p.h"
#include "qwebpage.h"
@@ -74,8 +92,10 @@
#include "qwebsecurityorigin_p.h"
#include "qwebscriptworld.h"
#include "qwebscriptworld_p.h"
+#if USE(JSC)
#include "runtime_object.h"
#include "runtime_root.h"
+#endif
#include "wtf/HashMap.h"
#include <QMultiMap>
#include <qdebug.h>
@@ -476,7 +496,7 @@ void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object
{
if (!page()->settings()->testAttribute(QWebSettings::JavascriptEnabled))
return;
-
+#if USE(JSC)
JSC::JSLock lock(JSC::SilenceAssertionsOnly);
JSDOMWindow* window = toJSDOMWindow(d->frame, mainThreadNormalWorld());
JSC::Bindings::RootObject* root;
@@ -497,6 +517,13 @@ void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object
JSC::PutPropertySlot slot;
window->put(exec, JSC::Identifier(exec, reinterpret_cast_ptr<const UChar*>(name.constData()), name.length()), runtimeObject, slot);
+#elif USE(V8)
+ QScriptEngine* engine = d->frame->script()->qtScriptEngine();
+ if (!engine)
+ return;
+ QScriptValue v = engine->newQObject(object, ownership);
+ engine->globalObject().property("window").setProperty(name, v);
+#endif
}
/*!
@@ -868,9 +895,9 @@ QList<QWebFrame*> QWebFrame::childFrames() const
FrameTree *tree = d->frame->tree();
for (Frame *child = tree->firstChild(); child; child = child->tree()->nextSibling()) {
FrameLoader *loader = child->loader();
- FrameLoaderClientQt *client = static_cast<FrameLoaderClientQt*>(loader->client());
- if (client)
- rc.append(client->webFrame());
+ QWebFrame* webFrame = qobject_cast<QWebFrame*>(loader->networkingContext()->originatingObject());
+ if (webFrame)
+ rc.append(webFrame);
}
}
@@ -1105,11 +1132,9 @@ void QWebFrame::render(QPainter* painter)
*/
void QWebFrame::setTextSizeMultiplier(qreal factor)
{
- FrameView* view = d->frame->view();
- if (!view)
- return;
+ page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, true);
- view->setZoomFactor(factor, ZoomTextOnly);
+ d->frame->setPageAndTextZoomFactors(1, factor);
}
/*!
@@ -1117,11 +1142,7 @@ void QWebFrame::setTextSizeMultiplier(qreal factor)
*/
qreal QWebFrame::textSizeMultiplier() const
{
- FrameView* view = d->frame->view();
- if (!view)
- return 1;
-
- return view->zoomFactor();
+ return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor();
}
/*!
@@ -1132,24 +1153,15 @@ qreal QWebFrame::textSizeMultiplier() const
void QWebFrame::setZoomFactor(qreal factor)
{
- Page* page = d->frame->page();
- if (!page)
- return;
-
- FrameView* view = d->frame->view();
- if (!view)
- return;
-
- view->setZoomFactor(factor, page->settings()->zoomMode());
+ if (d->zoomTextOnly)
+ d->frame->setTextZoomFactor(factor);
+ else
+ d->frame->setPageZoomFactor(factor);
}
qreal QWebFrame::zoomFactor() const
{
- FrameView* view = d->frame->view();
- if (!view)
- return 1;
-
- return view->zoomFactor();
+ return d->zoomTextOnly ? d->frame->textZoomFactor() : d->frame->pageZoomFactor();
}
/*!
@@ -1388,9 +1400,17 @@ QVariant QWebFrame::evaluateJavaScript(const QString& scriptSource)
ScriptController *proxy = d->frame->script();
QVariant rc;
if (proxy) {
- JSC::JSValue v = d->frame->script()->executeScript(ScriptSourceCode(scriptSource)).jsValue();
+#if USE(JSC)
int distance = 0;
+ JSC::JSValue v = d->frame->script()->executeScript(ScriptSourceCode(scriptSource)).jsValue();
+
rc = JSC::Bindings::convertValueToQVariant(proxy->globalObject(mainThreadNormalWorld())->globalExec(), v, QMetaType::Void, &distance);
+#elif USE(V8)
+ QScriptEngine* engine = d->frame->script()->qtScriptEngine();
+ if (!engine)
+ return rc;
+ rc = engine->evaluate(scriptSource).toVariant();
+#endif
}
return rc;
}
@@ -1414,7 +1434,7 @@ WebCore::Frame* QWebFramePrivate::core(const QWebFrame* webFrame)
QWebFrame* QWebFramePrivate::kit(const WebCore::Frame* coreFrame)
{
- return static_cast<FrameLoaderClientQt*>(coreFrame->loader()->client())->webFrame();
+ return qobject_cast<QWebFrame*>(coreFrame->loader()->networkingContext()->originatingObject());
}