]> git.saurik.com Git - apple/javascriptcore.git/blob - qt/ChangeLog
JavaScriptCore-903.tar.gz
[apple/javascriptcore.git] / 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