Michael Goddard <michael.goddard@trolltech.com>
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Jan 2008 09:39:04 +0000 (09:39 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Jan 2008 09:39:04 +0000 (09:39 +0000)
commit89d13c3b8fac8bda1b025ea9147d6db6f35288b4
treed3aa01931a2c8568e4606a4de1982f7f4e9db4e3
parent1e3ac03e885b13c94536a366dd3c02bd4912022c
Michael Goddard <michael.goddard@trolltech.com>

Reworked the JavaScriptCore Qt bindings:

* Add initial support for string and variant arrays, as well
  as sub QObjects in the JS bindings.

* Don't expose fields marked as not scriptable by moc.

* Add support for dynamic properties and accessing named
  QObject children of an object (like QtScript and older
  IE DOM style JS).
* Add support for custom toString methods.

* Fine tune some bindings to be closer to QtScript.
  Make void functions return undefined, and empty/
  null QStrings return a zero length string.

* Create framework for allowing more direct method calls.
  Since RuntimeMethod doesn't allow us to add additional
  methods/properties to a function, add these classes.
  Start prototyping object.signal.connect(...).

* Add signal support to the Qt bindings.
  Allow connecting to signals (object.signal.connect(slot)),
  disconnecting, and emitting signals.  Currently chooses
  the first signal that matches the name, so this will need
  improvement.

* Add property names, and resolve signals closer to use.
  Enumerating properties now returns some of the Qt properties
  and signals.  Slots and methods aren't quite present.  Also,
  resolve signal connections etc. closer to the time of use, so
  we can do more dynamic resolution based on argument type etc.
  Still picks the first one with the same name, at the moment.

* Make signature comparison code consistent.
  Use the same code for checking meta signatures in
  the method and fallback getters, and avoid a
  QByteArray construction when we can.

* Fix minor memory leak, and handle pointers better.
  Delete the private object in the dtors, and use RefPtrs
  for holding Instances etc.

* Handle method lookup better.
  Allow invocation time method lookup based on the arguments,
  which is closer to QtScript behaviour.  Also, cache the
  method lists and delete them in the QtClass dtor (stops
  a memory leak).

* Improve JS to Qt data type conversions.
  Add some support for Date & RegExp JS objects,
  and provide some metrics on the quality of the
  conversion.

* A couple of fixes for autotest failures.
  Better support for converting lists, read/write only
  QMetaProperty support, modified slot search order...)

* Update JS DRT controller for Qt JS binding changes.
  There were two functions that needed some changes
  so that the layout tests would work, so this makes
  a few tests pass again.

* Bump the timeout for layout tests up to 11s.
  At least some tests have an internal timeout of
  10 seconds, so make the waitUntilDone approach
  wait at least 11s.  fast/dom/open-and-close-by-DOM.html
  is one of these - now the failure message is more
  accurate.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29729 268f45cc-cd09-0410-ab3c-d52691b4dbfc
12 files changed:
JavaScriptCore/ChangeLog
JavaScriptCore/bindings/qt/qt_class.cpp
JavaScriptCore/bindings/qt/qt_class.h
JavaScriptCore/bindings/qt/qt_instance.cpp
JavaScriptCore/bindings/qt/qt_instance.h
JavaScriptCore/bindings/qt/qt_runtime.cpp
JavaScriptCore/bindings/qt/qt_runtime.h
JavaScriptCore/bindings/runtime.cpp
JavaScriptCore/bindings/runtime.h
WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/qt/jsobjects.cpp
WebKitTools/DumpRenderTree/qt/jsobjects.h