diff options
author | Steve Block <steveblock@google.com> | 2011-05-18 13:36:51 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-05-24 15:38:28 +0100 |
commit | 2fc2651226baac27029e38c9d6ef883fa32084db (patch) | |
tree | e396d4bf89dcce6ed02071be66212495b1df1dec /Source/WebCore/bridge/qt | |
parent | b3725cedeb43722b3b175aaeff70552e562d2c94 (diff) | |
download | external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.zip external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.gz external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.bz2 |
Merge WebKit at r78450: Initial merge by git.
Change-Id: I6d3e5f1f868ec266a0aafdef66182ddc3f265dc1
Diffstat (limited to 'Source/WebCore/bridge/qt')
-rw-r--r-- | Source/WebCore/bridge/qt/qt_class.cpp | 2 | ||||
-rw-r--r-- | Source/WebCore/bridge/qt/qt_instance.cpp | 18 | ||||
-rw-r--r-- | Source/WebCore/bridge/qt/qt_instance.h | 4 | ||||
-rw-r--r-- | Source/WebCore/bridge/qt/qt_runtime.cpp | 26 | ||||
-rw-r--r-- | Source/WebCore/bridge/qt/qt_runtime.h | 4 |
5 files changed, 27 insertions, 27 deletions
diff --git a/Source/WebCore/bridge/qt/qt_class.cpp b/Source/WebCore/bridge/qt/qt_class.cpp index 4c29c69..3c1836a 100644 --- a/Source/WebCore/bridge/qt/qt_class.cpp +++ b/Source/WebCore/bridge/qt/qt_class.cpp @@ -74,7 +74,7 @@ JSValue QtClass::fallbackObject(ExecState* exec, Instance* inst, const Identifie const QByteArray name = QString(reinterpret_cast<const QChar*>(ustring.characters()), ustring.length()).toAscii(); // First see if we have a cache hit - JSObject* val = qtinst->m_methods.value(name); + JSObject* val = qtinst->m_methods.value(name).get(); if (val) return val; diff --git a/Source/WebCore/bridge/qt/qt_instance.cpp b/Source/WebCore/bridge/qt/qt_instance.cpp index 78263e9..b4d2117 100644 --- a/Source/WebCore/bridge/qt/qt_instance.cpp +++ b/Source/WebCore/bridge/qt/qt_instance.cpp @@ -34,6 +34,7 @@ #include <qhash.h> #include <qmetaobject.h> #include <qmetatype.h> +#include <qwebelement.h> namespace JSC { namespace Bindings { @@ -82,9 +83,10 @@ QtInstance::QtInstance(QObject* o, PassRefPtr<RootObject> rootObject, QScriptEng , m_class(0) , m_object(o) , m_hashkey(o) - , m_defaultMethod(0) , m_ownership(ownership) { + // This is a good place to register Qt metatypes that are in the QtWebKit module, as this is class will initialize if we have a QObject bridge. + qRegisterMetaType<QWebElement>(); } QtInstance::~QtInstance() @@ -148,12 +150,12 @@ void QtInstance::put(JSObject* object, ExecState* exec, const Identifier& proper void QtInstance::removeCachedMethod(JSObject* method) { - if (m_defaultMethod == method) - m_defaultMethod = 0; + if (m_defaultMethod.get() == method) + m_defaultMethod.clear(); - for (QHash<QByteArray, JSObject*>::Iterator it = m_methods.begin(), + for (QHash<QByteArray, DeprecatedPtr<JSObject> >::Iterator it = m_methods.begin(), end = m_methods.end(); it != end; ++it) - if (it.value() == method) { + if (it.value().get() == method) { m_methods.erase(it); return; } @@ -188,10 +190,10 @@ RuntimeObject* QtInstance::newRuntimeObject(ExecState* exec) void QtInstance::markAggregate(MarkStack& markStack) { if (m_defaultMethod) - markStack.append(m_defaultMethod); - foreach (JSObject* val, m_methods.values()) { + markStack.append(&m_defaultMethod); + foreach (DeprecatedPtr<JSObject> val, m_methods.values()) { if (val) - markStack.append(val); + markStack.append(&val); } } diff --git a/Source/WebCore/bridge/qt/qt_instance.h b/Source/WebCore/bridge/qt/qt_instance.h index 25aea53..003c801 100644 --- a/Source/WebCore/bridge/qt/qt_instance.h +++ b/Source/WebCore/bridge/qt/qt_instance.h @@ -83,9 +83,9 @@ private: mutable QtClass* m_class; QPointer<QObject> m_object; QObject* m_hashkey; - mutable QHash<QByteArray, JSObject*> m_methods; + mutable QHash<QByteArray, DeprecatedPtr<JSObject> > m_methods; mutable QHash<QString, QtField*> m_fields; - mutable QtRuntimeMetaMethod* m_defaultMethod; + mutable WriteBarrier<QtRuntimeMetaMethod> m_defaultMethod; QScriptEngine::ValueOwnership m_ownership; }; diff --git a/Source/WebCore/bridge/qt/qt_runtime.cpp b/Source/WebCore/bridge/qt/qt_runtime.cpp index 0fb811b..5507fc9 100644 --- a/Source/WebCore/bridge/qt/qt_runtime.cpp +++ b/Source/WebCore/bridge/qt/qt_runtime.cpp @@ -587,7 +587,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type if (qstring.mid(lastSlash + 1).contains(QLatin1Char('i'))) realRe.setCaseSensitivity(Qt::CaseInsensitive); - ret = qVariantFromValue(realRe); + ret = QVariant::fromValue(realRe); dist = 0; } else { qConvDebug() << "couldn't parse a JS regexp"; @@ -598,7 +598,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type QRegExp re(qstring); if (re.isValid()) { - ret = qVariantFromValue(re); + ret = QVariant::fromValue(re); dist = 10; } } @@ -610,7 +610,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type if (qtinst) { if (qtinst->getObject()) { qConvDebug() << "found instance, with object:" << (void*) qtinst->getObject(); - ret = qVariantFromValue(qtinst->getObject()); + ret = QVariant::fromValue(qtinst->getObject()); qConvDebug() << ret; dist = 0; } else { @@ -621,7 +621,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type } } else if (type == Null) { QObject* nullobj = 0; - ret = qVariantFromValue(nullobj); + ret = QVariant::fromValue(nullobj); dist = 0; } else { qConvDebug() << "previous type was not an object:" << type; @@ -634,7 +634,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type if (qtinst) { if (qtinst->getObject()) { qConvDebug() << "found instance, with object:" << (void*) qtinst->getObject(); - ret = qVariantFromValue((void *)qtinst->getObject()); + ret = QVariant::fromValue((void *)qtinst->getObject()); qConvDebug() << ret; dist = 0; } else { @@ -644,7 +644,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type qConvDebug() << "wasn't a qtinstance"; } } else if (type == Null) { - ret = qVariantFromValue((void*)0); + ret = QVariant::fromValue((void*)0); dist = 0; } else if (type == Number) { // I don't think that converting a double to a pointer is a wise @@ -1401,8 +1401,6 @@ QtRuntimeMetaMethod::QtRuntimeMetaMethod(ExecState* exec, const Identifier& iden QW_D(QtRuntimeMetaMethod); d->m_signature = signature; d->m_index = index; - d->m_connect = 0; - d->m_disconnect = 0; d->m_allowPrivate = allowPrivate; } @@ -1411,9 +1409,9 @@ void QtRuntimeMetaMethod::markChildren(MarkStack& markStack) QtRuntimeMethod::markChildren(markStack); QW_D(QtRuntimeMetaMethod); if (d->m_connect) - markStack.append(d->m_connect); + markStack.append(&d->m_connect); if (d->m_disconnect) - markStack.append(d->m_disconnect); + markStack.append(&d->m_disconnect); } EncodedJSValue QtRuntimeMetaMethod::call(ExecState* exec) @@ -1523,8 +1521,8 @@ JSValue QtRuntimeMetaMethod::connectGetter(ExecState* exec, JSValue slotBase, co QW_DS(QtRuntimeMetaMethod, thisObj); if (!d->m_connect) - d->m_connect = new (exec) QtRuntimeConnectionMethod(exec, ident, true, d->m_instance, d->m_index, d->m_signature); - return d->m_connect; + d->m_connect.set(exec->globalData(), thisObj, new (exec) QtRuntimeConnectionMethod(exec, ident, true, d->m_instance, d->m_index, d->m_signature)); + return d->m_connect.get(); } JSValue QtRuntimeMetaMethod::disconnectGetter(ExecState* exec, JSValue slotBase, const Identifier& ident) @@ -1533,8 +1531,8 @@ JSValue QtRuntimeMetaMethod::disconnectGetter(ExecState* exec, JSValue slotBase, QW_DS(QtRuntimeMetaMethod, thisObj); if (!d->m_disconnect) - d->m_disconnect = new (exec) QtRuntimeConnectionMethod(exec, ident, false, d->m_instance, d->m_index, d->m_signature); - return d->m_disconnect; + d->m_disconnect.set(exec->globalData(), thisObj, new (exec) QtRuntimeConnectionMethod(exec, ident, false, d->m_instance, d->m_index, d->m_signature)); + return d->m_disconnect.get(); } // =============== diff --git a/Source/WebCore/bridge/qt/qt_runtime.h b/Source/WebCore/bridge/qt/qt_runtime.h index 8dab08c..c5abca7 100644 --- a/Source/WebCore/bridge/qt/qt_runtime.h +++ b/Source/WebCore/bridge/qt/qt_runtime.h @@ -129,8 +129,8 @@ class QtRuntimeMetaMethodData : public QtRuntimeMethodData { QByteArray m_signature; bool m_allowPrivate; int m_index; - QtRuntimeConnectionMethod *m_connect; - QtRuntimeConnectionMethod *m_disconnect; + WriteBarrier<QtRuntimeConnectionMethod> m_connect; + WriteBarrier<QtRuntimeConnectionMethod> m_disconnect; }; class QtRuntimeConnectionMethodData : public QtRuntimeMethodData { |