[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 12:20:07 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 479107548348e7c0d1d85262d410b000f8e0adb7
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Aug 19 15:47:52 2010 +0000

    Add ability to get all the keys from a WKDictionaryRef
    https://bugs.webkit.org/show_bug.cgi?id=44221
    
    Reviewed by Adam Roben.
    
    * Shared/ImmutableDictionary.cpp:
    (WebKit::ImmutableDictionary::keys):
    * Shared/ImmutableDictionary.h:
    Add keys function.
    
    * UIProcess/API/C/WKDictionary.cpp:
    (WKDictionaryCopyKeys):
    * UIProcess/API/C/WKDictionary.h:
    Wrap keys function.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65675 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 8488080..5e0bd93 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,22 @@
 2010-08-18  Sam Weinig  <sam at webkit.org>
 
+        Reviewed by Adam Roben.
+
+        Add ability to get all the keys from a WKDictionaryRef
+        https://bugs.webkit.org/show_bug.cgi?id=44221
+
+        * Shared/ImmutableDictionary.cpp:
+        (WebKit::ImmutableDictionary::keys):
+        * Shared/ImmutableDictionary.h:
+        Add keys function.
+
+        * UIProcess/API/C/WKDictionary.cpp:
+        (WKDictionaryCopyKeys):
+        * UIProcess/API/C/WKDictionary.h:
+        Wrap keys function.
+
+2010-08-18  Sam Weinig  <sam at webkit.org>
+
         Reviewed by Jon Honeycutt.
 
         Add ability to set custom userAgent for WebKit2
diff --git a/WebKit2/Shared/ImmutableDictionary.cpp b/WebKit2/Shared/ImmutableDictionary.cpp
index 4a8adf2..facc4ad 100644
--- a/WebKit2/Shared/ImmutableDictionary.cpp
+++ b/WebKit2/Shared/ImmutableDictionary.cpp
@@ -25,6 +25,9 @@
 
 #include "ImmutableDictionary.h"
 
+#include "ImmutableArray.h"
+#include "WebString.h"
+
 namespace WebKit {
 
 ImmutableDictionary::ImmutableDictionary()
@@ -40,4 +43,20 @@ ImmutableDictionary::~ImmutableDictionary()
 {
 }
 
+PassRefPtr<ImmutableArray> ImmutableDictionary::keys() const
+{
+    if (m_map.isEmpty())
+        return ImmutableArray::create();
+
+    size_t size = m_map.size();
+    APIObject** array = new APIObject*[size];
+
+    MapType::const_iterator::Keys it = m_map.begin().keys();
+    MapType::const_iterator::Keys end = m_map.end().keys();
+    for (unsigned i = 0; it != end; ++it, ++i)
+        array[i] = WebString::create(*it).releaseRef();
+
+    return ImmutableArray::adopt(array, size);
+}
+
 } // namespace WebKit
diff --git a/WebKit2/Shared/ImmutableDictionary.h b/WebKit2/Shared/ImmutableDictionary.h
index 4aabf25..e5e7dc7 100644
--- a/WebKit2/Shared/ImmutableDictionary.h
+++ b/WebKit2/Shared/ImmutableDictionary.h
@@ -34,6 +34,8 @@
 
 namespace WebKit {
 
+class ImmutableArray;
+
 // ImmutableDictionary - An immutable dictionary type suitable for vending to an API.
 
 class ImmutableDictionary : public APIObject {
@@ -70,6 +72,8 @@ public:
         return m_map.get(key).get();
     }
 
+    PassRefPtr<ImmutableArray> keys() const;
+
     size_t size() { return m_map.size(); }
 
 private:
diff --git a/WebKit2/UIProcess/API/C/WKDictionary.cpp b/WebKit2/UIProcess/API/C/WKDictionary.cpp
index 5093175..31859bb 100644
--- a/WebKit2/UIProcess/API/C/WKDictionary.cpp
+++ b/WebKit2/UIProcess/API/C/WKDictionary.cpp
@@ -25,6 +25,7 @@
 
 #include "WKDictionary.h"
 
+#include "ImmutableArray.h"
 #include "ImmutableDictionary.h"
 #include "WKAPICast.h"
 
@@ -45,6 +46,12 @@ size_t WKDictionaryGetSize(WKDictionaryRef dictionaryRef)
     return toWK(dictionaryRef)->size();
 }
 
+WKArrayRef WKDictionaryCopyKeys(WKDictionaryRef dictionaryRef)
+{
+    RefPtr<ImmutableArray> keys = toWK(dictionaryRef)->keys();
+    return toRef(keys.release().releaseRef());
+}
+
 WKDictionaryRef WKDictionaryRetain(WKDictionaryRef dictionaryRef)
 {
     toWK(dictionaryRef)->ref();
diff --git a/WebKit2/UIProcess/API/C/WKDictionary.h b/WebKit2/UIProcess/API/C/WKDictionary.h
index 30f91d8..5449062 100644
--- a/WebKit2/UIProcess/API/C/WKDictionary.h
+++ b/WebKit2/UIProcess/API/C/WKDictionary.h
@@ -39,6 +39,8 @@ WK_EXPORT WKTypeID WKDictionaryGetTypeID();
 WK_EXPORT WKTypeRef WKDictionaryGetItemForKey(WKDictionaryRef dictionary, WKStringRef key);
 WK_EXPORT size_t WKDictionaryGetSize(WKDictionaryRef dictionary);
 
+WK_EXPORT WKArrayRef WKDictionaryCopyKeys(WKDictionaryRef dictionary);
+
 WK_EXPORT WKDictionaryRef WKDictionaryRetain(WKDictionaryRef dictionary);
 WK_EXPORT void WKDictionaryRelease(WKDictionaryRef dictionary);
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list