Diff
Modified: trunk/Source/WebKit2/ChangeLog (171355 => 171356)
--- trunk/Source/WebKit2/ChangeLog 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/ChangeLog 2014-07-22 19:58:25 UTC (rev 171356)
@@ -1,3 +1,29 @@
+2014-07-22 Oliver Hunt <oli...@apple.com>
+
+ Provide networking process with access to its HSTS db
+ https://bugs.webkit.org/show_bug.cgi?id=135121
+ <rdar://17654369>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add an extension parameter to pass the hsts database file.
+ This requires us to create the Caches/com.apple.WebKit.Networking
+ directory in the UI process, as the network sandbox
+ does not allow it to create the containing directory.
+
+ * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+ (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+ * Shared/Network/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * Shared/Network/NetworkProcessCreationParameters.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::ensureNetworkProcess):
+ (WebKit::WebContext::networkingHSTSDatabasePath):
+ * UIProcess/WebContext.h:
+ * UIProcess/mac/WebContextMac.mm:
+ (WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath):
+
2014-07-22 Benjamin Poulain <bpoul...@apple.com>
[iOS][WK2] UI helpers that zoom on an element ignore the viewport's allowsUserScaling
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm (171355 => 171356)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm 2014-07-22 19:58:25 UTC (rev 171356)
@@ -61,6 +61,9 @@
void NetworkProcess::platformInitializeNetworkProcessCocoa(const NetworkProcessCreationParameters& parameters)
{
SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle);
+#if PLATFORM(IOS)
+ SandboxExtension::consumePermanently(parameters.hstsDatabasePathExtensionHandle);
+#endif
m_diskCacheDirectory = parameters.diskCacheDirectory;
if (!m_diskCacheDirectory.isNull()) {
Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (171355 => 171356)
--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2014-07-22 19:58:25 UTC (rev 171356)
@@ -44,6 +44,10 @@
encoder << diskCacheDirectoryExtensionHandle;
encoder << cookieStorageDirectory;
encoder << cookieStorageDirectoryExtensionHandle;
+#if PLATFORM(IOS)
+ encoder << hstsDatabasePath;
+ encoder << hstsDatabasePathExtensionHandle;
+#endif
encoder << shouldUseTestingNetworkSession;
#if ENABLE(CUSTOM_PROTOCOLS)
encoder << urlSchemesRegisteredForCustomProtocols;
@@ -79,6 +83,12 @@
return false;
if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle))
return false;
+#if PLATFORM(IOS)
+ if (!decoder.decode(result.hstsDatabasePath))
+ return false;
+ if (!decoder.decode(result.hstsDatabasePathExtensionHandle))
+ return false;
+#endif
if (!decoder.decode(result.shouldUseTestingNetworkSession))
return false;
#if ENABLE(CUSTOM_PROTOCOLS)
Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (171355 => 171356)
--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2014-07-22 19:58:25 UTC (rev 171356)
@@ -59,6 +59,11 @@
String cookieStorageDirectory;
SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
+#if PLATFORM(IOS)
+ // FIXME: Remove this once <rdar://problem/17726660> is fixed.
+ String hstsDatabasePath;
+ SandboxExtension::Handle hstsDatabasePathExtensionHandle;
+#endif
bool shouldUseTestingNetworkSession;
#if ENABLE(CUSTOM_PROTOCOLS)
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (171355 => 171356)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-07-22 19:58:25 UTC (rev 171356)
@@ -420,6 +420,12 @@
if (!parameters.cookieStorageDirectory.isEmpty())
SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
+#if PLATFORM(IOS)
+ parameters.hstsDatabasePath = networkingHSTSDatabasePath();
+ if (!parameters.hstsDatabasePath.isEmpty())
+ SandboxExtension::createHandle(parameters.hstsDatabasePath, SandboxExtension::ReadWrite, parameters.hstsDatabasePathExtensionHandle);
+#endif
+
parameters.shouldUseTestingNetworkSession = m_shouldUseTestingNetworkSession;
// Add any platform specific parameters
@@ -1208,6 +1214,11 @@
return platformDefaultOpenGLCacheDirectory();
}
+String WebContext::networkingHSTSDatabasePath() const
+{
+ return platformDefaultNetworkingHSTSDatabasePath();
+}
+
String WebContext::mediaCacheDirectory() const
{
if (!m_overrideMediaCacheDirectory.isEmpty())
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (171355 => 171356)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2014-07-22 19:58:25 UTC (rev 171356)
@@ -427,6 +427,9 @@
String openGLCacheDirectory() const;
String platformDefaultOpenGLCacheDirectory() const;
+ String networkingHSTSDatabasePath() const;
+ String platformDefaultNetworkingHSTSDatabasePath() const;
+
String mediaCacheDirectory() const;
String platformMediaCacheDirectory() const;
Modified: trunk/Source/WebKit2/UIProcess/efl/WebContextEfl.cpp (171355 => 171356)
--- trunk/Source/WebKit2/UIProcess/efl/WebContextEfl.cpp 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/UIProcess/efl/WebContextEfl.cpp 2014-07-22 19:58:25 UTC (rev 171356)
@@ -138,7 +138,7 @@
return String();
}
-String WebContext::platformMediaCacheDirectory() const
+String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
{
notImplemented();
return String();
Modified: trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp (171355 => 171356)
--- trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp 2014-07-22 19:58:25 UTC (rev 171356)
@@ -160,6 +160,12 @@
return String();
}
+String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
+{
+ notImplemented();
+ return String();
+}
+
void WebContext::setIgnoreTLSErrors(bool ignoreTLSErrors)
{
m_ignoreTLSErrors = ignoreTLSErrors;
Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm (171355 => 171356)
--- trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm 2014-07-22 19:48:24 UTC (rev 171355)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm 2014-07-22 19:58:25 UTC (rev 171356)
@@ -299,6 +299,30 @@
#endif
}
+String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
+{
+#if PLATFORM(IOS)
+ String path = pathForProcessContainer();
+ if (path.isEmpty())
+ path = NSHomeDirectory();
+
+ path = path + "/Library/Caches/com.apple.WebKit.Networking/";
+ path = stringByResolvingSymlinksInPath(path);
+
+ NSError *error = nil;
+ NSString* nsPath = path;
+ if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) {
+ NSLog(@"could not create \"%@\", error %@", nsPath, error);
+ return String();
+ }
+
+ return path + "HSTS.plist";
+#else
+ notImplemented();
+ return [@"" stringByStandardizingPath];
+#endif
+}
+
String WebContext::platformMediaCacheDirectory() const
{
#if PLATFORM(IOS)