2010-01-14 Kent Hansen <kent.hansen@nokia.com>
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Jan 2010 20:13:28 +0000 (20:13 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Jan 2010 20:13:28 +0000 (20:13 +0000)
        Reviewed by Darin Adler.

        Infinite recursion in RuntimeObjectImp::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=33371

        Test that Object.keys works on a plugin object.

        * plugins/netscape-enumerate.html:
2010-01-14  Kent Hansen  <kent.hansen@nokia.com>

        Reviewed by Darin Adler.

        Infinite recursion in RuntimeObjectImp::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=33371

        RuntimeObjectImp should not reimplement getPropertyNames();
        move the implementation to getOwnPropertyNames().

        * bridge/runtime_object.cpp:
        (JSC::RuntimeObjectImp::getOwnPropertyNames):
        * bridge/runtime_object.h:

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

LayoutTests/ChangeLog
LayoutTests/plugins/netscape-enumerate.html
WebCore/ChangeLog
WebCore/bridge/runtime_object.cpp
WebCore/bridge/runtime_object.h

index 752367a..cea89cc 100644 (file)
@@ -1,3 +1,14 @@
+2010-01-14  Kent Hansen  <kent.hansen@nokia.com>
+
+        Reviewed by Darin Adler.
+
+        Infinite recursion in RuntimeObjectImp::getOwnPropertyNames()
+        https://bugs.webkit.org/show_bug.cgi?id=33371
+
+        Test that Object.keys works on a plugin object.
+
+        * plugins/netscape-enumerate.html:
+
 2010-01-14  Adam Roben  <aroben@apple.com>
 
         Add new tests from r53277 to the Qt Skipped list
index 8d3a019..ae55bcf 100644 (file)
@@ -29,6 +29,13 @@ function runTest()
         return;
     }
 
+    // Now try enumerating a plugin object's properties using Object.keys
+    var keys = Object.keys(plugin.testObject);
+    if (keys.toString() != 'foo,bar') {
+        result.innerHTML = 'FAILURE: Plugin object properties returned by Object.keys were ' + keys.toString();
+        return;
+    }
+
     result.innerHTML = 'SUCCESS';
 }
 </script>
index c8580e0..82c009c 100644 (file)
@@ -1,3 +1,17 @@
+2010-01-14  Kent Hansen  <kent.hansen@nokia.com>
+
+        Reviewed by Darin Adler.
+
+        Infinite recursion in RuntimeObjectImp::getOwnPropertyNames()
+        https://bugs.webkit.org/show_bug.cgi?id=33371
+
+        RuntimeObjectImp should not reimplement getPropertyNames();
+        move the implementation to getOwnPropertyNames().
+
+        * bridge/runtime_object.cpp:
+        (JSC::RuntimeObjectImp::getOwnPropertyNames):
+        * bridge/runtime_object.h:
+
 2010-01-14  Kwang Yul Seo  <skyul@company100.net>
 
         Reviewed by Alexey Proskuryakov.
index 9fc9f0c..26b85f9 100644 (file)
@@ -302,7 +302,7 @@ ConstructType RuntimeObjectImp::getConstructData(ConstructData& constructData)
     return ConstructTypeHost;
 }
 
-void RuntimeObjectImp::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode)
+void RuntimeObjectImp::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode)
 {
     if (!m_instance) {
         throwInvalidAccessError(exec);
@@ -316,11 +316,6 @@ void RuntimeObjectImp::getPropertyNames(ExecState* exec, PropertyNameArray& prop
     instance->end();
 }
 
-void RuntimeObjectImp::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)
-{
-    getOwnPropertyNames(exec, propertyNames, mode);
-}
-
 JSObject* RuntimeObjectImp::throwInvalidAccessError(ExecState* exec)
 {
     return throwError(exec, ReferenceError, "Trying to access object from destroyed plug-in.");
index 87c47bf..0284e66 100644 (file)
@@ -44,7 +44,6 @@ public:
     virtual CallType getCallData(CallData&);
     virtual ConstructType getConstructData(ConstructData&);
 
-    virtual void getPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
     virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
 
     void invalidate();