Title: [170970] trunk/Source/WebKit2
Revision
170970
Author
[email protected]
Date
2014-07-10 11:33:39 -0700 (Thu, 10 Jul 2014)

Log Message

Pass sandbox extension for GL cache over to webprocess
https://bugs.webkit.org/show_bug.cgi?id=134806

Reviewed by Anders Carlsson.

Add additional WebProcess parameters to pass an extension
that allows access to the opengl cache directory in the
host application's container.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcess):
(WebKit::WebContext::openGLCacheDirectory):
* UIProcess/WebContext.h:
* UIProcess/mac/WebContextMac.mm:
(WebKit::WebContext::platformDefaultOpenGLCacheDirectory):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (170969 => 170970)


--- trunk/Source/WebKit2/ChangeLog	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/ChangeLog	2014-07-10 18:33:39 UTC (rev 170970)
@@ -1,3 +1,27 @@
+2014-07-10  Oliver Hunt  <[email protected]>
+
+        Pass sandbox extension for GL cache over to webprocess
+        https://bugs.webkit.org/show_bug.cgi?id=134806
+
+        Reviewed by Anders Carlsson.
+
+        Add additional WebProcess parameters to pass an extension
+        that allows access to the opengl cache directory in the
+        host application's container.
+
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::createNewWebProcess):
+        (WebKit::WebContext::openGLCacheDirectory):
+        * UIProcess/WebContext.h:
+        * UIProcess/mac/WebContextMac.mm:
+        (WebKit::WebContext::platformDefaultOpenGLCacheDirectory):
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::platformInitializeWebProcess):
+
 2014-07-10  Dan Bernstein  <[email protected]>
 
         iOS build fix.

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (170969 => 170970)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2014-07-10 18:33:39 UTC (rev 170970)
@@ -67,6 +67,8 @@
     encoder << diskCacheDirectoryExtensionHandle;
     encoder << cookieStorageDirectory;
     encoder << cookieStorageDirectoryExtensionHandle;
+    encoder << openGLCacheDirectory;
+    encoder << openGLCacheDirectoryExtensionHandle;
     encoder << shouldUseTestingNetworkSession;
     encoder << urlSchemesRegistererdAsEmptyDocument;
     encoder << urlSchemesRegisteredAsSecure;
@@ -160,6 +162,10 @@
         return false;
     if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle))
         return false;
+    if (!decoder.decode(parameters.openGLCacheDirectory))
+        return false;
+    if (!decoder.decode(parameters.openGLCacheDirectoryExtensionHandle))
+        return false;
     if (!decoder.decode(parameters.shouldUseTestingNetworkSession))
         return false;
     if (!decoder.decode(parameters.urlSchemesRegistererdAsEmptyDocument))

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (170969 => 170970)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2014-07-10 18:33:39 UTC (rev 170970)
@@ -72,6 +72,8 @@
     SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
     String cookieStorageDirectory;
     SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
+    String openGLCacheDirectory;
+    SandboxExtension::Handle openGLCacheDirectoryExtensionHandle;
 
     bool shouldUseTestingNetworkSession;
 

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (170969 => 170970)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2014-07-10 18:33:39 UTC (rev 170970)
@@ -590,6 +590,10 @@
     if (!parameters.cookieStorageDirectory.isEmpty())
         SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
 
+    parameters.openGLCacheDirectory = openGLCacheDirectory();
+    if (!parameters.openGLCacheDirectory.isEmpty())
+        SandboxExtension::createHandleForReadWriteDirectory(parameters.openGLCacheDirectory, parameters.openGLCacheDirectoryExtensionHandle);
+
     parameters.shouldUseTestingNetworkSession = m_shouldUseTestingNetworkSession;
 
     parameters.cacheModel = m_cacheModel;
@@ -1175,6 +1179,14 @@
     return platformDefaultCookieStorageDirectory();
 }
 
+String WebContext::openGLCacheDirectory() const
+{
+    if (!m_overrideOpenGLCacheDirectory.isEmpty())
+        return m_overrideOpenGLCacheDirectory;
+
+    return platformDefaultOpenGLCacheDirectory();
+}
+
 void WebContext::useTestingNetworkSession()
 {
     ASSERT(m_processes.isEmpty());

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (170969 => 170970)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2014-07-10 18:33:39 UTC (rev 170970)
@@ -423,6 +423,9 @@
     String cookieStorageDirectory() const;
     String platformDefaultCookieStorageDirectory() const;
 
+    String openGLCacheDirectory() const;
+    String platformDefaultOpenGLCacheDirectory() const;
+
 #if PLATFORM(COCOA)
     void registerNotificationObservers();
     void unregisterNotificationObservers();
@@ -518,6 +521,7 @@
     String m_overrideIconDatabasePath;
     String m_overrideDiskCacheDirectory;
     String m_overrideCookieStorageDirectory;
+    String m_overrideOpenGLCacheDirectory;
 
     String m_webSQLDatabaseDirectory;
     String m_indexedDBDatabaseDirectory;

Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm (170969 => 170970)


--- trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm	2014-07-10 18:33:39 UTC (rev 170970)
@@ -283,6 +283,21 @@
 #endif
 }
 
+String WebContext::platformDefaultOpenGLCacheDirectory() const
+{
+#if PLATFORM(IOS)
+    String path = pathForProcessContainer();
+    if (path.isEmpty())
+        path = NSHomeDirectory();
+
+    path = path + "/Library/Caches/com.apple.WebKit.WebContent/com.apple.opengl/";
+    return stringByResolvingSymlinksInPath(path);
+#else
+    notImplemented();
+    return [@"" stringByStandardizingPath];
+#endif
+}
+
 String WebContext::platformDefaultWebSQLDatabaseDirectory()
 {
     NSString *databasesDirectory = [[NSUserDefaults standardUserDefaults] objectForKey:WebDatabaseDirectoryDefaultsKey];

Modified: trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm (170969 => 170970)


--- trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm	2014-07-10 18:24:23 UTC (rev 170969)
+++ trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm	2014-07-10 18:33:39 UTC (rev 170970)
@@ -168,6 +168,7 @@
     SandboxExtension::consumePermanently(parameters.applicationCacheDirectoryExtensionHandle);
     SandboxExtension::consumePermanently(parameters.diskCacheDirectoryExtensionHandle);
     SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle);
+    SandboxExtension::consumePermanently(parameters.openGLCacheDirectoryExtensionHandle);
 #endif
 
     // When the network process is enabled, each web process wants a stand-alone
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to