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