Diff
Modified: trunk/Source/WebKit2/ChangeLog (86966 => 86967)
--- trunk/Source/WebKit2/ChangeLog 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/ChangeLog 2011-05-20 18:18:37 UTC (rev 86967)
@@ -1,3 +1,25 @@
+2011-05-20 Sam Weinig <[email protected]>
+
+ Reviewed by Anders Carlsson.
+
+ WebKit2: Media files cannot be saved in the Application Cache due to a sandbox violation
+ https://bugs.webkit.org/show_bug.cgi?id=61199
+
+ Instead of using a sandbox extension to give permission to the application cache directory,
+ initialize the sandbox with access to it like we do for other databases.
+
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::encode):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::ensureWebProcess):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::initializeWebProcess):
+ * WebProcess/com.apple.WebProcess.sb:
+ * WebProcess/mac/WebProcessMac.mm:
+ (WebKit::initializeSandbox):
+
2011-05-20 Jer Noble <[email protected]>
Reviewed by Maciej Stachowiak.
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (86966 => 86967)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp 2011-05-20 18:18:37 UTC (rev 86967)
@@ -51,7 +51,6 @@
encoder->encode(injectedBundlePath);
encoder->encode(injectedBundlePathExtensionHandle);
encoder->encode(applicationCacheDirectory);
- encoder->encode(applicationCacheDirectoryExtensionHandle);
encoder->encode(databaseDirectory);
encoder->encode(localStorageDirectory);
encoder->encode(urlSchemesRegistererdAsEmptyDocument);
@@ -99,8 +98,6 @@
return false;
if (!decoder->decode(parameters.applicationCacheDirectory))
return false;
- if (!decoder->decode(parameters.applicationCacheDirectoryExtensionHandle))
- return false;
if (!decoder->decode(parameters.databaseDirectory))
return false;
if (!decoder->decode(parameters.localStorageDirectory))
Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (86966 => 86967)
--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h 2011-05-20 18:18:37 UTC (rev 86967)
@@ -53,9 +53,7 @@
String injectedBundlePath;
SandboxExtension::Handle injectedBundlePathExtensionHandle;
- String applicationCacheDirectory;
- SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
-
+ String applicationCacheDirectory;
String databaseDirectory;
String localStorageDirectory;
Vector<String> urlSchemesRegistererdAsEmptyDocument;
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (86966 => 86967)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2011-05-20 18:18:37 UTC (rev 86967)
@@ -221,13 +221,8 @@
WebProcessCreationParameters parameters;
- parameters.applicationCacheDirectory = applicationCacheDirectory();
- if (!parameters.applicationCacheDirectory.isEmpty())
- SandboxExtension::createHandle(parameters.applicationCacheDirectory, SandboxExtension::ReadWrite, parameters.applicationCacheDirectoryExtensionHandle);
-
if (!injectedBundlePath().isEmpty()) {
parameters.injectedBundlePath = injectedBundlePath();
-
SandboxExtension::createHandle(parameters.injectedBundlePath, SandboxExtension::ReadOnly, parameters.injectedBundlePathExtensionHandle);
}
@@ -240,7 +235,7 @@
#if PLATFORM(MAC)
parameters.presenterApplicationPid = getpid();
#endif
-
+
copyToVector(m_schemesToRegisterAsEmptyDocument, parameters.urlSchemesRegistererdAsEmptyDocument);
copyToVector(m_schemesToRegisterAsSecure, parameters.urlSchemesRegisteredAsSecure);
copyToVector(m_schemesToSetDomainRelaxationForbiddenFor, parameters.urlSchemesForWhichDomainRelaxationIsForbidden);
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (86966 => 86967)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2011-05-20 18:18:37 UTC (rev 86967)
@@ -194,12 +194,8 @@
#endif
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
- if (!parameters.applicationCacheDirectory.isEmpty()) {
- m_applicationCachePathExtension = SandboxExtension::create(parameters.applicationCacheDirectoryExtensionHandle);
- m_applicationCachePathExtension->consume();
-
+ if (!parameters.applicationCacheDirectory.isEmpty())
cacheStorage().setCacheDirectory(parameters.applicationCacheDirectory);
- }
#endif
setShouldTrackVisitedLinks(parameters.shouldTrackVisitedLinks);
Modified: trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb (86966 => 86967)
--- trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb 2011-05-20 18:18:37 UTC (rev 86967)
@@ -105,14 +105,18 @@
(if (positive? (string-length (param "DARWIN_USER_TEMP_DIR")))
(allow file* (subpath (param "DARWIN_USER_TEMP_DIR"))))
-;; Database dir
+;; Database directory.
(if (positive? (string-length (param "WEBKIT_DATABASE_DIR")))
(allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
-;; LocalStorage dir
+;; LocalStorage directory.
(if (positive? (string-length (param "WEBKIT_LOCALSTORAGE_DIR")))
(allow file* (subpath (param "WEBKIT_LOCALSTORAGE_DIR"))))
+;; ApplicationCache directory.
+(if (positive? (string-length (param "WEBKIT_APPLICATION_CACHE_DIR")))
+ (allow file* (subpath (param "WEBKIT_APPLICATION_CACHE_DIR"))))
+
;; The NSURLCache directory.
(if (positive? (string-length (param "NSURL_CACHE_DIR")))
(allow file* (subpath (param "NSURL_CACHE_DIR"))))
Modified: trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm (86966 => 86967)
--- trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm 2011-05-20 17:45:18 UTC (rev 86966)
+++ trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm 2011-05-20 18:18:37 UTC (rev 86967)
@@ -187,6 +187,7 @@
appendReadwriteSandboxDirectory(sandboxParameters, "HOME_DIR", NSHomeDirectory());
appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_DATABASE_DIR", parameters.databaseDirectory);
appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_LOCALSTORAGE_DIR", parameters.localStorageDirectory);
+ appendReadwriteSandboxDirectory(sandboxParameters, "WEBKIT_APPLICATION_CACHE_DIR", parameters.applicationCacheDirectory);
appendReadwriteSandboxDirectory(sandboxParameters, "NSURL_CACHE_DIR", parameters.nsURLCachePath);
sandboxParameters.append(static_cast<const char*>(0));