initial import
[vuplus_webkit] / Source / JavaScriptCore / qt / ChangeLog
1 2011-03-01  Andras Becsi  <abecsi@webkit.org>
2
3         Reviewed by Csaba Osztrogonác.
4
5         [Qt] Clean up the project files and move common options to WebKit.pri.
6
7         * api/QtScript.pro: Deduplicate options.
8
9 2011-02-24  Andras Becsi  <abecsi@webkit.org>
10
11         Reviewed by Laszlo Gombos.
12
13         [Qt] MinGW build fails to link
14         https://bugs.webkit.org/show_bug.cgi?id=55050
15
16         Prepend the libraries of subcomponents instead of appending them
17         to fix the library order according to the dependency of the libraries
18
19         * api/QtScript.pro:
20
21 2010-09-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
22
23         Reviewed by Andreas Kling.
24
25         [Qt] QScriptEngine should have an API for creating Date objects
26         https://bugs.webkit.org/show_bug.cgi?id=41667
27
28         Implement newDate(), isDate() and toDateTime() functions. Use the
29         QDateTime::{to,set}MSecsSinceEpoch() functions to do the
30         calculations.
31
32         * api/qscriptengine.cpp:
33         (QScriptEngine::newDate):
34         * api/qscriptengine.h:
35         * api/qscriptengine_p.cpp:
36         (QScriptEnginePrivate::newDate):
37         * api/qscriptengine_p.h:
38         (QScriptEnginePrivate::isDate):
39
40         * api/qscriptoriginalglobalobject_p.h:
41         (QScriptOriginalGlobalObject::QScriptOriginalGlobalObject): need
42         to keep track of Date Constructor and Prototype.
43         (QScriptOriginalGlobalObject::~QScriptOriginalGlobalObject): ditto.
44         (QScriptOriginalGlobalObject::isDate): use the Date Constructor
45         and Prototype to identify Date values.
46
47         * api/qscriptvalue.cpp:
48         (QScriptValue::isDate):
49         (QScriptValue::toDateTime):
50         * api/qscriptvalue.h:
51         * api/qscriptvalue_p.h:
52         (QScriptValuePrivate::isDate):
53         (QScriptValuePrivate::toDateTime):
54         * tests/qscriptengine/tst_qscriptengine.cpp:
55         (tst_QScriptEngine::newDate):
56
57 2010-07-27  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
58
59         Reviewed by Kenneth Rohde Christiansen.
60
61         Update the QScriptValue autotests suite.
62
63         QScriptValue generated files were updated, changes are:
64          - More tested values (for example QSE::newObject() and QSE::newArray())
65          - Tested values are recreated before each test and are not reused.
66          The change implies better code coverage and some expected result changes.
67          - A new test to check copy and assign functions.
68          - Tests are using standard QTestLib interface, without any custom macros.
69
70         [Qt] Improve test coverage for the QScriptValue
71         https://bugs.webkit.org/show_bug.cgi?id=42366
72
73         * tests/qscriptvalue/tst_qscriptvalue.cpp:
74         (tst_QScriptValue::tst_QScriptValue):
75         (tst_QScriptValue::~tst_QScriptValue):
76         (tst_QScriptValue::assignAndCopyConstruct_data):
77         (tst_QScriptValue::assignAndCopyConstruct):
78         * tests/qscriptvalue/tst_qscriptvalue.h:
79         * tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
80         (tst_QScriptValue::equals_data):
81         (tst_QScriptValue::equals):
82         (tst_QScriptValue::strictlyEquals_data):
83         (tst_QScriptValue::strictlyEquals):
84         (tst_QScriptValue::instanceOf_data):
85         (tst_QScriptValue::instanceOf):
86         * tests/qscriptvalue/tst_qscriptvalue_generated_init.cpp:
87         (tst_QScriptValue::initScriptValues):
88         * tests/qscriptvalue/tst_qscriptvalue_generated_istype.cpp:
89         (tst_QScriptValue::isValid_data):
90         (tst_QScriptValue::isValid):
91         (tst_QScriptValue::isBool_data):
92         (tst_QScriptValue::isBool):
93         (tst_QScriptValue::isBoolean_data):
94         (tst_QScriptValue::isBoolean):
95         (tst_QScriptValue::isNumber_data):
96         (tst_QScriptValue::isNumber):
97         (tst_QScriptValue::isFunction_data):
98         (tst_QScriptValue::isFunction):
99         (tst_QScriptValue::isNull_data):
100         (tst_QScriptValue::isNull):
101         (tst_QScriptValue::isString_data):
102         (tst_QScriptValue::isString):
103         (tst_QScriptValue::isUndefined_data):
104         (tst_QScriptValue::isUndefined):
105         (tst_QScriptValue::isObject_data):
106         (tst_QScriptValue::isObject):
107         (tst_QScriptValue::isArray_data):
108         (tst_QScriptValue::isArray):
109         (tst_QScriptValue::isError_data):
110         (tst_QScriptValue::isError):
111         * tests/qscriptvalue/tst_qscriptvalue_generated_totype.cpp:
112         (tst_QScriptValue::toString_data):
113         (tst_QScriptValue::toString):
114         (tst_QScriptValue::toNumber_data):
115         (tst_QScriptValue::toNumber):
116         (tst_QScriptValue::toBool_data):
117         (tst_QScriptValue::toBool):
118         (tst_QScriptValue::toBoolean_data):
119         (tst_QScriptValue::toBoolean):
120         (tst_QScriptValue::toInteger_data):
121         (tst_QScriptValue::toInteger):
122         (tst_QScriptValue::toInt32_data):
123         (tst_QScriptValue::toInt32):
124         (tst_QScriptValue::toUInt32_data):
125         (tst_QScriptValue::toUInt32):
126         (tst_QScriptValue::toUInt16_data):
127         (tst_QScriptValue::toUInt16):
128
129 2010-07-27  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
130
131         Reviewed by Kenneth Rohde Christiansen.
132
133         [Qt] Implement QScriptEngine::newFunction() parts that doesn't depend on QScriptContext
134         https://bugs.webkit.org/show_bug.cgi?id=42174
135
136         Since our function can be called in Javascript both as a function
137         and as a constructor, we couldn't use the existing
138         JSObjectMakeFunctionWithCallback() and JSObjectMakeConstructor().
139
140         Instead, a JSClassRef was created, implementing the needed
141         callbacks (the callAsConstructor is not there yet because its
142         behaviour depends on QScriptContext).
143
144         For the moment, QScriptContext is defined as a void type, since we
145         still don't use it.
146
147         The variant of newFunction() that also takes an external argument
148         was also implemented. The details of implementation were added to
149         the qscriptfunction{.c,_p.h} files.
150
151         This commit also adds tests, some of them from Qt's upstream.
152
153         * api/QtScript.pro:
154         * api/qscriptengine.cpp:
155         (QScriptEngine::newFunction):
156         * api/qscriptengine.h:
157         * api/qscriptengine_p.cpp:
158         (QScriptEnginePrivate::QScriptEnginePrivate):
159         (QScriptEnginePrivate::~QScriptEnginePrivate):
160         (QScriptEnginePrivate::newFunction):
161         * api/qscriptengine_p.h:
162         * api/qscriptfunction.cpp: Added.
163         (qt_NativeFunction_finalize):
164         (qt_NativeFunction_callAsFunction):
165         (qt_NativeFunctionWithArg_finalize):
166         (qt_NativeFunctionWithArg_callAsFunction):
167         * api/qscriptfunction_p.h: Added.
168         (QNativeFunctionData::QNativeFunctionData):
169         (QNativeFunctionWithArgData::QNativeFunctionWithArgData):
170         * api/qscriptoriginalglobalobject_p.h:
171         (QScriptOriginalGlobalObject::QScriptOriginalGlobalObject):
172         (QScriptOriginalGlobalObject::~QScriptOriginalGlobalObject):
173         (QScriptOriginalGlobalObject::functionPrototype):
174         * tests/qscriptengine/tst_qscriptengine.cpp:
175         (myFunction):
176         (myFunctionWithArg):
177         (myFunctionThatReturns):
178         (myFunctionThatReturnsWithoutEngine):
179         (myFunctionThatReturnsWrongEngine):
180         (tst_QScriptEngine::newFunction):
181
182 2010-07-23  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
183
184         Reviewed by Kenneth Rohde Christiansen.
185
186         QScriptValue::equals benchmark crash fix.
187
188         Patch changes QScriptValue::equals implementation to cover
189         more edge cases.
190
191         Problem exposes an issue in our autotests (all values got
192         bound to an engine too fast - bug 42366).
193
194         [Qt] QScriptValue::equals asserts
195         https://bugs.webkit.org/show_bug.cgi?id=42363
196
197         * api/qscriptvalue_p.h:
198         (QScriptValuePrivate::equals):
199
200 2010-07-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
201
202         Reviewed by Kenneth Rohde Christiansen.
203
204         Introduce QScriptOriginalGlobalObject.
205
206         QtScript exposes more functionality than JSC C API. Sometimes it is
207         necessary to take a shortcut in implementation. Really often we have
208         to use a standard JS function. These function could be changed or
209         even deleted by a script, so a backup of a reference to an object is needed.
210
211         In them same time this is rather a workaround then real fix, so the code
212         should be separated and changed easily in future. It is why we need
213         the new internal class.
214
215         The patch fixes a few crashes.
216
217         [Qt] QScriptEngine should work correctly even after global object changes
218         https://bugs.webkit.org/show_bug.cgi?id=41839
219
220         * api/QtScript.pro:
221         * api/qscriptengine_p.cpp:
222         (QScriptEnginePrivate::QScriptEnginePrivate):
223         (QScriptEnginePrivate::~QScriptEnginePrivate):
224         * api/qscriptengine_p.h:
225         (QScriptEnginePrivate::isArray):
226         (QScriptEnginePrivate::isError):
227         (QScriptEnginePrivate::objectHasOwnProperty):
228         (QScriptEnginePrivate::objectGetOwnPropertyNames):
229         * api/qscriptoriginalglobalobject_p.h: Added.
230         (QScriptOriginalGlobalObject::QScriptOriginalGlobalObject):
231         (QScriptOriginalGlobalObject::initializeMember):
232         (QScriptOriginalGlobalObject::~QScriptOriginalGlobalObject):
233         (QScriptOriginalGlobalObject::objectHasOwnProperty):
234         (QScriptOriginalGlobalObject::objectGetOwnPropertyNames):
235         (QScriptOriginalGlobalObject::isArray):
236         (QScriptOriginalGlobalObject::isError):
237         (QScriptOriginalGlobalObject::isType):
238         * api/qscriptvalue_p.h:
239         (QScriptValuePrivate::isError):
240         (QScriptValuePrivate::hasOwnProperty):
241         * api/qscriptvalueiterator_p.h:
242         (QScriptValueIteratorPrivate::QScriptValueIteratorPrivate):
243         * tests/qscriptvalue/tst_qscriptvalue.cpp:
244         (tst_QScriptValue::globalObjectChanges):
245         * tests/qscriptvalue/tst_qscriptvalue.h:
246
247 2010-07-13  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
248
249         Reviewed by Simon Hausmann.
250
251         Introduce QScriptValueIterator.
252
253         The QScriptValueIterator class permits to iterate over a QScriptValue's properties.
254
255         [Qt] QtScript should provide an API for enumerating a JS object's properties
256         https://bugs.webkit.org/show_bug.cgi?id=41680
257
258         * api/QtScript.pro:
259         * api/qscriptvalueiterator.cpp: Added.
260         (QScriptValueIterator::QScriptValueIterator):
261         (QScriptValueIterator::~QScriptValueIterator):
262         (QScriptValueIterator::hasNext):
263         (QScriptValueIterator::next):
264         (QScriptValueIterator::hasPrevious):
265         (QScriptValueIterator::previous):
266         (QScriptValueIterator::toFront):
267         (QScriptValueIterator::toBack):
268         (QScriptValueIterator::name):
269         (QScriptValueIterator::scriptName):
270         (QScriptValueIterator::value):
271         (QScriptValueIterator::setValue):
272         (QScriptValueIterator::remove):
273         (QScriptValueIterator::flags):
274         (QScriptValueIterator::operator=):
275         * api/qscriptvalueiterator.h: Added.
276         * api/qscriptvalueiterator_p.h: Added.
277         (QScriptValueIteratorPrivate::QScriptValueIteratorPrivate):
278         (QScriptValueIteratorPrivate::~QScriptValueIteratorPrivate):
279         (QScriptValueIteratorPrivate::hasNext):
280         (QScriptValueIteratorPrivate::next):
281         (QScriptValueIteratorPrivate::hasPrevious):
282         (QScriptValueIteratorPrivate::previous):
283         (QScriptValueIteratorPrivate::name):
284         (QScriptValueIteratorPrivate::scriptName):
285         (QScriptValueIteratorPrivate::value):
286         (QScriptValueIteratorPrivate::setValue):
287         (QScriptValueIteratorPrivate::remove):
288         (QScriptValueIteratorPrivate::toFront):
289         (QScriptValueIteratorPrivate::toBack):
290         (QScriptValueIteratorPrivate::flags):
291         (QScriptValueIteratorPrivate::isValid):
292         (QScriptValueIteratorPrivate::engine):
293         * tests/qscriptvalueiterator/qscriptvalueiterator.pro: Added.
294         * tests/qscriptvalueiterator/tst_qscriptvalueiterator.cpp: Added.
295         (tst_QScriptValueIterator::tst_QScriptValueIterator):
296         (tst_QScriptValueIterator::~tst_QScriptValueIterator):
297         (tst_QScriptValueIterator::iterateForward_data):
298         (tst_QScriptValueIterator::iterateForward):
299         (tst_QScriptValueIterator::iterateBackward_data):
300         (tst_QScriptValueIterator::iterateBackward):
301         (tst_QScriptValueIterator::iterateArray_data):
302         (tst_QScriptValueIterator::iterateArray):
303         (tst_QScriptValueIterator::iterateBackAndForth):
304         (tst_QScriptValueIterator::setValue):
305         (tst_QScriptValueIterator::remove):
306         (tst_QScriptValueIterator::removeMixed):
307         (tst_QScriptValueIterator::removeUndeletable):
308         (tst_QScriptValueIterator::iterateString):
309         (tst_QScriptValueIterator::assignObjectToIterator):
310         * tests/tests.pro:
311
312 2010-07-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
313
314         Reviewed by Simon Hausmann.
315
316         Implementation of the QScriptValue::propertyFlags function.
317
318         The function returns the flags of a property with the given name,
319         using a given mode to resolve the property. This is a simple
320         implementation that is sufficient to test the QScriptValueIterator.
321
322         [Qt] QScriptValue API should have a property flag accessor.
323         https://bugs.webkit.org/show_bug.cgi?id=41769
324
325         * api/qscriptvalue.cpp:
326         (QScriptValue::propertyFlags):
327         * api/qscriptvalue.h:
328         * api/qscriptvalue_p.h:
329         (QScriptValuePrivate::propertyFlags):
330         * tests/qscriptvalue/tst_qscriptvalue.cpp:
331         (tst_QScriptValue::propertyFlag_data):
332         (tst_QScriptValue::propertyFlag):
333         * tests/qscriptvalue/tst_qscriptvalue.h:
334
335 2010-07-07  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
336
337         Reviewed by Kenneth Rohde Christiansen.
338
339         Implementation of QScriptValue::isArray()
340         https://bugs.webkit.org/show_bug.cgi?id=41713
341
342         Since we don't have access to the [[Class]] internal property of
343         builtins (including Array), the solution was to keep the original 'Array'
344         (constructor) and 'Array.prototype' objects and use them to identify
345         if a given object is an Array.
346
347         Also uncomment some tests and add some tests of newArray() that
348         depended on isArray(). 
349
350         * api/qscriptengine_p.cpp:
351         (QScriptEnginePrivate::QScriptEnginePrivate):
352         (QScriptEnginePrivate::~QScriptEnginePrivate):
353         * api/qscriptengine_p.h:
354         (QScriptEnginePrivate::isArray):
355         * api/qscriptvalue.cpp:
356         (QScriptValue::isArray):
357         * api/qscriptvalue.h:
358         * api/qscriptvalue_p.h:
359         (QScriptValuePrivate::isArray):
360         * tests/qscriptengine/tst_qscriptengine.cpp:
361         (tst_QScriptEngine::newArray):
362
363 2010-07-06  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
364
365         Reviewed by Kenneth Rohde Christiansen.
366
367         Implementation of QScriptValue properties accessors.
368
369         The patch contains implementation of the QScriptValue::property() and
370         the QScriptValue::setProperty(). It is not full functionality, as these
371         method are too complex for one patch, but it is enough to cover about
372         95% of use cases.
373
374         Missing functionality:
375          - Few of the PropertyFlags are ignored.
376          - Only a public part of the ResolveFlags can be used (ResolveLocal,
377          ResolvePrototype).
378
379         A lot of new test cases were added.
380
381         [Qt] QScriptValue should have API for accessing object properties
382         https://bugs.webkit.org/show_bug.cgi?id=40903
383
384         * api/qscriptconverter_p.h:
385         (QScriptConverter::toPropertyFlags):
386         * api/qscriptstring_p.h:
387         (QScriptStringPrivate::operator JSStringRef):
388         * api/qscriptvalue.cpp:
389         (QScriptValue::property):
390         (QScriptValue::setProperty):
391         * api/qscriptvalue.h:
392         (QScriptValue::):
393         * api/qscriptvalue_p.h:
394         (QScriptValuePrivate::assignEngine):
395         (QScriptValuePrivate::property):
396         (QScriptValuePrivate::hasOwnProperty):
397         (QScriptValuePrivate::setProperty):
398         (QScriptValuePrivate::deleteProperty):
399         * tests/qscriptvalue/tst_qscriptvalue.cpp:
400         (tst_QScriptValue::getPropertySimple_data):
401         (tst_QScriptValue::getPropertySimple):
402         (tst_QScriptValue::setPropertySimple):
403         (tst_QScriptValue::getPropertyResolveFlag):
404         (tst_QScriptValue::getSetProperty):
405         (tst_QScriptValue::setProperty_data):
406         (tst_QScriptValue::setProperty):
407         * tests/qscriptvalue/tst_qscriptvalue.h:
408
409 2010-07-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
410
411         Reviewed by Simon Hausmann.
412
413         Compilation fix.
414
415         QScriptEnginePrivate::newArray can't be const because it can
416         throw an exception.
417
418         [Qt] QScriptEnginePrivate compilation fix
419         https://bugs.webkit.org/show_bug.cgi?id=41520
420
421         * api/qscriptengine_p.cpp:
422         (QScriptEnginePrivate::newArray):
423         * api/qscriptengine_p.h:
424
425 2010-06-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
426
427         Reviewed by Simon Hausmann.
428
429         Implement exception reporting in the QtScript API.
430
431         The exception should be accessible through the API by the uncaughtException
432         function. Functions; hasUncaughtException, clearExceptions, uncaughtExceptionLineNumber,
433         uncaughtExceptionBacktrace were added to facilitate error checking and debugging.
434
435         [Qt] QtScript API should be exceptions aware.
436         https://bugs.webkit.org/show_bug.cgi?id=41199
437
438         * api/qscriptengine.cpp:
439         (QScriptEngine::hasUncaughtException):
440         (QScriptEngine::uncaughtException):
441         (QScriptEngine::clearExceptions):
442         (QScriptEngine::uncaughtExceptionLineNumber):
443         (QScriptEngine::uncaughtExceptionBacktrace):
444         * api/qscriptengine.h:
445         * api/qscriptengine_p.cpp:
446         (QScriptEnginePrivate::QScriptEnginePrivate):
447         (QScriptEnginePrivate::~QScriptEnginePrivate):
448         (QScriptEnginePrivate::uncaughtException):
449         * api/qscriptengine_p.h:
450         (QScriptEnginePrivate::):
451         (QScriptEnginePrivate::evaluate):
452         (QScriptEnginePrivate::hasUncaughtException):
453         (QScriptEnginePrivate::clearExceptions):
454         (QScriptEnginePrivate::setException):
455         (QScriptEnginePrivate::uncaughtExceptionLineNumber):
456         (QScriptEnginePrivate::uncaughtExceptionBacktrace):
457         * api/qscriptvalue_p.h:
458         (QScriptValuePrivate::toString):
459         (QScriptValuePrivate::toNumber):
460         (QScriptValuePrivate::toObject):
461         (QScriptValuePrivate::equals):
462         (QScriptValuePrivate::instanceOf):
463         (QScriptValuePrivate::call):
464         (QScriptValuePrivate::inherits):
465         * tests/qscriptengine/tst_qscriptengine.cpp:
466         (tst_QScriptEngine::uncaughtException):
467