Showing the changes to libraries/script-engine/src/ArrayBufferClass.cpp (1 of 13 files). Show all
Unified · Split
| @@ -23,10 +23,9 @@ static const QString CLASS_NAME = "ArrayBuffer"; · 22 unmodified lines | ||
| 23 | 23 | Q_DECLARE_METATYPE(QByteArray*) |
| 24 | 24 | |
| 25 | 25 | ArrayBufferClass::ArrayBufferClass(ScriptEngine* scriptEngine) : |
| 26 | −QObject(scriptEngine->getScriptEngine()), | |
| 27 | −QScriptClass(scriptEngine->getScriptEngine()), | |
| 26 | +QObject(scriptEngine->getEngine()), | |
| 27 | +QScriptClass(scriptEngine->getEngine()), | |
| 28 | 28 | _scriptEngine(scriptEngine) { |
| 29 | − qDebug() << "Created with engine: " << engine(); | |
| 30 | 29 | qScriptRegisterMetaType<QByteArray>(engine(), toScriptValue, fromScriptValue); |
| 31 | 30 | QScriptValue global = engine()->globalObject(); |
| 32 | 31 | |
| @@ -40,15 +39,16 @@ _scriptEngine(scriptEngine) { · 7 unmodified lines | ||
| 40 | 39 | QScriptEngine::SkipMethodsInEnumeration | |
| 41 | 40 | QScriptEngine::ExcludeSuperClassMethods | |
| 42 | 41 | QScriptEngine::ExcludeSuperClassProperties); |
| 43 | − | |
| 44 | 42 | _proto.setPrototype(global.property("Object").property("prototype")); |
| 45 | 43 | |
| 44 | + // Register constructor | |
| 46 | 45 | _ctor = engine()->newFunction(construct, _proto); |
| 47 | 46 | _ctor.setData(engine()->toScriptValue(this)); |
| 48 | 47 | |
| 49 | 48 | engine()->globalObject().setProperty(name(), _ctor); |
| 50 | 49 | |
| 51 | 50 | // Registering other array types |
| 51 | + // The script engine is there parent so it'll delete them with itself | |
| 52 | 52 | new DataViewClass(scriptEngine); |
| 53 | 53 | new Int8ArrayClass(scriptEngine); |
| 54 | 54 | new Uint8ArrayClass(scriptEngine); |
| @@ -87,11 +87,10 @@ QScriptValue ArrayBufferClass::newInstance(const QByteArray& ba) { · 32 unmodified lines | ||
| 87 | 87 | QScriptValue ArrayBufferClass::construct(QScriptContext* context, QScriptEngine* engine) { |
| 88 | 88 | ArrayBufferClass* cls = qscriptvalue_cast<ArrayBufferClass*>(context->callee().data()); |
| 89 | 89 | if (!cls) { |
| 90 | + // return if callee (function called) is not of type ArrayBuffer | |
| 90 | 91 | return QScriptValue(); |
| 91 | 92 | } |
| 92 | − | |
| 93 | 93 | QScriptValue arg = context->argument(0); |
| 94 | − | |
| 95 | 94 | if (!arg.isValid() || !arg.isNumber()) { |
| 96 | 95 | return QScriptValue(); |
| 97 | 96 | } |
| @@ -100,6 +99,7 @@ QScriptValue ArrayBufferClass::construct(QScriptContext* context, QScriptEngine* · 2 unmodified lines | ||
| 100 | 99 | QScriptValue newObject = cls->newInstance(size); |
| 101 | 100 | |
| 102 | 101 | if (context->isCalledAsConstructor()) { |
| 102 | + // if called with keyword new, replace this object. | |
| 103 | 103 | context->setThisObject(newObject); |
| 104 | 104 | return engine->undefinedValue(); |
| 105 | 105 | } |
| @@ -118,8 +118,8 @@ QScriptClass::QueryFlags ArrayBufferClass::queryProperty(const QScriptValue& obj · 12 unmodified lines | ||
| 118 | 118 | return 0; // No access |
| 119 | 119 | } |
| 120 | 120 | |
| 121 | −QScriptValue ArrayBufferClass::property(const QScriptValue &object, | |
| 122 | − const QScriptString &name, uint id) { | |
| 121 | +QScriptValue ArrayBufferClass::property(const QScriptValue& object, | |
| 122 | + const QScriptString& name, uint id) { | |
| 123 | 123 | QByteArray* ba = qscriptvalue_cast<QByteArray*>(object.data()); |
| 124 | 124 | if (ba && name == _byteLength) { |
| 125 | 125 | return ba->length(); |