{
v8::Local<v8::Object> prototype = engine->global()->Get(v8::String::New("Function"))->ToObject()->Get(v8::String::New("prototype"))->ToObject();
- prototype->Set(v8::String::New("connect"), V8FUNCTION(Connect, engine));
- prototype->Set(v8::String::New("disconnect"), V8FUNCTION(Disconnect, engine));
+ prototype->Set(v8::String::New("connect"), V8FUNCTION(Connect, engine), v8::DontEnum);
+ prototype->Set(v8::String::New("disconnect"), V8FUNCTION(Disconnect, engine), v8::DontEnum);
}
}
void dateRoundtripQtJSQt();
void dateConversionJSQt();
void dateConversionQtJS();
+ void functionPrototypeExtensions();
};
tst_QJSEngine::tst_QJSEngine()
}
#endif
+void tst_QJSEngine::functionPrototypeExtensions()
+{
+ // QJS adds connect and disconnect properties to Function.prototype.
+ QJSEngine eng;
+ QJSValue funProto = eng.globalObject().property("Function").property("prototype");
+ QVERIFY(funProto.isFunction());
+ QVERIFY(funProto.property("connect").isFunction());
+ QCOMPARE(funProto.propertyFlags("connect"), QJSValue::SkipInEnumeration);
+ QVERIFY(funProto.property("disconnect").isFunction());
+ QCOMPARE(funProto.propertyFlags("disconnect"), QJSValue::SkipInEnumeration);
+
+ // No properties should appear in for-in statements.
+ QJSValue props = eng.evaluate("props = []; for (var p in Function.prototype) props.push(p); props");
+ QVERIFY(!eng.hasUncaughtException());
+ QVERIFY(props.isArray());
+ QCOMPARE(props.property("length").toInt32(), 0);
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"