Diff
Modified: trunk/Source/WebKit2/ChangeLog (165659 => 165660)
--- trunk/Source/WebKit2/ChangeLog 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/ChangeLog 2014-03-14 23:39:25 UTC (rev 165660)
@@ -1,3 +1,24 @@
+2014-03-14 Anders Carlsson <ander...@apple.com>
+
+ Begin work on the bundle parameter API
+ https://bugs.webkit.org/show_bug.cgi?id=130267
+
+ Reviewed by Dan Bernstein.
+
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _objectForBundleParameter:]):
+ (-[WKProcessPool _setObject:forBundleParameter:]):
+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+ * UIProcess/WebContext.h:
+ (WebKit::WebContext::bundleParameters):
+ * UIProcess/mac/WebContextMac.mm:
+ (WebKit::WebContext::ensureBundleParameters):
+ (WebKit::WebContext::platformInitializeWebProcess):
+
2014-03-14 Alexey Proskuryakov <a...@apple.com>
[Mac] Sync extended attribute related rules with AppSandbox profile
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (165659 => 165660)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2014-03-14 23:39:25 UTC (rev 165660)
@@ -26,6 +26,7 @@
#include "config.h"
#include "WebProcessCreationParameters.h"
+#include "APIData.h"
#include "ArgumentCoders.h"
namespace WebKit {
@@ -110,6 +111,9 @@
encoder << shouldForceScreenFontSubstitution;
encoder << shouldEnableKerningAndLigaturesByDefault;
encoder << shouldEnableJIT;
+ encoder << !!bundleParameterData;
+ if (bundleParameterData)
+ encoder << bundleParameterData->dataReference();
#endif
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
@@ -235,6 +239,18 @@
return false;
if (!decoder.decode(parameters.shouldEnableJIT))
return false;
+
+ bool hasBundleParameterData;
+ if (!decoder.decode(hasBundleParameterData))
+ return false;
+
+ if (hasBundleParameterData) {
+ IPC::DataReference dataReference;
+ if (!decoder.decode(dataReference))
+ return false;
+
+ parameters.bundleParameterData = API::Data::create(dataReference.data(), dataReference.size());
+ }
#endif
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (165659 => 165660)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2014-03-14 23:39:25 UTC (rev 165660)
@@ -36,12 +36,17 @@
#if PLATFORM(COCOA)
#include "MachPort.h"
+
#endif
#if USE(SOUP)
#include "HTTPCookieAcceptPolicy.h"
#endif
+namespace API {
+class Data;
+}
+
namespace IPC {
class ArgumentDecoder;
class ArgumentEncoder;
@@ -132,6 +137,9 @@
bool shouldForceScreenFontSubstitution;
bool shouldEnableKerningAndLigaturesByDefault;
bool shouldEnableJIT;
+
+ RefPtr<API::Data> bundleParameterData;
+
#endif // PLATFORM(COCOA)
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm (165659 => 165660)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-03-14 23:39:25 UTC (rev 165660)
@@ -142,6 +142,16 @@
_context->supplement<WebKit::WebCookieManagerProxy>()->setHTTPCookieAcceptPolicy(toHTTPCookieAcceptPolicy(policy));
}
+- (id)_objectForBundleParameter:(NSString *)parameter
+{
+ return [_context->bundleParameters() objectForKey:parameter];
+}
+
+- (void)_setObject:(id <NSCopying, NSSecureCoding>)object forBundleParameter:(NSString *)parameter
+{
+ [_context->ensureBundleParameters() setObject:adoptNS([(NSObject *)object copy]).get() forKey:parameter];
+}
+
@end
#endif // WK_API_ENABLED
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (165659 => 165660)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2014-03-14 23:39:25 UTC (rev 165660)
@@ -32,6 +32,9 @@
- (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host;
- (void)_setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)policy;
+- (id)_objectForBundleParameter:(NSString *)parameter;
+- (void)_setObject:(id <NSCopying, NSSecureCoding>)object forBundleParameter:(NSString *)parameter;
+
@end
#endif
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (165659 => 165660)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2014-03-14 23:39:25 UTC (rev 165660)
@@ -62,6 +62,7 @@
#endif
#if PLATFORM(COCOA)
+OBJC_CLASS NSMutableDictionary;
OBJC_CLASS NSObject;
OBJC_CLASS NSString;
#endif
@@ -332,6 +333,9 @@
#if PLATFORM(COCOA)
void updateProcessSuppressionState() const;
+
+ NSMutableDictionary *ensureBundleParameters();
+ NSMutableDictionary *bundleParameters() { return m_bundleParameters.get(); }
#endif
void setMemoryCacheDisabled(bool);
@@ -528,6 +532,10 @@
#endif
bool m_memoryCacheDisabled;
+
+#if PLATFORM(COCOA)
+ RetainPtr<NSMutableDictionary> m_bundleParameters;
+#endif
};
template<typename T>
Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm (165659 => 165660)
--- trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm 2014-03-14 23:31:10 UTC (rev 165659)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm 2014-03-14 23:39:25 UTC (rev 165660)
@@ -49,7 +49,6 @@
#import "NetworkProcessProxy.h"
#endif
-
#if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
#if __has_include(<CFNetwork/CFURLProtocolPriv.h>)
@@ -61,6 +60,12 @@
#endif
+#if __MAC_OS_X_VERSION_MIN_REQUIRED == 1080
+@interface NSKeyedArchiver (WKDetails)
+- (void)setRequiresSecureCoding:(BOOL)b;
+@end
+#endif
+
using namespace WebCore;
NSString *WebDatabaseDirectoryDefaultsKey = @"WebDatabaseDirectory";
@@ -115,6 +120,14 @@
#endif
}
+NSMutableDictionary *WebContext::ensureBundleParameters()
+{
+ if (!m_bundleParameters)
+ m_bundleParameters = adoptNS([[NSMutableDictionary alloc] init]);
+
+ return m_bundleParameters.get();
+}
+
void WebContext::platformInitialize()
{
registerUserDefaultsIfNeeded();
@@ -182,6 +195,24 @@
#if ENABLE(NETWORK_PROCESS)
}
#endif
+
+ if (m_bundleParameters) {
+ auto data = "" alloc] init]);
+ auto keyedArchiver = adoptNS([[NSKeyedArchiver alloc] init]);
+
+ [keyedArchiver setRequiresSecureCoding:YES];
+
+ @try {
+ [keyedArchiver encodeObject:m_bundleParameters.get() forKey:@"parameters"];
+ [keyedArchiver finishEncoding];
+ } @catch (NSException *exception) {
+ LOG_ERROR("Failed to encode bundle parameters: %@", exception);
+ }
+
+ parameters.bundleParameterData = API::Data::createWithoutCopying((const unsigned char*)[data bytes], [data length], [] (unsigned char*, const void* data) {
+ [(NSData *)data release];
+ }, data.leakRef());
+ }
}
#if ENABLE(NETWORK_PROCESS)