Changeset 180892 in webkit


Ignore:
Timestamp:
Mar 2, 2015 12:45:18 PM (9 years ago)
Author:
andersca@apple.com
Message:

WebsiteDataStore should handle deleting cookies
https://bugs.webkit.org/show_bug.cgi?id=142185

Reviewed by Beth Dakin.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
When asked to delete cookies, do so.

  • NetworkProcess/NetworkProcess.h:

Update the deleteWebsiteDataForOrigins signature.

  • NetworkProcess/NetworkProcess.messages.in:

Add cookieHostNames to DeleteWebsiteDataForOrigins.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):

  • UIProcess/Network/NetworkProcessProxy.h:

Update to take a vector of cookie host names.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeData):
Figure out if we need to ask the network process to delete data.

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r180889 r180892  
     12015-03-02  Anders Carlsson  <andersca@apple.com>
     2
     3        WebsiteDataStore should handle deleting cookies
     4        https://bugs.webkit.org/show_bug.cgi?id=142185
     5
     6        Reviewed by Beth Dakin.
     7
     8        * NetworkProcess/NetworkProcess.cpp:
     9        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
     10        When asked to delete cookies, do so.
     11
     12        * NetworkProcess/NetworkProcess.h:
     13        Update the deleteWebsiteDataForOrigins signature.
     14
     15        * NetworkProcess/NetworkProcess.messages.in:
     16        Add cookieHostNames to DeleteWebsiteDataForOrigins.
     17
     18        * UIProcess/Network/NetworkProcessProxy.cpp:
     19        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
     20        * UIProcess/Network/NetworkProcessProxy.h:
     21        Update to take a vector of cookie host names.
     22
     23        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     24        (WebKit::WebsiteDataStore::removeData):
     25        Figure out if we need to ask the network process to delete data.
     26
    1272015-03-02  Anders Carlsson  <andersca@apple.com>
    228
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp

    r180889 r180892  
    345345}
    346346
    347 void NetworkProcess::deleteWebsiteDataForOrigins(SessionID sessionID, uint64_t websiteDataTypes, const Vector<SecurityOriginData>& origins, uint64_t callbackID)
    348 {
    349     // FIXME: Actually delete something.
     347void NetworkProcess::deleteWebsiteDataForOrigins(SessionID sessionID, uint64_t websiteDataTypes, const Vector<SecurityOriginData>& origins, const Vector<String>& cookieHostNames, uint64_t callbackID)
     348{
     349    if (websiteDataTypes & WebsiteDataTypeCookies) {
     350        if (auto* networkStorageSession = SessionTracker::session(sessionID)) {
     351            for (const auto& cookieHostName : cookieHostNames)
     352                deleteCookiesForHostname(*networkStorageSession, cookieHostName);
     353        }
     354    }
    350355
    351356    auto completionHandler = [this, callbackID] {
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h

    r180773 r180892  
    124124    void fetchWebsiteData(WebCore::SessionID, uint64_t websiteDataTypes, uint64_t callbackID);
    125125    void deleteWebsiteData(WebCore::SessionID, uint64_t websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID);
    126     void deleteWebsiteDataForOrigins(WebCore::SessionID, uint64_t websiteDataTypes, const Vector<SecurityOriginData>& origins, uint64_t callbackID);
     126    void deleteWebsiteDataForOrigins(WebCore::SessionID, uint64_t websiteDataTypes, const Vector<SecurityOriginData>& origins, const Vector<String>& cookieHostNames, uint64_t callbackID);
    127127
    128128    // FIXME: This should take a session ID so we can identify which disk cache to delete.
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in

    r180773 r180892  
    4040    FetchWebsiteData(WebCore::SessionID sessionID, uint64_t websiteDataTypes, uint64_t callbackID)
    4141    DeleteWebsiteData(WebCore::SessionID sessionID, uint64_t websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
    42     DeleteWebsiteDataForOrigins(WebCore::SessionID sessionID, uint64_t websiteDataTypes, Vector<WebKit::SecurityOriginData> origins, uint64_t callbackID)
     42    DeleteWebsiteDataForOrigins(WebCore::SessionID sessionID, uint64_t websiteDataTypes, Vector<WebKit::SecurityOriginData> origins, Vector<String> cookieHostNames, uint64_t callbackID)
    4343
    4444    DownloadRequest(uint64_t downloadID, WebCore::ResourceRequest request)
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp

    r180773 r180892  
    133133}
    134134
    135 void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, WebsiteDataTypes dataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()> completionHandler)
     135void NetworkProcessProxy::deleteWebsiteDataForOrigins(SessionID sessionID, WebsiteDataTypes dataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, const Vector<String>& cookieHostNames, std::function<void ()> completionHandler)
    136136{
    137137    ASSERT(canSendMessage());
     
    144144        originData.append(SecurityOriginData::fromSecurityOrigin(*origin));
    145145
    146     send(Messages::WebProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, callbackID), 0);
     146    send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, originData, cookieHostNames, callbackID), 0);
    147147}
    148148
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h

    r180773 r180892  
    6666    void fetchWebsiteData(WebCore::SessionID, WebsiteDataTypes, std::function<void (WebsiteData)> completionHandler);
    6767    void deleteWebsiteData(WebCore::SessionID, WebsiteDataTypes, std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler);
    68     void deleteWebsiteDataForOrigins(WebCore::SessionID, WebsiteDataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, std::function<void ()> completionHandler);
     68    void deleteWebsiteDataForOrigins(WebCore::SessionID, WebsiteDataTypes, const Vector<RefPtr<WebCore::SecurityOrigin>>& origins, const Vector<String>& cookieHostNames, std::function<void ()> completionHandler);
    6969
    7070#if PLATFORM(COCOA)
  • trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r180889 r180892  
    441441    RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTF::move(completionHandler)));
    442442
     443    auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, isNonPersistent());
     444    if (networkProcessAccessType != ProcessAccessType::None) {
     445        HashSet<WebProcessPool*> processPools;
     446        for (auto& process : processes())
     447            processPools.add(&process->processPool());
     448
     449        for (auto& processPool : processPools) {
     450            switch (networkProcessAccessType) {
     451            case ProcessAccessType::OnlyIfLaunched:
     452                if (!processPool->networkProcess())
     453                    continue;
     454                break;
     455
     456            case ProcessAccessType::Launch:
     457                processPool->ensureNetworkProcess();
     458                break;
     459
     460            case ProcessAccessType::None:
     461                ASSERT_NOT_REACHED();
     462            }
     463
     464            Vector<String> cookieHostNames;
     465            for (const auto& dataRecord : dataRecords) {
     466                for (auto& hostName : dataRecord.cookieHostNames)
     467                    cookieHostNames.append(hostName);
     468            }
     469
     470            callbackAggregator->addPendingCallback();
     471            processPool->networkProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, cookieHostNames, [callbackAggregator] {
     472                callbackAggregator->removePendingCallback();
     473            });
     474        }
     475    }
     476
    443477    auto webProcessAccessType = computeWebProcessAccessTypeForDataRemoval(dataTypes, isNonPersistent());
    444478    if (webProcessAccessType != ProcessAccessType::None) {
Note: See TracChangeset for help on using the changeset viewer.