Reviewed by Ken.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Dec 2003 19:46:12 +0000 (19:46 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Dec 2003 19:46:12 +0000 (19:46 +0000)
<rdar://problem/3395759>: results of parent.document.getElementsByTagName can't be added to string

* khtml/ecma/kjs_dom.cpp:
        (DOMNodeList::toPrimitive): Always convert to string instead of trying to convert
to number and failing, as is done for DOMNode.
        * khtml/ecma/kjs_dom.h: Prototype new method.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@5672 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_dom.cpp
WebCore/khtml/ecma/kjs_dom.h

index 530ef24..1c6b0f0 100644 (file)
@@ -1,3 +1,14 @@
+2003-12-03  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Ken.
+
+       <rdar://problem/3395759>: results of parent.document.getElementsByTagName can't be added to string
+        
+       * khtml/ecma/kjs_dom.cpp:
+        (DOMNodeList::toPrimitive): Always convert to string instead of trying to convert
+       to number and failing, as is done for DOMNode.
+        * khtml/ecma/kjs_dom.h: Prototype new method.
+
 2003-12-02  Richard Williamson   <rjw@apple.com>
 
        Return a value that is backed by RuntimeObjectImpl, instead
index 5e588fb..b19d78c 100644 (file)
@@ -496,6 +496,16 @@ DOMNodeList::~DOMNodeList()
   ScriptInterpreter::forgetDOMObject(list.handle());
 }
 
+Value DOMNodeList::toPrimitive(ExecState *exec, Type /*preferred*/) const
+{
+  if (list.isNull())
+    return Null();
+
+  return String(toString(exec));
+}
+
+
+
 // We have to implement hasProperty since we don't use a hashtable for 'length' and 'item'
 // ## this breaks "for (..in..)" though.
 bool DOMNodeList::hasProperty(ExecState *exec, const Identifier &p) const
index 92fd594..d57f687 100644 (file)
@@ -84,6 +84,9 @@ namespace KJS {
     virtual bool toBoolean(ExecState *) const { return true; }
     static const ClassInfo info;
     DOM::NodeList nodeList() const { return list; }
+
+    virtual Value toPrimitive(ExecState *exec, Type preferred = UndefinedType) const;
+
   private:
     DOM::NodeList list;
   };