Changeset 219052 in webkit


Ignore:
Timestamp:
Jul 1, 2017 2:37:54 PM (7 years ago)
Author:
beidson@apple.com
Message:

When setting a custom cookie storage location on a WKWebsiteDataStore, cookies aren't actually removed.
<rdar://problem/32410662> and https://bugs.webkit.org/show_bug.cgi?id=174035

Reviewed by Alex Christensen.

Source/WebKit2:

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _terminateNetworkProcess]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess): Take an optional WebsiteDataStore. If one is passed in,

send it to either the existing or new network process.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters): Resolve paths first.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r219051 r219052  
     12017-07-01  Brady Eidson  <beidson@apple.com>
     2
     3        When setting a custom cookie storage location on a WKWebsiteDataStore, cookies aren't actually removed.
     4        <rdar://problem/32410662> and https://bugs.webkit.org/show_bug.cgi?id=174035
     5
     6        Reviewed by Alex Christensen.
     7
     8        * UIProcess/API/Cocoa/WKProcessPool.mm:
     9        (-[WKProcessPool _terminateNetworkProcess]):
     10        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
     11       
     12        * UIProcess/WebProcessPool.cpp:
     13        (WebKit::WebProcessPool::ensureNetworkProcess): Take an optional WebsiteDataStore. If one is passed in,
     14          send it to either the existing or new network process.
     15        * UIProcess/WebProcessPool.h:
     16       
     17        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     18        (WebKit::WebsiteDataStore::parameters): Resolve paths first.
     19
     20        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     21        (WebKit::WebsiteDataStore::fetchDataAndApply):
     22        (WebKit::WebsiteDataStore::removeData):
     23
    1242017-07-01  Ryosuke Niwa  <rniwa@webkit.org>
    225
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm

    r218760 r219052  
    390390}
    391391
     392- (void)_terminateNetworkProcess
     393{
     394    _processPool->terminateNetworkProcess();
     395}
     396
    392397- (void)_syncNetworkProcessCookies
    393398{
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h

    r218760 r219052  
    7474// Test only. Should be called only while no web content processes are running.
    7575- (void)_terminateDatabaseProcess;
     76- (void)_terminateNetworkProcess;
    7677
    7778// Test only.
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r218499 r219052  
    416416}
    417417
    418 NetworkProcessProxy& WebProcessPool::ensureNetworkProcess()
    419 {
    420     if (m_networkProcess)
     418NetworkProcessProxy& WebProcessPool::ensureNetworkProcess(WebsiteDataStore* withWebsiteDataStore)
     419{
     420    if (m_networkProcess) {
     421        if (withWebsiteDataStore)
     422            m_networkProcess->send(Messages::NetworkProcess::AddWebsiteDataStore(withWebsiteDataStore->parameters()), 0);
    421423        return *m_networkProcess;
     424    }
    422425
    423426    m_networkProcess = NetworkProcessProxy::create(*this);
     
    481484            process->reinstateNetworkProcessAssertionState(*m_networkProcess);
    482485    }
     486
     487    if (withWebsiteDataStore)
     488        m_networkProcess->send(Messages::NetworkProcess::AddWebsiteDataStore(withWebsiteDataStore->parameters()), 0);
    483489
    484490    return *m_networkProcess;
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r218499 r219052  
    314314
    315315    // Network Process Management
    316     NetworkProcessProxy& ensureNetworkProcess();
     316    NetworkProcessProxy& ensureNetworkProcess(WebsiteDataStore* withWebsiteDataStore = nullptr);
    317317    NetworkProcessProxy* networkProcess() { return m_networkProcess.get(); }
    318318    void networkProcessCrashed(NetworkProcessProxy*);
  • trunk/Source/WebKit2/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm

    r216977 r219052  
    5252WebsiteDataStoreParameters WebsiteDataStore::parameters()
    5353{
     54    resolveDirectoriesIfNecessary();
     55
    5456    WebsiteDataStoreParameters parameters;
    55 
    5657    parameters.sessionID = m_sessionID;
    5758
  • trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r219025 r219052  
    329329
    330330            case ProcessAccessType::Launch:
    331                 processPool->ensureNetworkProcess();
     331                processPool->ensureNetworkProcess(this);
    332332                break;
    333333
     
    648648
    649649            case ProcessAccessType::Launch:
    650                 processPool->ensureNetworkProcess();
     650                processPool->ensureNetworkProcess(this);
    651651                break;
    652652
     
    897897
    898898            case ProcessAccessType::Launch:
    899                 processPool->ensureNetworkProcess();
     899                processPool->ensureNetworkProcess(this);
    900900                break;
    901901
  • trunk/Tools/ChangeLog

    r219050 r219052  
     12017-07-01  Brady Eidson  <beidson@apple.com>
     2
     3        When setting a custom cookie storage location on a WKWebsiteDataStore, cookies aren't actually removed.
     4        <rdar://problem/32410662> and https://bugs.webkit.org/show_bug.cgi?id=174035
     5
     6        Reviewed by Alex Christensen.
     7
     8        * TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
     9
    1102017-07-01  Dan Bernstein  <mitz@apple.com>
    211
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm

    r216711 r219052  
    171171
    172172    EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:fileIDBPath.get().path]);
     173
     174    // Now, with brand new WKWebsiteDataStores pointing at the same custom cookie storage location,
     175    // in newly fired up NetworkProcesses, verify that the fetch and delete APIs work as expected.
     176
     177    [processPool _terminateNetworkProcess];
     178    auto newCustomDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]);
     179
     180    [newCustomDataStore fetchDataRecordsOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil] completionHandler:^(NSArray<WKWebsiteDataRecord *> * records) {
     181        EXPECT_GT([records count], (unsigned long)0);
     182        receivedScriptMessage = true;
     183    }];
     184
     185    receivedScriptMessage = false;
     186    TestWebKitAPI::Util::run(&receivedScriptMessage);
     187
     188    [processPool _terminateNetworkProcess];
     189    newCustomDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]);
     190
     191    [newCustomDataStore removeDataOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil] modifiedSince:[NSDate distantPast] completionHandler:^ {
     192        receivedScriptMessage = true;
     193    }];
     194
     195    receivedScriptMessage = false;
     196    TestWebKitAPI::Util::run(&receivedScriptMessage);
     197
     198    // This time, reuse the same network process but still do a new websitedatastore, to make sure even an existing network process
     199    // gets the new datastore.
     200    newCustomDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]);
     201
     202    [newCustomDataStore fetchDataRecordsOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil] completionHandler:^(NSArray<WKWebsiteDataRecord *> * records) {
     203        EXPECT_EQ([records count], (unsigned long)0);
     204        receivedScriptMessage = true;
     205    }];
     206
     207    receivedScriptMessage = false;
     208    TestWebKitAPI::Util::run(&receivedScriptMessage);
    173209}
    174210
Note: See TracChangeset for help on using the changeset viewer.