Changeset 56686 in webkit


Ignore:
Timestamp:
Mar 28, 2010 3:03:50 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-03-28 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>

Reviewed by Simon Hausmann.

QScriptEngine API was enriched by globalObject() method
which give an access to the global object.

[Qt] QScriptEngine doesn't give an access to global object
https://bugs.webkit.org/show_bug.cgi?id=36603

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

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r56623 r56686  
     12010-03-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
     2
     3        Reviewed by Simon Hausmann.
     4
     5        QScriptEngine API was enriched by globalObject() method
     6        which give an access to the global object.
     7
     8        [Qt] QScriptEngine doesn't give an access to global object
     9        https://bugs.webkit.org/show_bug.cgi?id=36603
     10
     11        * qt/api/qscriptengine.cpp:
     12        (QScriptEngine::globalObject):
     13        * qt/api/qscriptengine.h:
     14        * qt/api/qscriptengine_p.cpp:
     15        (QScriptEnginePrivate::globalObject):
     16        * qt/api/qscriptengine_p.h:
     17        * qt/tests/qscriptengine/tst_qscriptengine.cpp:
     18        (tst_QScriptEngine::globalObject):
     19
    1202010-03-26  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
    221
  • trunk/JavaScriptCore/qt/api/qscriptengine.cpp

    r56333 r56686  
    144144    return QScriptValue(this, QScriptValue::UndefinedValue);
    145145}
     146
     147/*!
     148  Returns this engine's Global Object.
     149
     150  By default, the Global Object contains the built-in objects that are
     151  part of \l{ECMA-262}, such as Math, Date and String. Additionally,
     152  you can set properties of the Global Object to make your own
     153  extensions available to all script code. Non-local variables in
     154  script code will be created as properties of the Global Object, as
     155  well as local variables in global code.
     156*/
     157QScriptValue QScriptEngine::globalObject() const
     158{
     159    return QScriptValuePrivate::get(d_ptr->globalObject());
     160}
  • trunk/JavaScriptCore/qt/api/qscriptengine.h

    r56333 r56686  
    4848    QScriptValue nullValue();
    4949    QScriptValue undefinedValue();
     50    QScriptValue globalObject() const;
    5051private:
    5152    friend class QScriptEnginePrivate;
  • trunk/JavaScriptCore/qt/api/qscriptengine_p.cpp

    r56333 r56686  
    7070    return new QScriptValuePrivate(this, evaluate(program->program(), program->file(), program->line()));
    7171}
     72
     73QScriptValuePrivate* QScriptEnginePrivate::globalObject() const
     74{
     75    JSObjectRef globalObject = JSContextGetGlobalObject(context());
     76    return new QScriptValuePrivate(this, globalObject, globalObject);
     77}
  • trunk/JavaScriptCore/qt/api/qscriptengine_p.h

    r56333 r56686  
    5353    inline JSValueRef makeJSValue(bool number) const;
    5454    inline JSValueRef makeJSValue(QScriptValue::SpecialValue value) const;
     55
     56    QScriptValuePrivate* globalObject() const;
    5557
    5658    inline QScriptStringPrivate* toStringHandle(const QString& str) const;
  • trunk/JavaScriptCore/qt/tests/qscriptengine/tst_qscriptengine.cpp

    r56333 r56686  
    3636
    3737private slots:
     38    void globalObject();
    3839    void evaluate();
    3940    void collectGarbage();
     
    5152    QVERIFY2(engine.evaluate("1+1").isValid(), "the expression should be evaluated and an valid result should be returned");
    5253    QVERIFY2(engine.evaluate("ping").isValid(), "Script throwing an unhandled exception should return an exception value");
     54}
     55
     56void tst_QScriptEngine::globalObject()
     57{
     58    QScriptEngine engine;
     59    QScriptValue global = engine.globalObject();
     60    QScriptValue self = engine.evaluate("this");
     61    QVERIFY(global.isObject());
     62    QVERIFY(engine.globalObject().equals(engine.evaluate("this")));
     63    QEXPECT_FAIL("", "strictlyEquals is broken - bug 36600 in bugs.webkit.org", Continue);
     64    QVERIFY(engine.globalObject().strictlyEquals(self));
    5365}
    5466
Note: See TracChangeset for help on using the changeset viewer.