From 302e302d179b251d99a09580b97a65495f4d4ba6 Mon Sep 17 00:00:00 2001 From: "sihui_liu@apple.com" Date: Thu, 2 Aug 2018 22:20:55 +0000 Subject: [PATCH] httpCookieStore.getAllCookies() does not always call completion block https://bugs.webkit.org/show_bug.cgi?id=188242 Reviewed by Chris Dumez. Take background assertion for network process to keep it alive during cookieStore API calls. * UIProcess/GenericCallback.h: * UIProcess/WebCookieManagerProxy.cpp: (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): (WebKit::WebCookieManagerProxy::deleteCookie): (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince): (WebKit::WebCookieManagerProxy::setCookie): (WebKit::WebCookieManagerProxy::setCookies): (WebKit::WebCookieManagerProxy::getAllCookies): (WebKit::WebCookieManagerProxy::getCookies): (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy): (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234518 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebKit/ChangeLog | 21 ++++++++++++++ Source/WebKit/UIProcess/GenericCallback.h | 8 ------ Source/WebKit/UIProcess/WebCookieManagerProxy.cpp | 34 +++++++++++------------ 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog index 28ba4dc..e157581 100644 --- a/Source/WebKit/ChangeLog +++ b/Source/WebKit/ChangeLog @@ -1,5 +1,26 @@ 2018-08-02 Sihui Liu + httpCookieStore.getAllCookies() does not always call completion block + https://bugs.webkit.org/show_bug.cgi?id=188242 + + Reviewed by Chris Dumez. + + Take background assertion for network process to keep it alive during cookieStore API calls. + + * UIProcess/GenericCallback.h: + * UIProcess/WebCookieManagerProxy.cpp: + (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): + (WebKit::WebCookieManagerProxy::deleteCookie): + (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince): + (WebKit::WebCookieManagerProxy::setCookie): + (WebKit::WebCookieManagerProxy::setCookies): + (WebKit::WebCookieManagerProxy::getAllCookies): + (WebKit::WebCookieManagerProxy::getCookies): + (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy): + (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): + +2018-08-02 Sihui Liu + [Cocoa] setCookie API fails to set session cookies for defaultDataStore if processPool created but not used https://bugs.webkit.org/show_bug.cgi?id=188209 diff --git a/Source/WebKit/UIProcess/GenericCallback.h b/Source/WebKit/UIProcess/GenericCallback.h index f90533e..ef5f8de 100644 --- a/Source/WebKit/UIProcess/GenericCallback.h +++ b/Source/WebKit/UIProcess/GenericCallback.h @@ -195,14 +195,6 @@ public: return put(WTFMove(callback)); } - // FIXME: WebCookieManagerProxy should pass in BackgroundActivityToken - template - CallbackID put(Function&& function) - { - auto callback = GenericCallbackType::type::create(WTFMove(function)); - return put(WTFMove(callback)); - } - template RefPtr take(CallbackID callbackID) { diff --git a/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp b/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp index c94efd8..06ff06e 100644 --- a/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp +++ b/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp @@ -109,8 +109,8 @@ void WebCookieManagerProxy::derefWebContextSupplement() void WebCookieManagerProxy::getHostnamesWithCookies(PAL::SessionID sessionID, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetHostnamesWithCookies(sessionID, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetHostnamesWithCookies(sessionID, callbackID)); } void WebCookieManagerProxy::didGetHostnamesWithCookies(const Vector& hostnames, WebKit::CallbackID callbackID) @@ -136,38 +136,38 @@ void WebCookieManagerProxy::deleteAllCookies(PAL::SessionID sessionID) void WebCookieManagerProxy::deleteCookie(PAL::SessionID sessionID, const Cookie& cookie, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteCookie(sessionID, cookie, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::DeleteCookie(sessionID, cookie, callbackID)); } void WebCookieManagerProxy::deleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteAllCookiesModifiedSince(sessionID, time, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::DeleteAllCookiesModifiedSince(sessionID, time, callbackID)); } void WebCookieManagerProxy::setCookie(PAL::SessionID sessionID, const Cookie& cookie, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::SetCookie(sessionID, cookie, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetCookie(sessionID, cookie, callbackID)); } void WebCookieManagerProxy::setCookies(PAL::SessionID sessionID, const Vector& cookies, const URL& url, const URL& mainDocumentURL, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::SetCookies(sessionID, cookies, url, mainDocumentURL, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetCookies(sessionID, cookies, url, mainDocumentURL, callbackID)); } void WebCookieManagerProxy::getAllCookies(PAL::SessionID sessionID, Function&, CallbackBase::Error)>&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetAllCookies(sessionID, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetAllCookies(sessionID, callbackID)); } void WebCookieManagerProxy::getCookies(PAL::SessionID sessionID, const URL& url, Function&, CallbackBase::Error)>&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetCookies(sessionID, url, callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetCookies(sessionID, url, callbackID)); } void WebCookieManagerProxy::didSetCookies(WebKit::CallbackID callbackID) @@ -252,14 +252,14 @@ void WebCookieManagerProxy::setHTTPCookieAcceptPolicy(PAL::SessionID, HTTPCookie processPool()->setInitialHTTPCookieAcceptPolicy(policy); #endif - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetHTTPCookieAcceptPolicy(policy, OptionalCallbackID(callbackID))); } void WebCookieManagerProxy::getHTTPCookieAcceptPolicy(PAL::SessionID, Function&& callbackFunction) { - auto callbackID = m_callbacks.put(WTFMove(callbackFunction)); - processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetHTTPCookieAcceptPolicy(callbackID)); + auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); + processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetHTTPCookieAcceptPolicy(callbackID)); } void WebCookieManagerProxy::didGetHTTPCookieAcceptPolicy(uint32_t policy, WebKit::CallbackID callbackID) -- 1.8.3.1