Title: [181984] trunk
Revision
181984
Author
[email protected]
Date
2015-03-25 16:37:04 -0700 (Wed, 25 Mar 2015)

Log Message

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:

Modified Paths

Added Paths

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;
 		};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to