Title: [165660] trunk/Source/WebKit2
Revision
165660
Author
ander...@apple.com
Date
2014-03-14 16:39:25 -0700 (Fri, 14 Mar 2014)

Log Message

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):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to