Changeset 215897 in webkit


Ignore:
Timestamp:
Apr 27, 2017 3:37:29 PM (7 years ago)
Author:
achristensen@apple.com
Message:

Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=171399

Reviewed by Brady Eidson.

Source/WebKit2:

This SPI isn't hooked up yet, but it has a test that will need to be updated once it works.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKDraggableElementInfo.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r215892 r215897  
     12017-04-27  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
     4        https://bugs.webkit.org/show_bug.cgi?id=171399
     5
     6        Reviewed by Brady Eidson.
     7
     8        This SPI isn't hooked up yet, but it has a test that will need to be updated once it works.
     9
     10        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     11        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
     12        (-[WKWebsiteDataStore _initWithConfiguration:]):
     13        * UIProcess/API/Cocoa/_WKDraggableElementInfo.h:
     14        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
     15        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
     16        (-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]):
     17        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]):
     18        * UIProcess/WebsiteData/WebsiteDataStore.h:
     19        (WebKit::WebsiteDataStore::resolvedCookieStorageDirectory):
     20
    1212017-04-27  Chris Dumez  <cdumez@apple.com>
    222
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r215653 r215897  
    247247
    248248- (WKNavigation *)_reloadWithoutContentBlockers WK_API_AVAILABLE(macosx(10.12), ios(10.0));
    249 - (WKNavigation *)_reloadExpiredOnly WK_API_AVAILABLE(macosx(10.13), ios(11.0));
     249- (WKNavigation *)_reloadExpiredOnly WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    250250
    251251- (void)_killWebContentProcessAndResetState;
     
    289289@property (nonatomic, readonly) BOOL _webProcessIsResponsive WK_API_AVAILABLE(macosx(10.12), ios(10.0));
    290290
    291 @property (nonatomic, setter=_setFullscreenDelegate:) id<_WKFullscreenDelegate> _fullscreenDelegate WK_API_AVAILABLE(macosx(10.13));
     291@property (nonatomic, setter=_setFullscreenDelegate:) id<_WKFullscreenDelegate> _fullscreenDelegate WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    292292@property (nonatomic, readonly) BOOL _isInFullscreen WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    293293
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm

    r215441 r215897  
    161161    if (configuration._indexedDBDatabaseDirectory)
    162162        config.indexedDBDatabaseDirectory = configuration._indexedDBDatabaseDirectory.path;
     163    if (configuration._cookieStorageDirectory)
     164        config.cookieStorageDirectory = configuration._cookieStorageDirectory.path;
    163165
    164166    API::Object::constructInWrapper<API::WebsiteDataStore>(self, config);
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKDraggableElementInfo.h

    r215573 r215897  
    3030NS_ASSUME_NONNULL_BEGIN
    3131
    32 WK_CLASS_AVAILABLE(macosx(10.13), ios(11.0))
     32WK_CLASS_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA))
    3333@interface _WKDraggableElementInfo : NSObject <NSCopying>
    3434
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h

    r213331 r215897  
    3232NS_ASSUME_NONNULL_BEGIN
    3333
    34 WK_CLASS_AVAILABLE(macosx(10.13), ios(11.0))
     34WK_CLASS_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA))
    3535@interface _WKWebsiteDataStoreConfiguration : NSObject
    3636
     
    3838@property (nonatomic, copy, setter=_setIndexedDBDatabaseDirectory:) NSURL *_indexedDBDatabaseDirectory;
    3939@property (nonatomic, copy, setter=_setWebSQLDatabaseDirectory:) NSURL *_webSQLDatabaseDirectory;
     40@property (nonatomic, copy, setter=_setCookieStorageDirectory:) NSURL *_cookieStorageDirectory WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    4041
    4142@end
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm

    r213331 r215897  
    4141    RetainPtr<NSURL> _indexedDBDatabaseDirectoryURL;
    4242    RetainPtr<NSURL> _webSQLDatabaseDirectoryURL;
     43    RetainPtr<NSURL> _cookieStorageDirectoryURL;
    4344}
    4445
     
    6970    _webSQLDatabaseDirectoryURL = adoptNS([url copy]);
    7071}
     72
     73-(NSURL *)_cookieStorageDirectory {
     74    return _cookieStorageDirectoryURL.get();
     75}
     76
     77-(void)_setCookieStorageDirectory:(NSURL *)url {
     78    checkURLArgument(url);
     79    _cookieStorageDirectoryURL = adoptNS([url copy]);
     80}
     81
    7182@end
    7283
  • trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h

    r215741 r215897  
    7070        String resourceLoadStatisticsDirectory;
    7171        String javaScriptConfigurationDirectory;
     72        String cookieStorageDirectory;
    7273    };
    7374    static Ref<WebsiteDataStore> createNonPersistent();
     
    101102    const String& resolvedDatabaseDirectory() const { return m_resolvedConfiguration.webSQLDatabaseDirectory; }
    102103    const String& resolvedJavaScriptConfigurationDirectory() const { return m_resolvedConfiguration.javaScriptConfigurationDirectory; }
     104    const String& resolvedCookieStorageDirectory() const { return m_resolvedConfiguration.cookieStorageDirectory; }
    103105
    104106    StorageManager* storageManager() { return m_storageManager.get(); }
  • trunk/Tools/ChangeLog

    r215888 r215897  
     12017-04-27  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
     4        https://bugs.webkit.org/show_bug.cgi?id=171399
     5
     6        Reviewed by Brady Eidson.
     7
     8        * TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.html:
     9        * TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
     10        (TEST):
     11
    1122017-04-27  Ryan Haddad  <ryanhaddad@apple.com>
    213
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.html

    r213241 r215897  
    11<script>
    22
    3 // This test opens an IndexedDB, a WebSQL db, and makes a localStorage write.
     3// This test opens an IndexedDB, a WebSQL db, and a cookie storage, and makes a localStorage write.
    44
    55function log(msg)
     
    2424}
    2525
     26document.cookie = "testkey=value; expires=Mon, 01 Jan 2035 00:00:00 GMT";
     27log('cookie written');
     28
    2629try {
    2730openDatabase('WebsiteDataStoreCustomPathsSQL', '1.0', 'Test DB', 524288, function() {
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm

    r213331 r215897  
    7878    NSURL *idbPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/IndexedDB/" stringByExpandingTildeInPath]];
    7979    NSURL *localStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/LocalStorage/" stringByExpandingTildeInPath]];
     80    NSURL *cookieStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/CookieStorage/" stringByExpandingTildeInPath]];
    8081
    8182    [[NSFileManager defaultManager] removeItemAtURL:sqlPath error:nil];
    8283    [[NSFileManager defaultManager] removeItemAtURL:idbPath error:nil];
    8384    [[NSFileManager defaultManager] removeItemAtURL:localStoragePath error:nil];
     85    [[NSFileManager defaultManager] removeItemAtURL:cookieStoragePath error:nil];
    8486
    8587    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:sqlPath.path]);
     88    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:idbPath.path]);
    8689    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:localStoragePath.path]);
    87     EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:idbPath.path]);
     90    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:cookieStoragePath.path]);
    8891
    8992    _WKWebsiteDataStoreConfiguration *websiteDataStoreConfiguration = [[_WKWebsiteDataStoreConfiguration alloc] init];
     
    9194    websiteDataStoreConfiguration._indexedDBDatabaseDirectory = idbPath;
    9295    websiteDataStoreConfiguration._webStorageDirectory = localStoragePath;
     96    websiteDataStoreConfiguration._cookieStorageDirectory = cookieStoragePath;
    9397
    9498    configuration.get().websiteDataStore = [[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration];
     
    100104    [webView loadRequest:request];
    101105
    102     // We expect 3 messages, 1 each for WebSQL, IndexedDB, and localStorage.
    103     getNextMessage();
    104     getNextMessage();
    105     getNextMessage();
     106    // We expect 4 messages, 1 each for WebSQL, IndexedDB, cookies, and localStorage.
     107    EXPECT_STREQ([getNextMessage().body UTF8String], "localstorage written");
     108    EXPECT_STREQ([getNextMessage().body UTF8String], "cookie written");
     109    EXPECT_STREQ([getNextMessage().body UTF8String], "Exception: QuotaExceededError (DOM Exception 22): The quota has been exceeded.");
     110    EXPECT_STREQ([getNextMessage().body UTF8String], "Success opening indexed database");
    106111
    107112    EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:sqlPath.path]);
    108113    EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:localStoragePath.path]);
    109 
     114   
     115    // FIXME: Once this API works this should be true, and there should be a file that contains the bytes "testkey=value"
     116    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:cookieStoragePath.path]);
     117   
    110118    // FIXME: <rdar://problem/30785618> - We don't yet support IDB database processes at custom paths per WebsiteDataStore
    111119    // EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:idbPath]);
Note: See TracChangeset for help on using the changeset viewer.