diff options
author | Benjamin Poulain <benjamin.poulain@nokia.com> | 2009-08-05 18:56:44 (GMT) |
---|---|---|
committer | Benjamin Poulain <benjamin.poulain@nokia.com> | 2009-08-05 19:10:00 (GMT) |
commit | 520378cfedd63544a9689687256d2c89352ee561 (patch) | |
tree | 79a2c0e667dc95ffed3b8300edff098d15664f41 /src/script | |
parent | a0fecb437176786e9c809a45e64351516b05a201 (diff) | |
download | Qt-520378cfedd63544a9689687256d2c89352ee561.zip Qt-520378cfedd63544a9689687256d2c89352ee561.tar.gz Qt-520378cfedd63544a9689687256d2c89352ee561.tar.bz2 |
Updates getPropertyNames() on all javascript object to use the flag
getPropertyNames() now uses a flag to specify which property should be
filtered. This flag should be used by all javascript objects.
This patch fixes the changes introduced by
e520df1f8678bd59adb341fb586f008a7de17fe8
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/api/qscriptvalueiterator.cpp | 11 | ||||
-rw-r--r-- | src/script/bridge/qscriptclassobject.cpp | 4 | ||||
-rw-r--r-- | src/script/bridge/qscriptclassobject_p.h | 2 | ||||
-rw-r--r-- | src/script/bridge/qscriptobject.cpp | 10 | ||||
-rw-r--r-- | src/script/bridge/qscriptobject_p.h | 4 | ||||
-rw-r--r-- | src/script/bridge/qscriptqobject.cpp | 10 | ||||
-rw-r--r-- | src/script/bridge/qscriptqobject_p.h | 4 |
7 files changed, 17 insertions, 28 deletions
diff --git a/src/script/api/qscriptvalueiterator.cpp b/src/script/api/qscriptvalueiterator.cpp index 0092fbd..5d2c43b 100644 --- a/src/script/api/qscriptvalueiterator.cpp +++ b/src/script/api/qscriptvalueiterator.cpp @@ -117,17 +117,6 @@ public: for(; propertyNamesIt != propertyNamesArray.end(); ++propertyNamesIt) { propertyNames.append(propertyNamesIt->ustring()); } - if (object.isArray() || (QScriptValuePrivate::get(object)->jscValue.isObject(&JSC::JSArray::info))) { - const JSC::JSArray *array = JSC::asArray(QScriptValuePrivate::get(object)->jscValue); - const int length = array->length(); - for (int i = 0; i < length; ++i) - propertyNames.append(JSC::UString::from(i)); - } else if (object.isString() || (QScriptValuePrivate::get(object)->jscValue.isObject(&JSC::StringObject::info))) { - const JSC::UString string = QScriptValuePrivate::get(object)->jscValue.toString(exec); - const int length = string.size(); - for (int i = 0; i < length; ++i) - propertyNames.append(JSC::UString::from(i)); - } it = propertyNames.begin(); initialized = true; } diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp index 5232ca2..f805f65 100644 --- a/src/script/bridge/qscriptclassobject.cpp +++ b/src/script/bridge/qscriptclassobject.cpp @@ -177,7 +177,7 @@ bool ClassObjectDelegate::getPropertyAttributes(const QScriptObject* object, JSC void ClassObjectDelegate::getPropertyNames(QScriptObject* object, JSC::ExecState *exec, JSC::PropertyNameArray &propertyNames, - bool includeNonEnumerable) + unsigned listedAttributes) { QScriptEnginePrivate *engine = scriptEngineFromExec(exec); QScriptValue scriptObject = engine->scriptValueFromJSCValue(object); @@ -190,7 +190,7 @@ void ClassObjectDelegate::getPropertyNames(QScriptObject* object, JSC::ExecState } delete it; } - QScriptObjectDelegate::getPropertyNames(object, exec, propertyNames, includeNonEnumerable); + QScriptObjectDelegate::getPropertyNames(object, exec, propertyNames, listedAttributes); } JSC::CallType ClassObjectDelegate::getCallData(QScriptObject*, JSC::CallData &callData) diff --git a/src/script/bridge/qscriptclassobject_p.h b/src/script/bridge/qscriptclassobject_p.h index 39d281d..1092047 100644 --- a/src/script/bridge/qscriptclassobject_p.h +++ b/src/script/bridge/qscriptclassobject_p.h @@ -90,7 +90,7 @@ public: const JSC::Identifier&, unsigned&) const; virtual void getPropertyNames(QScriptObject*, JSC::ExecState*, - JSC::PropertyNameArray&, bool includeNonEnumerable = false); + JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual JSC::CallType getCallData(QScriptObject*, JSC::CallData&); static JSC::JSValue JSC_HOST_CALL call(JSC::ExecState*, JSC::JSObject*, diff --git a/src/script/bridge/qscriptobject.cpp b/src/script/bridge/qscriptobject.cpp index e4d2168..bbc51d9 100644 --- a/src/script/bridge/qscriptobject.cpp +++ b/src/script/bridge/qscriptobject.cpp @@ -133,13 +133,13 @@ bool QScriptObject::getPropertyAttributes(JSC::ExecState* exec, const JSC::Ident return d->delegate->getPropertyAttributes(this, exec, propertyName, attributes); } -void QScriptObject::getPropertyNames(JSC::ExecState* exec, JSC::PropertyNameArray& propertyNames, bool includeNonEnumerable) +void QScriptObject::getPropertyNames(JSC::ExecState* exec, JSC::PropertyNameArray& propertyNames, unsigned listedAttributes) { if (!d || !d->delegate) { - JSC::JSObject::getPropertyNames(exec, propertyNames, includeNonEnumerable); + JSC::JSObject::getPropertyNames(exec, propertyNames, listedAttributes); return; } - d->delegate->getPropertyNames(this, exec, propertyNames, includeNonEnumerable); + d->delegate->getPropertyNames(this, exec, propertyNames, listedAttributes); } void QScriptObject::mark() @@ -220,9 +220,9 @@ bool QScriptObjectDelegate::getPropertyAttributes(const QScriptObject* object, void QScriptObjectDelegate::getPropertyNames(QScriptObject* object, JSC::ExecState* exec, JSC::PropertyNameArray& propertyNames, - bool includeNonEnumerable) + unsigned listedAttributes) { - object->JSC::JSObject::getPropertyNames(exec, propertyNames, includeNonEnumerable); + object->JSC::JSObject::getPropertyNames(exec, propertyNames, listedAttributes); } void QScriptObjectDelegate::mark(QScriptObject* object) diff --git a/src/script/bridge/qscriptobject_p.h b/src/script/bridge/qscriptobject_p.h index b52e654..8023e8e 100644 --- a/src/script/bridge/qscriptobject_p.h +++ b/src/script/bridge/qscriptobject_p.h @@ -89,7 +89,7 @@ public: bool checkDontDelete = true); virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier&, unsigned&) const; - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, bool includeNonEnumerable = false); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual void mark(); virtual JSC::CallType getCallData(JSC::CallData&); virtual JSC::ConstructType getConstructData(JSC::ConstructData&); @@ -145,7 +145,7 @@ public: virtual bool getPropertyAttributes(const QScriptObject*, JSC::ExecState*, const JSC::Identifier&, unsigned&) const; virtual void getPropertyNames(QScriptObject*, JSC::ExecState*, JSC::PropertyNameArray&, - bool includeNonEnumerable = false); + unsigned listedAttributes = JSC::Structure::Prototype); virtual void mark(QScriptObject*); virtual JSC::CallType getCallData(QScriptObject*, JSC::CallData&); virtual JSC::ConstructType getConstructData(QScriptObject*, JSC::ConstructData&); diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 3887fb7..892ca5b 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -1511,7 +1511,7 @@ bool QObjectDelegate::getPropertyAttributes(const QScriptObject *object, void QObjectDelegate::getPropertyNames(QScriptObject *object, JSC::ExecState *exec, JSC::PropertyNameArray &propertyNames, - bool includeNonEnumerable) + unsigned listedAttributes) { QObject *qobject = data->value; if (!qobject) { @@ -1527,7 +1527,7 @@ void QObjectDelegate::getPropertyNames(QScriptObject *object, JSC::ExecState *ex ? meta->propertyOffset() : 0; for ( ; i < meta->propertyCount(); ++i) { QMetaProperty prop = meta->property(i); - if (includeNonEnumerable || isEnumerableMetaProperty(prop, meta, i)) { + if ((listedAttributes & JSC::Structure::NonEnumerable) || isEnumerableMetaProperty(prop, meta, i)) { QString name = QString::fromLatin1(prop.name()); propertyNames.add(JSC::Identifier(exec, qtStringToJSCUString(name))); } @@ -1555,7 +1555,7 @@ void QObjectDelegate::getPropertyNames(QScriptObject *object, JSC::ExecState *ex } } - QScriptObjectDelegate::getPropertyNames(object, exec, propertyNames, includeNonEnumerable); + QScriptObjectDelegate::getPropertyNames(object, exec, propertyNames, listedAttributes); } void QObjectDelegate::mark(QScriptObject *object) @@ -1793,7 +1793,7 @@ bool QMetaObjectWrapperObject::getPropertyAttributes(JSC::ExecState *exec, return JSC::JSObject::getPropertyAttributes(exec, propertyName, attributes); } -void QMetaObjectWrapperObject::getPropertyNames(JSC::ExecState *exec, JSC::PropertyNameArray &propertyNames, bool includeNonEnumerable) +void QMetaObjectWrapperObject::getPropertyNames(JSC::ExecState *exec, JSC::PropertyNameArray &propertyNames, unsigned listedAttributes) { const QMetaObject *meta = data->value; if (!meta) @@ -1803,7 +1803,7 @@ void QMetaObjectWrapperObject::getPropertyNames(JSC::ExecState *exec, JSC::Prope for (int j = 0; j < e.keyCount(); ++j) propertyNames.add(JSC::Identifier(exec, e.key(j))); } - JSC::JSObject::getPropertyNames(exec, propertyNames, includeNonEnumerable); + JSC::JSObject::getPropertyNames(exec, propertyNames, listedAttributes); } void QMetaObjectWrapperObject::mark() diff --git a/src/script/bridge/qscriptqobject_p.h b/src/script/bridge/qscriptqobject_p.h index 15c6e22..cce585f 100644 --- a/src/script/bridge/qscriptqobject_p.h +++ b/src/script/bridge/qscriptqobject_p.h @@ -108,7 +108,7 @@ public: const JSC::Identifier&, unsigned&) const; virtual void getPropertyNames(QScriptObject*, JSC::ExecState*, JSC::PropertyNameArray&, - bool includeNonEnumerable = false); + unsigned listedAttributes = JSC::Structure::Prototype); virtual void mark(QScriptObject*); inline QObject *value() const { return data->value; } @@ -297,7 +297,7 @@ public: virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier&, unsigned&) const; virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, - bool includeNonEnumerable = false); + unsigned listedAttributes = JSC::Structure::Prototype); virtual void mark(); virtual JSC::CallType getCallData(JSC::CallData&); |