Title: [159133] trunk/Source/WebKit2
Revision
159133
Author
[email protected]
Date
2013-11-12 12:16:45 -0800 (Tue, 12 Nov 2013)

Log Message

Stop using WKArrayCreate internally
https://bugs.webkit.org/show_bug.cgi?id=124217

Reviewed by Andreas Kling.

* UIProcess/API/mac/WKBrowsingContextGroup.mm:
(createWKArray):
(-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]):
(-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageCopyContextMenuItems):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (159132 => 159133)


--- trunk/Source/WebKit2/ChangeLog	2013-11-12 20:05:22 UTC (rev 159132)
+++ trunk/Source/WebKit2/ChangeLog	2013-11-12 20:16:45 UTC (rev 159133)
@@ -1,3 +1,17 @@
+2013-11-12  Anders Carlsson  <[email protected]>
+
+        Stop using WKArrayCreate internally
+        https://bugs.webkit.org/show_bug.cgi?id=124217
+
+        Reviewed by Andreas Kling.
+
+        * UIProcess/API/mac/WKBrowsingContextGroup.mm:
+        (createWKArray):
+        (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]):
+        (-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]):
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+        (WKBundlePageCopyContextMenuItems):
+
 2013-11-12  Csaba Osztrogonác  <[email protected]>
 
         URTBF after r159129, use create() instead of adopt() everywhere.

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm (159132 => 159133)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm	2013-11-12 20:05:22 UTC (rev 159132)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm	2013-11-12 20:16:45 UTC (rev 159133)
@@ -27,15 +27,20 @@
 #import "WKBrowsingContextGroup.h"
 #import "WKBrowsingContextGroupPrivate.h"
 
+#import "ImmutableArray.h"
 #import "WKArray.h"
 #import "WKPageGroup.h"
 #import "WKPreferences.h"
 #import "WKRetainPtr.h"
+#import "WKSharedAPICast.h"
 #import "WKStringCF.h"
 #import "WKURL.h"
 #import "WKURLCF.h"
+#import "WebString.h"
 #import <wtf/Vector.h>
 
+using namespace WebKit;
+
 @interface WKBrowsingContextGroupData : NSObject {
 @public
     WKRetainPtr<WKPageGroupRef> _pageGroupRef;
@@ -101,22 +106,22 @@
     WKPreferencesSetPluginsEnabled(WKPageGroupGetPreferences(self._pageGroupRef), allowsPlugIns);
 }
 
-static WKArrayRef createWKArray(NSArray *array)
+static WKRetainPtr<WKArrayRef> createWKArray(NSArray *array)
 {
     NSUInteger count = [array count];
-    if (count == 0)
-        return WKArrayRef();
 
-    Vector<WKTypeRef> stringVector;
-    stringVector.reserveInitialCapacity(count);
-    for (NSUInteger i = 0; i < count; ++i) {
-        id entry = [array objectAtIndex:i];
+    if (!count)
+        return nullptr;
+
+    Vector<RefPtr<APIObject>> strings;
+    strings.reserveInitialCapacity(count);
+
+    for (id entry in array) {
         if ([entry isKindOfClass:[NSString class]])
-            stringVector.uncheckedAppend(WKStringCreateWithCFString((CFStringRef)entry));
-            
+            strings.uncheckedAppend(adoptRef(toImpl(WKStringCreateWithCFString((CFStringRef)entry))));
     }
 
-    return WKArrayCreateAdoptingValues(stringVector.data(), stringVector.size());
+    return toAPI(ImmutableArray::create(std::move(strings)).leakRef());
 }
 
 -(void)addUserStyleSheet:(NSString *)source baseURL:(NSURL *)baseURL whitelistedURLPatterns:(NSArray *)whitelist blacklistedURLPatterns:(NSArray *)blacklist mainFrameOnly:(BOOL)mainFrameOnly
@@ -126,8 +131,8 @@
 
     WKRetainPtr<WKStringRef> wkSource = adoptWK(WKStringCreateWithCFString((CFStringRef)source));
     WKRetainPtr<WKURLRef> wkBaseURL = adoptWK(WKURLCreateWithCFURL((CFURLRef)baseURL));
-    WKRetainPtr<WKArrayRef> wkWhitelist = adoptWK(createWKArray(whitelist));
-    WKRetainPtr<WKArrayRef> wkBlacklist = adoptWK(createWKArray(blacklist));
+    auto wkWhitelist = createWKArray(whitelist);
+    auto wkBlacklist = createWKArray(blacklist);
     WKUserContentInjectedFrames injectedFrames = mainFrameOnly ? kWKInjectInTopFrameOnly : kWKInjectInAllFrames;
 
     WKPageGroupAddUserStyleSheet(self._pageGroupRef, wkSource.get(), wkBaseURL.get(), wkWhitelist.get(), wkBlacklist.get(), injectedFrames);
@@ -145,8 +150,8 @@
 
     WKRetainPtr<WKStringRef> wkSource = adoptWK(WKStringCreateWithCFString((CFStringRef)source));
     WKRetainPtr<WKURLRef> wkBaseURL = adoptWK(WKURLCreateWithCFURL((CFURLRef)baseURL));
-    WKRetainPtr<WKArrayRef> wkWhitelist = adoptWK(createWKArray(whitelist));
-    WKRetainPtr<WKArrayRef> wkBlacklist = adoptWK(createWKArray(blacklist));
+    auto wkWhitelist = createWKArray(whitelist);
+    auto wkBlacklist = createWKArray(blacklist);
     WKUserContentInjectedFrames injectedFrames = mainFrameOnly ? kWKInjectInTopFrameOnly : kWKInjectInAllFrames;
 
     WKPageGroupAddUserScript(self._pageGroupRef, wkSource.get(), wkBaseURL.get(), wkWhitelist.get(), wkBlacklist.get(), injectedFrames, injectionTime);

Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp (159132 => 159133)


--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp	2013-11-12 20:05:22 UTC (rev 159132)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp	2013-11-12 20:16:45 UTC (rev 159133)
@@ -169,16 +169,18 @@
 {
 #if ENABLE(CONTEXT_MENUS)
     WebContextMenu* contextMenu = toImpl(pageRef)->contextMenu();
-    const Vector<WebContextMenuItemData>& items = contextMenu->items();
-    size_t arrayLength = items.size();
 
-    auto wkItems = std::make_unique<WKTypeRef[]>(arrayLength);
-    for (size_t i = 0; i < arrayLength; ++i)
-        wkItems[i] = toAPI(WebContextMenuItem::create(items[i]).leakRef());
+    auto items = contextMenu->items();
 
-    return WKArrayCreate(wkItems.get(), arrayLength);
+    Vector<RefPtr<APIObject>> menuItems;
+    menuItems.reserveInitialCapacity(items.size());
+
+    for (const auto& item : items)
+        menuItems.uncheckedAppend(WebContextMenuItem::create(item));
+
+    return toAPI(ImmutableArray::create(std::move(menuItems)).leakRef());
 #else
-    return 0;
+    return nullptr;
 #endif
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to