Changeset 241903 in webkit


Ignore:
Timestamp:
Feb 21, 2019 2:34:17 PM (5 years ago)
Author:
achristensen@apple.com
Message:

API::HTTPCookieStore should expose setCookies()
https://bugs.webkit.org/show_bug.cgi?id=194861

Reviewed by Brent Fulgham.

Pass a Vector<Cookie> instead of just one cookie at a time.
This will add the ability to set multiple cookies without an IPC roundtrip per cookie.

  • NetworkProcess/Cookies/WebCookieManager.cpp:

(WebKit::WebCookieManager::setCookie):

  • NetworkProcess/Cookies/WebCookieManager.h:
  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::setCookies):
(API::HTTPCookieStore::setCookie): Deleted.

  • UIProcess/API/APIHTTPCookieStore.h:
  • UIProcess/API/Cocoa/WKHTTPCookieStore.mm:

(-[WKHTTPCookieStore setCookie:completionHandler:]):

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::setCookies):
(WebKit::WebCookieManagerProxy::setCookie): Deleted.

  • UIProcess/WebCookieManagerProxy.h:
Location:
trunk/Source/WebKit
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r241900 r241903  
     12019-02-21  Alex Christensen  <achristensen@webkit.org>
     2
     3        API::HTTPCookieStore should expose setCookies()
     4        https://bugs.webkit.org/show_bug.cgi?id=194861
     5
     6        Reviewed by Brent Fulgham.
     7
     8        Pass a Vector<Cookie> instead of just one cookie at a time.
     9        This will add the ability to set multiple cookies without an IPC roundtrip per cookie.
     10
     11        * NetworkProcess/Cookies/WebCookieManager.cpp:
     12        (WebKit::WebCookieManager::setCookie):
     13        * NetworkProcess/Cookies/WebCookieManager.h:
     14        * NetworkProcess/Cookies/WebCookieManager.messages.in:
     15        * UIProcess/API/APIHTTPCookieStore.cpp:
     16        (API::HTTPCookieStore::setCookies):
     17        (API::HTTPCookieStore::setCookie): Deleted.
     18        * UIProcess/API/APIHTTPCookieStore.h:
     19        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
     20        (-[WKHTTPCookieStore setCookie:completionHandler:]):
     21        * UIProcess/WebCookieManagerProxy.cpp:
     22        (WebKit::WebCookieManagerProxy::setCookies):
     23        (WebKit::WebCookieManagerProxy::setCookie): Deleted.
     24        * UIProcess/WebCookieManagerProxy.h:
     25
    1262019-02-21  Antoine Quint  <graouts@apple.com>
    227
  • trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp

    r241451 r241903  
    111111}
    112112
    113 void WebCookieManager::setCookie(PAL::SessionID sessionID, const Cookie& cookie, CallbackID callbackID)
     113void WebCookieManager::setCookie(PAL::SessionID sessionID, const Vector<Cookie>& cookies, CallbackID callbackID)
    114114{
    115     if (auto* storageSession = m_process.storageSession(sessionID))
    116         storageSession->setCookie(cookie);
     115    if (auto* storageSession = m_process.storageSession(sessionID)) {
     116        for (auto& cookie : cookies)
     117            storageSession->setCookie(cookie);
     118    }
    117119
    118120    m_process.send(Messages::WebCookieManagerProxy::DidSetCookies(callbackID), 0);
  • trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h

    r240858 r241903  
    7575    void deleteAllCookiesModifiedSince(PAL::SessionID, WallTime, CallbackID);
    7676
    77     void setCookie(PAL::SessionID, const WebCore::Cookie&, CallbackID);
     77    void setCookie(PAL::SessionID, const Vector<WebCore::Cookie>&, CallbackID);
    7878    void setCookies(PAL::SessionID, const Vector<WebCore::Cookie>&, const URL&, const URL& mainDocumentURL, CallbackID);
    7979    void getAllCookies(PAL::SessionID, CallbackID);
  • trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in

    r240858 r241903  
    2929    void DeleteAllCookies(PAL::SessionID sessionID)
    3030
    31     void SetCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie, WebKit::CallbackID callbackID)
     31    void SetCookie(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookie, WebKit::CallbackID callbackID)
    3232    void SetCookies(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookies, URL url, URL mainDocumentURL, WebKit::CallbackID callbackID)
    3333    void GetAllCookies(PAL::SessionID sessionID, WebKit::CallbackID callbackID)
  • trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp

    r241850 r241903  
    7575}
    7676
    77 void HTTPCookieStore::setCookie(const WebCore::Cookie& cookie, CompletionHandler<void()>&& completionHandler)
    78 {
    79     auto* pool = m_owningDataStore->processPoolForCookieStorageOperations();
    80     if (!pool) {
    81         // FIXME: pendingCookies used for defaultSession because session cookies cannot be propagated to Network Process with uiProcessCookieStorageIdentifier.
    82         if (m_owningDataStore->sessionID() == PAL::SessionID::defaultSessionID() && !cookie.session)
    83             setCookieInDefaultUIProcessCookieStore(cookie);
    84         else
    85             m_owningDataStore->addPendingCookie(cookie);
    86 
    87         callOnMainThread([completionHandler = WTFMove(completionHandler)] () mutable {
    88             completionHandler();
    89         });
     77void HTTPCookieStore::setCookies(const Vector<WebCore::Cookie>& cookies, CompletionHandler<void()>&& completionHandler)
     78{
     79    auto* pool = m_owningDataStore->processPoolForCookieStorageOperations();
     80    if (!pool) {
     81        for (auto& cookie : cookies) {
     82            // FIXME: pendingCookies used for defaultSession because session cookies cannot be propagated to Network Process with uiProcessCookieStorageIdentifier.
     83            if (m_owningDataStore->sessionID() == PAL::SessionID::defaultSessionID() && !cookie.session)
     84                setCookieInDefaultUIProcessCookieStore(cookie);
     85            else
     86                m_owningDataStore->addPendingCookie(cookie);
     87        }
     88
     89        callOnMainThread(WTFMove(completionHandler));
    9090        return;
    9191    }
    9292
    9393    auto* cookieManager = pool->supplement<WebKit::WebCookieManagerProxy>();
    94     cookieManager->setCookie(m_owningDataStore->sessionID(), cookie, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (CallbackBase::Error error) mutable {
     94    cookieManager->setCookies(m_owningDataStore->sessionID(), cookies, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (CallbackBase::Error error) mutable {
    9595        completionHandler();
    9696    });
  • trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h

    r241850 r241903  
    6060
    6161    void cookies(CompletionHandler<void(const Vector<WebCore::Cookie>&)>&&);
    62     void setCookie(const WebCore::Cookie&, CompletionHandler<void()>&&);
     62    void setCookies(const Vector<WebCore::Cookie>&, CompletionHandler<void()>&&);
    6363    void deleteCookie(const WebCore::Cookie&, CompletionHandler<void()>&&);
    6464
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm

    r241183 r241903  
    8888- (void)setCookie:(NSHTTPCookie *)cookie completionHandler:(void (^)(void))completionHandler
    8989{
    90     _cookieStore->setCookie(cookie, [handler = adoptNS([completionHandler copy])]() {
     90    _cookieStore->setCookies({ cookie }, [handler = adoptNS([completionHandler copy])]() {
    9191        auto rawHandler = (void (^)())handler.get();
    9292        if (rawHandler)
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp

    r240858 r241903  
    268268    // of the process we access them from, so just use the first process pool.
    269269    const auto& processPools = webkitWebsiteDataManagerGetProcessPools(manager->priv->dataManager);
    270     processPools[0]->supplement<WebCookieManagerProxy>()->setCookie(manager->priv->sessionID(), WebCore::Cookie(cookie), [task = WTFMove(task)](CallbackBase::Error error) {
     270    processPools[0]->supplement<WebCookieManagerProxy>()->setCookies(manager->priv->sessionID(), { WebCore::Cookie(cookie) }, [task = WTFMove(task)](CallbackBase::Error error) {
    271271        if (error != CallbackBase::Error::None) {
    272272            // This can only happen in cases where the web process is not available,
  • trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp

    r240785 r241903  
    143143}
    144144
    145 void WebCookieManagerProxy::setCookie(PAL::SessionID sessionID, const Cookie& cookie, Function<void (CallbackBase::Error)>&& callbackFunction)
    146 {
    147     auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken());
    148     processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetCookie(sessionID, cookie, callbackID));
     145void WebCookieManagerProxy::setCookies(PAL::SessionID sessionID, const Vector<Cookie>& cookies, Function<void(CallbackBase::Error)>&& callbackFunction)
     146{
     147    auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken());
     148    processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetCookie(sessionID, cookies, callbackID));
    149149}
    150150
  • trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h

    r240858 r241903  
    7272    void deleteAllCookiesModifiedSince(PAL::SessionID, WallTime, Function<void (CallbackBase::Error)>&&);
    7373
    74     void setCookie(PAL::SessionID, const WebCore::Cookie&, Function<void (CallbackBase::Error)>&&);
     74    void setCookies(PAL::SessionID, const Vector<WebCore::Cookie>&, Function<void(CallbackBase::Error)>&&);
    7575    void setCookies(PAL::SessionID, const Vector<WebCore::Cookie>&, const URL&, const URL& mainDocumentURL, Function<void(CallbackBase::Error)>&&);
    7676
Note: See TracChangeset for help on using the changeset viewer.