Diff
Modified: trunk/Source/WebKit2/ChangeLog (181983 => 181984)
--- trunk/Source/WebKit2/ChangeLog 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Source/WebKit2/ChangeLog 2015-03-25 23:37:04 UTC (rev 181984)
@@ -1,3 +1,22 @@
+2015-03-25 Anders Carlsson <[email protected]>
+
+ Add network and application cache directories to WebsiteDataStore
+ https://bugs.webkit.org/show_bug.cgi?id=143063
+
+ Reviewed by Sam Weinig.
+
+ Create a WebKit directory under ~/Library/Caches/<Bundle ID> for non-sandboxed applications,
+ and ~/Library/Caches for sandboxed applications. Create NetworkCache and OfflineWebApplicationCache
+ subdirectories. These directories will be used with the modern WebKit API.
+
+ * UIProcess/API/APIWebsiteDataStore.h:
+ * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
+ (API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
+ (API::WebsiteDataStore::defaultDataStoreConfiguration):
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::WebsiteDataStore):
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+
2015-03-25 Sam Weinig <[email protected]>
Address additional review feedback from https://bugs.webkit.org/show_bug.cgi?id=143059.
Modified: trunk/Source/WebKit2/UIProcess/API/APIWebsiteDataStore.h (181983 => 181984)
--- trunk/Source/WebKit2/UIProcess/API/APIWebsiteDataStore.h 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Source/WebKit2/UIProcess/API/APIWebsiteDataStore.h 2015-03-25 23:37:04 UTC (rev 181984)
@@ -44,6 +44,7 @@
WebKit::WebsiteDataStore& websiteDataStore() { return *m_websiteDataStore; }
+ static String cacheDirectoryFileSystemRepresentation(const String& directoryName);
static String websiteDataDirectoryFileSystemRepresentation(const String& directoryName);
private:
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm (181983 => 181984)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm 2015-03-25 23:37:04 UTC (rev 181984)
@@ -30,6 +30,33 @@
namespace API {
+String WebsiteDataStore::cacheDirectoryFileSystemRepresentation(const String& directoryName)
+{
+ static dispatch_once_t onceToken;
+ static NSURL *cacheURL;
+
+ dispatch_once(&onceToken, ^{
+ NSURL *url = "" defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nullptr create:NO error:nullptr];
+ if (!url)
+ RELEASE_ASSERT_NOT_REACHED();
+
+ if (!WebKit::processHasContainer()) {
+ NSString *bundleIdentifier = [NSBundle mainBundle].bundleIdentifier;
+ if (!bundleIdentifier)
+ bundleIdentifier = [NSProcessInfo processInfo].processName;
+ url = "" URLByAppendingPathComponent:bundleIdentifier isDirectory:YES];
+ }
+
+ cacheURL = [[url URLByAppendingPathComponent:@"WebKit" isDirectory:YES] retain];
+ });
+
+ NSURL *url = "" URLByAppendingPathComponent:directoryName isDirectory:YES];
+ if (![[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:nullptr])
+ LOG_ERROR("Failed to create directory %@", url);
+
+ return url.absoluteURL.path.fileSystemRepresentation;
+}
+
String WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation(const String& directoryName)
{
static dispatch_once_t onceToken;
@@ -61,11 +88,13 @@
WebKit::WebsiteDataStore::Configuration WebsiteDataStore::defaultDataStoreConfiguration()
{
- // FIXME: Fill everything in.
WebKit::WebsiteDataStore::Configuration configuration;
+ configuration.networkCacheDirectory = cacheDirectoryFileSystemRepresentation("NetworkCache");
+ configuration.applicationCacheDirectory = cacheDirectoryFileSystemRepresentation("OfflineWebApplicationCache");
+
+ configuration.webSQLDatabaseDirectory = websiteDataDirectoryFileSystemRepresentation("WebSQL");
configuration.localStorageDirectory = websiteDataDirectoryFileSystemRepresentation("LocalStorage");
- configuration.webSQLDatabaseDirectory = websiteDataDirectoryFileSystemRepresentation("WebSQL");
return configuration;
}
Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (181983 => 181984)
--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp 2015-03-25 23:37:04 UTC (rev 181984)
@@ -64,6 +64,8 @@
WebsiteDataStore::WebsiteDataStore(Configuration configuration)
: m_identifier(generateIdentifier())
, m_sessionID(WebCore::SessionID::defaultSessionID())
+ , m_networkCacheDirectory(WTF::move(configuration.networkCacheDirectory))
+ , m_applicationCacheDirectory(WTF::move(configuration.applicationCacheDirectory))
, m_webSQLDatabaseDirectory(WTF::move(configuration.webSQLDatabaseDirectory))
, m_storageManager(StorageManager::create(WTF::move(configuration.localStorageDirectory)))
, m_queue(WorkQueue::create("com.apple.WebKit.WebsiteDataStore"))
Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h (181983 => 181984)
--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h 2015-03-25 23:37:04 UTC (rev 181984)
@@ -45,6 +45,9 @@
class WebsiteDataStore : public RefCounted<WebsiteDataStore>, public WebProcessLifetimeObserver {
public:
struct Configuration {
+ String networkCacheDirectory;
+ String applicationCacheDirectory;
+
String webSQLDatabaseDirectory;
String localStorageDirectory;
};
@@ -83,6 +86,9 @@
const uint64_t m_identifier;
const WebCore::SessionID m_sessionID;
+ const String m_networkCacheDirectory;
+ const String m_applicationCacheDirectory;
+
const String m_webSQLDatabaseDirectory;
const RefPtr<StorageManager> m_storageManager;
Added: trunk/Tools/MiniBrowser/MiniBrowser.entitlements (0 => 181984)
--- trunk/Tools/MiniBrowser/MiniBrowser.entitlements (rev 0)
+++ trunk/Tools/MiniBrowser/MiniBrowser.entitlements 2015-03-25 23:37:04 UTC (rev 181984)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.app-sandbox</key>
+ <true/>
+ <key>com.apple.security.network.client</key>
+ <true/>
+</dict>
+</plist>
Modified: trunk/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj (181983 => 181984)
--- trunk/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj 2015-03-25 23:33:53 UTC (rev 181983)
+++ trunk/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj 2015-03-25 23:37:04 UTC (rev 181984)
@@ -54,6 +54,7 @@
0FE643A2161FAC660059E3FF /* WK1BrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WK1BrowserWindowController.h; path = mac/WK1BrowserWindowController.h; sourceTree = "<group>"; };
0FE643A3161FAC660059E3FF /* WK1BrowserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WK1BrowserWindowController.m; path = mac/WK1BrowserWindowController.m; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+ 1AFF1A6C1AC35D45007AB10C /* MiniBrowser.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = MiniBrowser.entitlements; sourceTree = "<group>"; };
1AFFEF751860EE6700DA465E /* MiniBrowser.wkbundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MiniBrowser.wkbundle; sourceTree = BUILT_PRODUCTS_DIR; };
1AFFEF761860EE6800DA465E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
1AFFEF781860EE6800DA465E /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
@@ -108,6 +109,7 @@
080E96DDFE201D6D7F000001 /* MiniBrowser */ = {
isa = PBXGroup;
children = (
+ 1AFF1A6C1AC35D45007AB10C /* MiniBrowser.entitlements */,
256AC3D80F4B6AC300CF3369 /* AppDelegate.h */,
256AC3D90F4B6AC300CF3369 /* AppDelegate.m */,
0FE6439F161FA8940059E3FF /* BrowserWindowController.h */,
@@ -257,6 +259,15 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0600;
+ TargetAttributes = {
+ 8D1107260486CEB800E47090 = {
+ SystemCapabilities = {
+ com.apple.Sandbox = {
+ enabled = 1;
+ };
+ };
+ };
+ };
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MiniBrowser" */;
compatibilityVersion = "Xcode 3.2";
@@ -354,6 +365,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */;
buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = MiniBrowser.entitlements;
+ CODE_SIGN_IDENTITY = "";
};
name = Debug;
};
@@ -361,6 +374,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */;
buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = MiniBrowser.entitlements;
+ CODE_SIGN_IDENTITY = "";
};
name = Release;
};