summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/bridge/qt
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-24 11:24:40 +0100
committerBen Murdoch <benm@google.com>2011-06-02 09:53:15 +0100
commit81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch)
tree7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/bridge/qt
parent94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff)
downloadexternal_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip
external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz
external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/bridge/qt')
-rw-r--r--Source/WebCore/bridge/qt/qt_instance.cpp8
-rw-r--r--Source/WebCore/bridge/qt/qt_pixmapruntime.cpp8
-rw-r--r--Source/WebCore/bridge/qt/qt_runtime.cpp38
-rw-r--r--Source/WebCore/bridge/qt/qt_runtime.h10
4 files changed, 29 insertions, 35 deletions
diff --git a/Source/WebCore/bridge/qt/qt_instance.cpp b/Source/WebCore/bridge/qt/qt_instance.cpp
index b4d2117..7af752d 100644
--- a/Source/WebCore/bridge/qt/qt_instance.cpp
+++ b/Source/WebCore/bridge/qt/qt_instance.cpp
@@ -29,6 +29,7 @@
#include "qt_class.h"
#include "qt_runtime.h"
#include "runtime_object.h"
+#include "runtime/FunctionPrototype.h"
#include <qdebug.h>
#include <qhash.h>
@@ -60,14 +61,11 @@ public:
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount);
+ return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
}
protected:
static const unsigned StructureFlags = RuntimeObject::StructureFlags | OverridesMarkChildren;
-
-private:
- virtual const ClassInfo* classInfo() const { return &s_info; }
};
const ClassInfo QtRuntimeObject::s_info = { "QtRuntimeObject", &RuntimeObject::s_info, 0, 0 };
@@ -244,7 +242,7 @@ JSValue QtInstance::getMethod(ExecState* exec, const Identifier& propertyName)
if (!getClass())
return jsNull();
MethodList methodList = m_class->methodsNamed(propertyName, this);
- return new (exec) RuntimeMethod(exec, exec->lexicalGlobalObject(), propertyName, methodList);
+ return new (exec) RuntimeMethod(exec, exec->lexicalGlobalObject(), WebCore::deprecatedGetDOMStructure<RuntimeMethod>(exec), propertyName, methodList);
}
JSValue QtInstance::invokeMethod(ExecState*, RuntimeMethod*)
diff --git a/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp b/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp
index 1ef20c3..534e28e 100644
--- a/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp
+++ b/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp
@@ -34,6 +34,7 @@
#include <runtime_method.h>
#include <runtime_object.h>
#include <runtime_root.h>
+#include "runtime/FunctionPrototype.h"
using namespace WebCore;
namespace JSC {
@@ -151,14 +152,11 @@ public:
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount);
+ return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
}
protected:
static const unsigned StructureFlags = RuntimeObject::StructureFlags | OverridesMarkChildren;
-
-private:
- virtual const ClassInfo* classInfo() const { return &s_info; }
};
QtPixmapRuntimeObject::QtPixmapRuntimeObject(ExecState* exec, JSGlobalObject* globalObject, PassRefPtr<Instance> instance)
@@ -181,7 +179,7 @@ Class* QtPixmapInstance::getClass() const
JSValue QtPixmapInstance::getMethod(ExecState* exec, const Identifier& propertyName)
{
MethodList methodList = getClass()->methodsNamed(propertyName, this);
- return new (exec) RuntimeMethod(exec, exec->lexicalGlobalObject(), propertyName, methodList);
+ return new (exec) RuntimeMethod(exec, exec->lexicalGlobalObject(), WebCore::deprecatedGetDOMStructure<RuntimeMethod>(exec), propertyName, methodList);
}
JSValue QtPixmapInstance::invokeMethod(ExecState* exec, RuntimeMethod* runtimeMethod)
diff --git a/Source/WebCore/bridge/qt/qt_runtime.cpp b/Source/WebCore/bridge/qt/qt_runtime.cpp
index 5507fc9..78821b9 100644
--- a/Source/WebCore/bridge/qt/qt_runtime.cpp
+++ b/Source/WebCore/bridge/qt/qt_runtime.cpp
@@ -166,11 +166,11 @@ static JSRealType valueRealType(ExecState* exec, JSValue val)
JSObject *object = val.toObject(exec);
if (object->inherits(&RuntimeArray::s_info)) // RuntimeArray 'inherits' from Array, but not in C++
return RTArray;
- else if (object->inherits(&JSArray::info))
+ else if (object->inherits(&JSArray::s_info))
return Array;
- else if (object->inherits(&DateInstance::info))
+ else if (object->inherits(&DateInstance::s_info))
return Date;
- else if (object->inherits(&RegExpObject::info))
+ else if (object->inherits(&RegExpObject::s_info))
return RegExp;
else if (object->inherits(&RuntimeObject::s_info))
return QObj;
@@ -227,9 +227,9 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type
hint = QMetaType::QRegExp;
break;
case Object:
- if (object->inherits(&NumberObject::info))
+ if (object->inherits(&NumberObject::s_info))
hint = QMetaType::Double;
- else if (object->inherits(&BooleanObject::info))
+ else if (object->inherits(&BooleanObject::s_info))
hint = QMetaType::Bool;
else
hint = QMetaType::QVariantMap;
@@ -263,7 +263,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type
int dist = -1;
switch (hint) {
case QMetaType::Bool:
- if (type == Object && object->inherits(&BooleanObject::info))
+ if (type == Object && object->inherits(&BooleanObject::s_info))
ret = QVariant(asBooleanObject(value)->internalValue().toBoolean(exec));
else
ret = QVariant(value.toBoolean(exec));
@@ -983,7 +983,7 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con
#define QW_D(Class) Class##Data* d = d_func()
#define QW_DS(Class,Instance) Class##Data* d = Instance->d_func()
-const ClassInfo QtRuntimeMethod::s_info = { "QtRuntimeMethod", 0, 0, 0 };
+const ClassInfo QtRuntimeMethod::s_info = { "QtRuntimeMethod", &InternalFunction::s_info, 0, 0 };
QtRuntimeMethod::QtRuntimeMethod(QtRuntimeMethodData* dd, ExecState* exec, const Identifier& ident, PassRefPtr<QtInstance> inst)
: InternalFunction(&exec->globalData(), exec->lexicalGlobalObject(), deprecatedGetDOMStructure<QtRuntimeMethod>(exec), ident)
@@ -1629,7 +1629,7 @@ EncodedJSValue QtRuntimeConnectionMethod::call(ExecState* exec)
// receiver function [from arguments]
// receiver this object [from arguments]
- QtConnectionObject* conn = new QtConnectionObject(d->m_instance, signalIndex, thisObject, funcObject);
+ QtConnectionObject* conn = new QtConnectionObject(exec->globalData(), d->m_instance, signalIndex, thisObject, funcObject);
bool ok = QMetaObject::connect(sender, signalIndex, conn, conn->metaObject()->methodOffset());
if (!ok) {
delete conn;
@@ -1723,12 +1723,12 @@ JSValue QtRuntimeConnectionMethod::lengthGetter(ExecState*, JSValue, const Ident
// ===============
-QtConnectionObject::QtConnectionObject(PassRefPtr<QtInstance> instance, int signalIndex, JSObject* thisObject, JSObject* funcObject)
+QtConnectionObject::QtConnectionObject(JSGlobalData& globalData, PassRefPtr<QtInstance> instance, int signalIndex, JSObject* thisObject, JSObject* funcObject)
: m_instance(instance)
, m_signalIndex(signalIndex)
, m_originalObject(m_instance->getObject())
- , m_thisObject(thisObject)
- , m_funcObject(funcObject)
+ , m_thisObject(globalData, thisObject)
+ , m_funcObject(globalData, funcObject)
{
setParent(m_originalObject);
ASSERT(JSLock::currentThreadIsHoldingLock()); // so our ProtectedPtrs are safe
@@ -1826,27 +1826,25 @@ void QtConnectionObject::execute(void **argv)
}
}
// Stuff in the __qt_sender property, if we can
- ScopeChain oldsc = ScopeChain(NoScopeChain());
+ ScopeChainNode* oldsc = 0;
JSFunction* fimp = 0;
- if (m_funcObject->inherits(&JSFunction::info)) {
+ if (m_funcObject->inherits(&JSFunction::s_info)) {
fimp = static_cast<JSFunction*>(m_funcObject.get());
JSObject* qt_sender = QtInstance::getQtInstance(sender(), ro, QScriptEngine::QtOwnership)->createRuntimeObject(exec);
- JSObject* wrapper = new (exec) JSObject(JSObject::createStructure(jsNull()));
+ JSObject* wrapper = constructEmptyObject(exec, createEmptyObjectStructure(jsNull()));
PutPropertySlot slot;
wrapper->put(exec, Identifier(exec, "__qt_sender__"), qt_sender, slot);
oldsc = fimp->scope();
- ScopeChain sc = oldsc;
- sc.push(wrapper);
- fimp->setScope(sc);
+ fimp->setScope(exec->globalData(), oldsc->push(wrapper));
}
CallData callData;
CallType callType = m_funcObject->getCallData(callData);
- call(exec, m_funcObject, callType, callData, m_thisObject, l);
+ call(exec, m_funcObject.get(), callType, callData, m_thisObject.get(), l);
if (fimp)
- fimp->setScope(oldsc);
+ fimp->setScope(exec->globalData(), oldsc);
}
}
}
@@ -1859,7 +1857,7 @@ void QtConnectionObject::execute(void **argv)
bool QtConnectionObject::match(QObject* sender, int signalIndex, JSObject* thisObject, JSObject *funcObject)
{
if (m_originalObject == sender && m_signalIndex == signalIndex
- && thisObject == (JSObject*)m_thisObject && funcObject == (JSObject*)m_funcObject)
+ && thisObject == (JSObject*)m_thisObject.get() && funcObject == (JSObject*)m_funcObject.get())
return true;
return false;
}
diff --git a/Source/WebCore/bridge/qt/qt_runtime.h b/Source/WebCore/bridge/qt/qt_runtime.h
index c5abca7..b86ccbe 100644
--- a/Source/WebCore/bridge/qt/qt_runtime.h
+++ b/Source/WebCore/bridge/qt/qt_runtime.h
@@ -22,7 +22,7 @@
#include "BridgeJSC.h"
#include "Completion.h"
-#include "Protect.h"
+#include "Global.h"
#include "runtime_method.h"
#include <qbytearray.h>
@@ -155,7 +155,7 @@ public:
static PassRefPtr<Structure> createStructure(JSValue prototype)
{
- return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount);
+ return Structure::create(prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
}
protected:
@@ -212,7 +212,7 @@ private:
class QtConnectionObject: public QObject
{
public:
- QtConnectionObject(PassRefPtr<QtInstance> instance, int signalIndex, JSObject* thisObject, JSObject* funcObject);
+ QtConnectionObject(JSGlobalData&, PassRefPtr<QtInstance> instance, int signalIndex, JSObject* thisObject, JSObject* funcObject);
~QtConnectionObject();
static const QMetaObject staticMetaObject;
@@ -229,8 +229,8 @@ private:
RefPtr<QtInstance> m_instance;
int m_signalIndex;
QObject* m_originalObject; // only used as a key, not dereferenced
- ProtectedPtr<JSObject> m_thisObject;
- ProtectedPtr<JSObject> m_funcObject;
+ Global<JSObject> m_thisObject;
+ Global<JSObject> m_funcObject;
};
QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type hint, int *distance);