Changeset 62078 in webkit


Ignore:
Timestamp:
Jun 28, 2010 8:04:36 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>

Reviewed by Kenneth Rohde Christiansen.

[Qt] QScriptEngine API should contain a newArray function
https://bugs.webkit.org/show_bug.cgi?id=39115

  • qt/api/qscriptengine.cpp: (QScriptEngine::newArray):
  • qt/api/qscriptengine.h:
  • qt/api/qscriptengine_p.cpp: (QScriptEnginePrivate::newArray):
  • qt/api/qscriptengine_p.h:
  • qt/tests/qscriptengine/tst_qscriptengine.cpp: (tst_QScriptEngine::newArray):
Location:
trunk/JavaScriptCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r62053 r62078  
     12010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        [Qt] QScriptEngine API should contain a newArray function
     6        https://bugs.webkit.org/show_bug.cgi?id=39115
     7
     8        * qt/api/qscriptengine.cpp:
     9        (QScriptEngine::newArray):
     10        * qt/api/qscriptengine.h:
     11        * qt/api/qscriptengine_p.cpp:
     12        (QScriptEnginePrivate::newArray):
     13        * qt/api/qscriptengine_p.h:
     14        * qt/tests/qscriptengine/tst_qscriptengine.cpp:
     15        (tst_QScriptEngine::newArray):
     16
    1172010-06-28  Xan Lopez  <xlopez@igalia.com>
    218
  • trunk/JavaScriptCore/qt/api/qscriptengine.cpp

    r60583 r62078  
    207207
    208208/*!
     209  Creates a QtScript object of class Array with the given \a length.
     210
     211  \sa newObject()
     212*/
     213QScriptValue QScriptEngine::newArray(uint length)
     214{
     215    return QScriptValuePrivate::get(d_ptr->newArray(length));
     216}
     217
     218/*!
    209219  Returns this engine's Global Object.
    210220
  • trunk/JavaScriptCore/qt/api/qscriptengine.h

    r60583 r62078  
    5252    QScriptValue undefinedValue();
    5353    QScriptValue newObject();
     54    QScriptValue newArray(uint length = 0);
    5455    QScriptValue globalObject() const;
    5556private:
  • trunk/JavaScriptCore/qt/api/qscriptengine_p.cpp

    r61726 r62078  
    8383}
    8484
     85QScriptValuePrivate* QScriptEnginePrivate::newArray(uint length) const
     86{
     87    JSObjectRef array = JSObjectMakeArray(m_context, /* argumentCount */ 0, /* arguments */ 0, /* exception */ 0);
     88
     89    if (length > 0) {
     90        JSRetainPtr<JSStringRef> lengthRef(Adopt, JSStringCreateWithUTF8CString("length"));
     91        JSObjectSetProperty(m_context, array, lengthRef.get(), JSValueMakeNumber(m_context, length), kJSPropertyAttributeNone, /* exception */ 0);
     92    }
     93
     94    return new QScriptValuePrivate(this, array);
     95}
     96
    8597QScriptValuePrivate* QScriptEnginePrivate::globalObject() const
    8698{
  • trunk/JavaScriptCore/qt/api/qscriptengine_p.h

    r61003 r62078  
    5858
    5959    QScriptValuePrivate* newObject() const;
     60    QScriptValuePrivate* newArray(uint length) const;
    6061    QScriptValuePrivate* globalObject() const;
    6162
  • trunk/JavaScriptCore/qt/tests/qscriptengine/tst_qscriptengine.cpp

    r60662 r62078  
    4848    void toObject();
    4949    void toObjectTwoEngines();
     50    void newArray();
    5051};
    5152
     
    410411}
    411412
     413void tst_QScriptEngine::newArray()
     414{
     415    QScriptEngine eng;
     416    QScriptValue array = eng.newArray();
     417    QCOMPARE(array.isValid(), true);
     418    // QCOMPARE(array.isArray(), true);
     419    QCOMPARE(array.isObject(), true);
     420    QVERIFY(!array.isFunction());
     421    // QCOMPARE(array.scriptClass(), (QScriptClass*)0);
     422
     423    // Prototype should be Array.prototype.
     424    QCOMPARE(array.prototype().isValid(), true);
     425    // QCOMPARE(array.prototype().isArray(), true);
     426    QCOMPARE(array.prototype().strictlyEquals(eng.evaluate("Array.prototype")), true);
     427
     428    QScriptValue arrayWithSize = eng.newArray(42);
     429    QCOMPARE(arrayWithSize.isValid(), true);
     430    // QCOMPARE(arrayWithSize.isArray(), true);
     431    QCOMPARE(arrayWithSize.isObject(), true);
     432    QCOMPARE(arrayWithSize.property("length").toInt32(), 42);
     433}
     434
    412435QTEST_MAIN(tst_QScriptEngine)
    413436#include "tst_qscriptengine.moc"
Note: See TracChangeset for help on using the changeset viewer.