Changeset 212283 in webkit
- Timestamp:
- Feb 14, 2017 2:43:14 AM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r212280 r212283 1 2017-02-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 CookieManager only works with the default session 4 https://bugs.webkit.org/show_bug.cgi?id=168229 5 6 Reviewed by Alex Christensen. 7 8 Update cookie observer API to use a std::function instead of a function pointer and make it work with multiple 9 sessions in the backends that support it. 10 11 * platform/network/CookieStorage.h: 12 * platform/network/cf/CookieStorageCFNet.cpp: 13 (WebCore::cookieChangeCallbackMap): 14 (WebCore::notifyCookiesChanged): 15 (WebCore::startObservingCookieChanges): 16 (WebCore::stopObservingCookieChanges): 17 * platform/network/mac/CookieStorageMac.mm: 18 (-[WebCookieStorageObjCAdapter startListeningForCookieChangeNotificationsWithCallback:]): 19 (-[WebCookieStorageObjCAdapter stopListeningForCookieChangeNotifications]): 20 (WebCore::startObservingCookieChanges): 21 (WebCore::stopObservingCookieChanges): 22 * platform/network/soup/CookieStorageSoup.cpp: 23 (WebCore::cookieChangeCallbackMap): 24 (WebCore::soupCookiesChanged): 25 (WebCore::startObservingCookieChanges): 26 (WebCore::stopObservingCookieChanges): 27 1 28 2017-02-13 Antoine Quint <graouts@apple.com> 2 29 -
trunk/Source/WebCore/platform/network/CookieStorage.h
r172849 r212283 24 24 */ 25 25 26 #ifndef CookieStorage_h 27 #define CookieStorage_h 26 #pragma once 27 28 #include <functional> 28 29 29 30 namespace WebCore { 30 31 31 // These are always observing the shared cookie storage, even when in private browsing mode. 32 class NetworkStorageSession; 32 33 33 typedef void(*CookieChangeCallbackPtr)(); 34 WEBCORE_EXPORT void startObservingCookieChanges(CookieChangeCallbackPtr); 35 WEBCORE_EXPORT void stopObservingCookieChanges(); 34 WEBCORE_EXPORT void startObservingCookieChanges(const NetworkStorageSession&, std::function<void ()>&&); 35 WEBCORE_EXPORT void stopObservingCookieChanges(const NetworkStorageSession&); 36 36 37 37 } 38 38 39 #endif -
trunk/Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp
r188787 r212283 28 28 29 29 #include "NetworkStorageSession.h" 30 #include <wtf/HashMap.h> 30 31 #include <wtf/MainThread.h> 32 #include <wtf/NeverDestroyed.h> 31 33 32 34 #if PLATFORM(COCOA) … … 42 44 #if PLATFORM(WIN) 43 45 44 static CookieChangeCallbackPtr cookieChangeCallback; 46 static HashMap<CFHTTPCookieStorageRef, std::function<void ()>>& cookieChangeCallbackMap() 47 { 48 static NeverDestroyed<HashMap<CFHTTPCookieStorageRef, std::function<void ()>>> map; 49 return map; 50 } 45 51 46 static void notifyCookiesChanged(CFHTTPCookieStorageRef , void *)52 static void notifyCookiesChanged(CFHTTPCookieStorageRef cookieStorage, void *) 47 53 { 48 callOnMainThread([] { 49 cookieChangeCallback(); 54 callOnMainThread([cookieStorage] { 55 if (auto callback = cookieChangeCallbackMap().get(cookieStorage)) 56 callback(); 50 57 }); 51 58 } … … 62 69 } 63 70 64 void startObservingCookieChanges( CookieChangeCallbackPtrcallback)71 void startObservingCookieChanges(const NetworkStorageSession& storageSession, std::function<void ()>&& callback) 65 72 { 66 73 ASSERT(isMainThread()); 67 68 ASSERT(!cookieChangeCallback);69 cookieChangeCallback = callback;70 74 71 75 CFRunLoopRef runLoop = cookieStorageObserverRunLoop(); 72 76 ASSERT(runLoop); 73 77 74 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSession::defaultStorageSession().cookieStorage();78 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = storageSession.cookieStorage(); 75 79 ASSERT(cookieStorage); 80 81 ASSERT(cookieChangeCallbackMap().contains(cookieStorage.get())); 82 cookieChangeCallbackMap().add(cookieStorage.get(), WTFMove(callback)); 76 83 77 84 CFHTTPCookieStorageScheduleWithRunLoop(cookieStorage.get(), runLoop, kCFRunLoopCommonModes); … … 79 86 } 80 87 81 void stopObservingCookieChanges( )88 void stopObservingCookieChanges(const NetworkStorageSession& storageSession) 82 89 { 83 90 ASSERT(isMainThread()); 84 85 cookieChangeCallback = 0;86 91 87 92 CFRunLoopRef runLoop = cookieStorageObserverRunLoop(); 88 93 ASSERT(runLoop); 89 94 90 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSession::defaultStorageSession().cookieStorage();95 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = storageSession.cookieStorage(); 91 96 ASSERT(cookieStorage); 97 98 cookieChangeCallbackMap().remove(cookieStorage.get()); 92 99 93 100 CFHTTPCookieStorageRemoveObserver(cookieStorage.get(), runLoop, kCFRunLoopDefaultMode, notifyCookiesChanged, 0); -
trunk/Source/WebCore/platform/network/mac/CookieStorageMac.mm
r204466 r212283 32 32 33 33 @interface WebCookieStorageObjCAdapter : NSObject { 34 CookieChangeCallbackPtrm_cookieChangeCallback;34 std::function<void ()> m_cookieChangeCallback; 35 35 } 36 36 -(void)notifyCookiesChangedOnMainThread; 37 37 -(void)cookiesChangedNotificationHandler:(NSNotification *)notification; 38 -(void)startListeningForCookieChangeNotificationsWithCallback:( CookieChangeCallbackPtr)callback;38 -(void)startListeningForCookieChangeNotificationsWithCallback:(std::function<void ()>&&)callback; 39 39 -(void)stopListeningForCookieChangeNotifications; 40 40 @end … … 54 54 } 55 55 56 -(void)startListeningForCookieChangeNotificationsWithCallback:( CookieChangeCallbackPtr)callback56 -(void)startListeningForCookieChangeNotificationsWithCallback:(std::function<void ()>&&)callback 57 57 { 58 58 ASSERT(!m_cookieChangeCallback); 59 m_cookieChangeCallback = callback;59 m_cookieChangeCallback = WTFMove(callback); 60 60 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cookiesChangedNotificationHandler:) name:NSHTTPCookieManagerCookiesChangedNotification object:[NSHTTPCookieStorage sharedHTTPCookieStorage]]; 61 61 } … … 64 64 { 65 65 [[NSNotificationCenter defaultCenter] removeObserver:self name:NSHTTPCookieManagerCookiesChangedNotification object:nil]; 66 m_cookieChangeCallback = 0;66 m_cookieChangeCallback = nullptr; 67 67 } 68 68 … … 73 73 static WebCookieStorageObjCAdapter *cookieStorageAdapter; 74 74 75 void startObservingCookieChanges( CookieChangeCallbackPtrcallback)75 void startObservingCookieChanges(const NetworkStorageSession&, std::function<void ()>&& callback) 76 76 { 77 77 if (!cookieStorageAdapter) 78 78 cookieStorageAdapter = [[WebCookieStorageObjCAdapter alloc] init]; 79 [cookieStorageAdapter startListeningForCookieChangeNotificationsWithCallback: callback];79 [cookieStorageAdapter startListeningForCookieChangeNotificationsWithCallback:WTFMove(callback)]; 80 80 } 81 81 82 void stopObservingCookieChanges( )82 void stopObservingCookieChanges(const NetworkStorageSession&) 83 83 { 84 84 // cookieStorageAdapter can be nil here, if the WebProcess crashed and was restarted between -
trunk/Source/WebCore/platform/network/soup/CookieStorageSoup.cpp
r210729 r212283 24 24 #include "NetworkStorageSession.h" 25 25 #include <libsoup/soup.h> 26 #include <wtf/HashMap.h> 27 #include <wtf/NeverDestroyed.h> 26 28 27 29 namespace WebCore { 28 30 29 static CookieChangeCallbackPtr cookieChangeCallback; 31 static HashMap<SoupCookieJar*, std::function<void ()>>& cookieChangeCallbackMap() 32 { 33 static NeverDestroyed<HashMap<SoupCookieJar*, std::function<void ()>>> map; 34 return map; 35 } 30 36 31 37 static void soupCookiesChanged(SoupCookieJar* jar) 32 38 { 33 if (jar != NetworkStorageSession::defaultStorageSession().cookieStorage()) 34 return; 35 cookieChangeCallback(); 39 if (auto callback = cookieChangeCallbackMap().get(jar)) 40 callback(); 36 41 } 37 42 38 void startObservingCookieChanges( CookieChangeCallbackPtrcallback)43 void startObservingCookieChanges(const NetworkStorageSession& storageSession, std::function<void ()>&& callback) 39 44 { 40 ASSERT(!cookieChangeCallback);41 cookieChangeCallback = callback;42 43 g_signal_connect( NetworkStorageSession::defaultStorageSession().cookieStorage(), "changed", G_CALLBACK(soupCookiesChanged), 0);45 auto* jar = storageSession.cookieStorage(); 46 ASSERT(!cookieChangeCallbackMap().contains(jar)); 47 cookieChangeCallbackMap().add(jar, WTFMove(callback)); 48 g_signal_connect(jar, "changed", G_CALLBACK(soupCookiesChanged), nullptr); 44 49 } 45 50 46 void stopObservingCookieChanges( )51 void stopObservingCookieChanges(const NetworkStorageSession& storageSession) 47 52 { 48 g_signal_handlers_disconnect_by_func(NetworkStorageSession::defaultStorageSession().cookieStorage(), reinterpret_cast<void*>(soupCookiesChanged), nullptr); 49 cookieChangeCallback = nullptr; 53 auto* jar = storageSession.cookieStorage(); 54 ASSERT(cookieChangeCallbackMap().contains(jar)); 55 cookieChangeCallbackMap().remove(jar); 56 g_signal_handlers_disconnect_by_func(jar, reinterpret_cast<void*>(soupCookiesChanged), nullptr); 50 57 } 51 58 -
trunk/Source/WebKit2/ChangeLog
r212281 r212283 1 2017-02-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 CookieManager only works with the default session 4 https://bugs.webkit.org/show_bug.cgi?id=168229 5 6 Reviewed by Alex Christensen. 7 8 Make CookieManager session aware by adding a SessionID parameter to all its functions, and update all the callers 9 to pass the default session ID, preserving the current 10 behavior. WebCookieManagerProxy::startObservingCookieChanges() now also receives an optional callback to be 11 called on every change. 12 13 * UIProcess/API/C/WKCookieManager.cpp: 14 (WKCookieManagerGetHostnamesWithCookies): 15 (WKCookieManagerDeleteCookiesForHostname): 16 (WKCookieManagerDeleteAllCookies): 17 (WKCookieManagerDeleteAllCookiesModifiedAfterDate): 18 (WKCookieManagerStartObservingCookieChanges): 19 (WKCookieManagerStopObservingCookieChanges): 20 * UIProcess/API/gtk/WebKitCookieManager.cpp: 21 (_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate): 22 (webkitCookieManagerCreate): 23 (webkit_cookie_manager_set_persistent_storage): 24 (webkit_cookie_manager_get_domains_with_cookies): 25 (webkit_cookie_manager_delete_cookies_for_domain): 26 (webkit_cookie_manager_delete_all_cookies): 27 * UIProcess/Automation/WebAutomationSession.cpp: 28 (WebKit::WebAutomationSession::addSingleCookie): 29 (WebKit::WebAutomationSession::deleteAllCookies): 30 * UIProcess/WebCookieManagerProxy.cpp: 31 (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): 32 (WebKit::WebCookieManagerProxy::deleteCookiesForHostname): 33 (WebKit::WebCookieManagerProxy::deleteAllCookies): 34 (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince): 35 (WebKit::WebCookieManagerProxy::addCookie): 36 (WebKit::WebCookieManagerProxy::startObservingCookieChanges): 37 (WebKit::WebCookieManagerProxy::stopObservingCookieChanges): 38 (WebKit::WebCookieManagerProxy::cookiesDidChange): 39 * UIProcess/WebCookieManagerProxy.h: 40 * UIProcess/WebCookieManagerProxy.messages.in: 41 * WebProcess/Cookies/WebCookieManager.cpp: 42 (WebKit::WebCookieManager::WebCookieManager): 43 (WebKit::WebCookieManager::getHostnamesWithCookies): 44 (WebKit::WebCookieManager::deleteCookiesForHostname): 45 (WebKit::WebCookieManager::deleteAllCookies): 46 (WebKit::WebCookieManager::deleteAllCookiesModifiedSince): 47 (WebKit::WebCookieManager::addCookie): 48 (WebKit::WebCookieManager::startObservingCookieChanges): 49 (WebKit::WebCookieManager::stopObservingCookieChanges): 50 * WebProcess/Cookies/WebCookieManager.h: 51 * WebProcess/Cookies/WebCookieManager.messages.in: 52 1 53 2017-02-14 Tomas Popela <tpopela@redhat.com> 2 54 -
trunk/Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp
r176963 r212283 44 44 void WKCookieManagerGetHostnamesWithCookies(WKCookieManagerRef cookieManagerRef, void* context, WKCookieManagerGetCookieHostnamesFunction callback) 45 45 { 46 toImpl(cookieManagerRef)->getHostnamesWithCookies( toGenericCallbackFunction(context, callback));46 toImpl(cookieManagerRef)->getHostnamesWithCookies(WebCore::SessionID::defaultSessionID(), toGenericCallbackFunction(context, callback)); 47 47 } 48 48 49 49 void WKCookieManagerDeleteCookiesForHostname(WKCookieManagerRef cookieManagerRef, WKStringRef hostname) 50 50 { 51 toImpl(cookieManagerRef)->deleteCookiesForHostname( toImpl(hostname)->string());51 toImpl(cookieManagerRef)->deleteCookiesForHostname(WebCore::SessionID::defaultSessionID(), toImpl(hostname)->string()); 52 52 } 53 53 54 54 void WKCookieManagerDeleteAllCookies(WKCookieManagerRef cookieManagerRef) 55 55 { 56 toImpl(cookieManagerRef)->deleteAllCookies( );56 toImpl(cookieManagerRef)->deleteAllCookies(WebCore::SessionID::defaultSessionID()); 57 57 } 58 58 … … 62 62 63 63 auto time = system_clock::time_point(duration_cast<system_clock::duration>(duration<double>(date))); 64 toImpl(cookieManagerRef)->deleteAllCookiesModifiedSince( time);64 toImpl(cookieManagerRef)->deleteAllCookiesModifiedSince(WebCore::SessionID::defaultSessionID(), time); 65 65 } 66 66 … … 77 77 void WKCookieManagerStartObservingCookieChanges(WKCookieManagerRef cookieManager) 78 78 { 79 toImpl(cookieManager)->startObservingCookieChanges( );79 toImpl(cookieManager)->startObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 80 80 } 81 81 82 82 void WKCookieManagerStopObservingCookieChanges(WKCookieManagerRef cookieManager) 83 83 { 84 toImpl(cookieManager)->stopObservingCookieChanges( );84 toImpl(cookieManager)->stopObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 85 85 } -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp
r185502 r212283 56 56 ~_WebKitCookieManagerPrivate() 57 57 { 58 webCookieManager->stopObservingCookieChanges( );58 webCookieManager->stopObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 59 59 } 60 60 … … 146 146 }; 147 147 WKCookieManagerSetClient(toAPI(webCookieManager), &wkCookieManagerClient.base); 148 manager->priv->webCookieManager->startObservingCookieChanges( );148 manager->priv->webCookieManager->startObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 149 149 150 150 return manager; … … 170 170 g_return_if_fail(filename); 171 171 172 manager->priv->webCookieManager->stopObservingCookieChanges( );172 manager->priv->webCookieManager->stopObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 173 173 manager->priv->webCookieManager->setCookiePersistentStorage(String::fromUTF8(filename), toSoupCookiePersistentStorageType(storage)); 174 manager->priv->webCookieManager->startObservingCookieChanges( );174 manager->priv->webCookieManager->startObservingCookieChanges(WebCore::SessionID::defaultSessionID()); 175 175 } 176 176 … … 270 270 271 271 GTask* task = g_task_new(manager, cancellable, callback, userData); 272 manager->priv->webCookieManager->getHostnamesWithCookies( toGenericCallbackFunction(task, webkitCookieManagerGetDomainsWithCookiesCallback));272 manager->priv->webCookieManager->getHostnamesWithCookies(WebCore::SessionID::defaultSessionID(), toGenericCallbackFunction(task, webkitCookieManagerGetDomainsWithCookiesCallback)); 273 273 } 274 274 … … 306 306 g_return_if_fail(domain); 307 307 308 manager->priv->webCookieManager->deleteCookiesForHostname( String::fromUTF8(domain));308 manager->priv->webCookieManager->deleteCookiesForHostname(WebCore::SessionID::defaultSessionID(), String::fromUTF8(domain)); 309 309 } 310 310 … … 319 319 g_return_if_fail(WEBKIT_IS_COOKIE_MANAGER(manager)); 320 320 321 manager->priv->webCookieManager->deleteAllCookies( );322 } 321 manager->priv->webCookieManager->deleteAllCookies(WebCore::SessionID::defaultSessionID()); 322 } -
trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp
r212115 r212283 728 728 729 729 WebCookieManagerProxy* cookieManager = m_processPool->supplement<WebCookieManagerProxy>(); 730 cookieManager->addCookie( cookie, activeURL.host());730 cookieManager->addCookie(WebCore::SessionID::defaultSessionID(), cookie, activeURL.host()); 731 731 732 732 callback->sendSuccess(); … … 743 743 744 744 WebCookieManagerProxy* cookieManager = m_processPool->supplement<WebCookieManagerProxy>(); 745 cookieManager->deleteCookiesForHostname( activeURL.host());745 cookieManager->deleteCookiesForHostname(WebCore::SessionID::defaultSessionID(), activeURL.host()); 746 746 } 747 747 -
trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp
r202242 r212283 94 94 } 95 95 96 void WebCookieManagerProxy::getHostnamesWithCookies( std::function<void (API::Array*, CallbackBase::Error)> callbackFunction)96 void WebCookieManagerProxy::getHostnamesWithCookies(WebCore::SessionID sessionID, std::function<void (API::Array*, CallbackBase::Error)> callbackFunction) 97 97 { 98 98 auto callback = ArrayCallback::create(WTFMove(callbackFunction)); … … 100 100 m_arrayCallbacks.set(callbackID, WTFMove(callback)); 101 101 102 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetHostnamesWithCookies( callbackID));102 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::GetHostnamesWithCookies(sessionID, callbackID)); 103 103 } 104 104 105 105 void WebCookieManagerProxy::didGetHostnamesWithCookies(const Vector<String>& hostnames, uint64_t callbackID) 106 106 { … … 114 114 } 115 115 116 void WebCookieManagerProxy::deleteCookiesForHostname( const String& hostname)116 void WebCookieManagerProxy::deleteCookiesForHostname(WebCore::SessionID sessionID, const String& hostname) 117 117 { 118 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteCookiesForHostname( hostname));118 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteCookiesForHostname(sessionID, hostname)); 119 119 } 120 120 121 void WebCookieManagerProxy::deleteAllCookies( )121 void WebCookieManagerProxy::deleteAllCookies(WebCore::SessionID sessionID) 122 122 { 123 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteAllCookies( ));123 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteAllCookies(sessionID)); 124 124 } 125 125 126 void WebCookieManagerProxy::deleteAllCookiesModifiedSince( std::chrono::system_clock::time_point time)126 void WebCookieManagerProxy::deleteAllCookiesModifiedSince(WebCore::SessionID sessionID, std::chrono::system_clock::time_point time) 127 127 { 128 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteAllCookiesModifiedSince( time));128 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::DeleteAllCookiesModifiedSince(sessionID, time)); 129 129 } 130 130 131 void WebCookieManagerProxy::addCookie( const WebCore::Cookie& cookie, const String& hostname)131 void WebCookieManagerProxy::addCookie(WebCore::SessionID sessionID, const WebCore::Cookie& cookie, const String& hostname) 132 132 { 133 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::AddCookie( cookie, hostname));133 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::AddCookie(sessionID, cookie, hostname)); 134 134 } 135 135 136 void WebCookieManagerProxy::startObservingCookieChanges( )136 void WebCookieManagerProxy::startObservingCookieChanges(WebCore::SessionID sessionID, std::function<void ()>&& callback) 137 137 { 138 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::StartObservingCookieChanges()); 138 if (callback) 139 m_cookieObservers.set(sessionID, WTFMove(callback)); 140 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::StartObservingCookieChanges(sessionID)); 139 141 } 140 142 141 void WebCookieManagerProxy::stopObservingCookieChanges( )143 void WebCookieManagerProxy::stopObservingCookieChanges(WebCore::SessionID sessionID) 142 144 { 143 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::StopObservingCookieChanges()); 145 m_cookieObservers.remove(sessionID); 146 processPool()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::WebCookieManager::StopObservingCookieChanges(sessionID)); 144 147 } 145 148 146 void WebCookieManagerProxy::cookiesDidChange( )149 void WebCookieManagerProxy::cookiesDidChange(WebCore::SessionID sessionID) 147 150 { 148 151 m_client.cookiesDidChange(this); 152 if (auto callback = m_cookieObservers.get(sessionID)) 153 callback(); 149 154 } 150 155 -
trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.h
r204668 r212283 32 32 #include "WebContextSupplement.h" 33 33 #include "WebCookieManagerProxyClient.h" 34 #include <WebCore/SessionID.h> 34 35 #include <wtf/PassRefPtr.h> 35 36 #include <wtf/RefPtr.h> … … 65 66 void initializeClient(const WKCookieManagerClientBase*); 66 67 67 void getHostnamesWithCookies( std::function<void (API::Array*, CallbackBase::Error)>);68 void deleteCookiesForHostname( const String& hostname);69 void deleteAllCookies( );70 void deleteAllCookiesModifiedSince( std::chrono::system_clock::time_point);71 void addCookie( const WebCore::Cookie&, const String& hostname);68 void getHostnamesWithCookies(WebCore::SessionID, std::function<void (API::Array*, CallbackBase::Error)>); 69 void deleteCookiesForHostname(WebCore::SessionID, const String& hostname); 70 void deleteAllCookies(WebCore::SessionID); 71 void deleteAllCookiesModifiedSince(WebCore::SessionID, std::chrono::system_clock::time_point); 72 void addCookie(WebCore::SessionID, const WebCore::Cookie&, const String& hostname); 72 73 73 74 void setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy); 74 75 void getHTTPCookieAcceptPolicy(std::function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)>); 75 76 76 void startObservingCookieChanges( );77 void stopObservingCookieChanges( );77 void startObservingCookieChanges(WebCore::SessionID, std::function<void ()>&& = nullptr); 78 void stopObservingCookieChanges(WebCore::SessionID); 78 79 79 80 #if USE(SOUP) … … 91 92 void didGetHTTPCookieAcceptPolicy(uint32_t policy, uint64_t callbackID); 92 93 93 void cookiesDidChange( );94 void cookiesDidChange(WebCore::SessionID); 94 95 95 96 // WebContextSupplement … … 110 111 HashMap<uint64_t, RefPtr<HTTPCookieAcceptPolicyCallback>> m_httpCookieAcceptPolicyCallbacks; 111 112 113 HashMap<WebCore::SessionID, std::function<void ()>> m_cookieObservers; 114 112 115 WebCookieManagerProxyClient m_client; 113 116 -
trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.messages.in
r160022 r212283 25 25 DidGetHTTPCookieAcceptPolicy(uint32_t policy, uint64_t callbackID); 26 26 27 CookiesDidChange( )27 CookiesDidChange(WebCore::SessionID sessionID) 28 28 } -
trunk/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp
r199197 r212283 43 43 namespace WebKit { 44 44 45 static WebCookieManager* sharedCookieManager;46 47 45 const char* WebCookieManager::supplementName() 48 46 { … … 54 52 { 55 53 m_process->addMessageReceiver(Messages::WebCookieManager::messageReceiverName(), *this); 56 57 ASSERT(!sharedCookieManager);58 sharedCookieManager = this;59 54 } 60 55 61 void WebCookieManager::getHostnamesWithCookies( uint64_t callbackID)56 void WebCookieManager::getHostnamesWithCookies(SessionID sessionID, uint64_t callbackID) 62 57 { 63 58 HashSet<String> hostnames; 64 WebCore::getHostnamesWithCookies(NetworkStorageSession::defaultStorageSession(), hostnames); 59 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 60 WebCore::getHostnamesWithCookies(*storageSession, hostnames); 65 61 66 62 Vector<String> hostnameList; … … 70 66 } 71 67 72 void WebCookieManager::deleteCookiesForHostname( const String& hostname)68 void WebCookieManager::deleteCookiesForHostname(SessionID sessionID, const String& hostname) 73 69 { 74 WebCore::deleteCookiesForHostnames(NetworkStorageSession::defaultStorageSession(), { hostname }); 70 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 71 WebCore::deleteCookiesForHostnames(*storageSession, { hostname }); 75 72 } 76 73 77 void WebCookieManager::deleteAllCookies( )74 void WebCookieManager::deleteAllCookies(SessionID sessionID) 78 75 { 79 WebCore::deleteAllCookies(NetworkStorageSession::defaultStorageSession()); 76 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 77 WebCore::deleteAllCookies(*storageSession); 80 78 } 81 79 82 void WebCookieManager::deleteAllCookiesModifiedSince( std::chrono::system_clock::time_point time)80 void WebCookieManager::deleteAllCookiesModifiedSince(SessionID sessionID, std::chrono::system_clock::time_point time) 83 81 { 84 WebCore::deleteAllCookiesModifiedSince(NetworkStorageSession::defaultStorageSession(), time); 82 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 83 WebCore::deleteAllCookiesModifiedSince(*storageSession, time); 85 84 } 86 85 87 void WebCookieManager::addCookie( const Cookie& cookie, const String& hostname)86 void WebCookieManager::addCookie(SessionID sessionID, const Cookie& cookie, const String& hostname) 88 87 { 89 WebCore::addCookie(NetworkStorageSession::defaultStorageSession(), URL(URL(), hostname), cookie); 88 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 89 WebCore::addCookie(*storageSession, URL(URL(), hostname), cookie); 90 90 } 91 91 92 void WebCookieManager::startObservingCookieChanges( )92 void WebCookieManager::startObservingCookieChanges(SessionID sessionID) 93 93 { 94 WebCore::startObservingCookieChanges(cookiesDidChange); 94 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) { 95 WebCore::startObservingCookieChanges(*storageSession, [this, sessionID] { 96 ASSERT(RunLoop::isMain()); 97 m_process->send(Messages::WebCookieManagerProxy::CookiesDidChange(sessionID), 0); 98 }); 99 } 95 100 } 96 101 97 void WebCookieManager::stopObservingCookieChanges( )102 void WebCookieManager::stopObservingCookieChanges(SessionID sessionID) 98 103 { 99 WebCore::stopObservingCookieChanges(); 100 } 101 102 void WebCookieManager::cookiesDidChange() 103 { 104 sharedCookieManager->dispatchCookiesDidChange(); 105 } 106 107 void WebCookieManager::dispatchCookiesDidChange() 108 { 109 ASSERT(RunLoop::isMain()); 110 m_process->send(Messages::WebCookieManagerProxy::CookiesDidChange(), 0); 104 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 105 WebCore::stopObservingCookieChanges(*storageSession); 111 106 } 112 107 -
trunk/Source/WebKit2/WebProcess/Cookies/WebCookieManager.h
r204668 r212283 31 31 #include "NetworkProcessSupplement.h" 32 32 #include "WebProcessSupplement.h" 33 #include <WebCore/SessionID.h> 33 34 #include <stdint.h> 34 35 #include <wtf/Forward.h> … … 63 64 void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override; 64 65 65 void getHostnamesWithCookies( uint64_t callbackID);66 void deleteCookiesForHostname( const String&);67 void deleteAllCookies( );68 void deleteAllCookiesModifiedSince( std::chrono::system_clock::time_point);69 void addCookie( const WebCore::Cookie&, const String& hostname);66 void getHostnamesWithCookies(WebCore::SessionID, uint64_t callbackID); 67 void deleteCookiesForHostname(WebCore::SessionID, const String&); 68 void deleteAllCookies(WebCore::SessionID); 69 void deleteAllCookiesModifiedSince(WebCore::SessionID, std::chrono::system_clock::time_point); 70 void addCookie(WebCore::SessionID, const WebCore::Cookie&, const String& hostname); 70 71 71 72 void platformSetHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy); … … 73 74 HTTPCookieAcceptPolicy platformGetHTTPCookieAcceptPolicy(); 74 75 75 void startObservingCookieChanges(); 76 void stopObservingCookieChanges(); 77 78 static void cookiesDidChange(); 79 void dispatchCookiesDidChange(); 80 76 void startObservingCookieChanges(WebCore::SessionID); 77 void stopObservingCookieChanges(WebCore::SessionID); 81 78 82 79 ChildProcess* m_process; -
trunk/Source/WebKit2/WebProcess/Cookies/WebCookieManager.messages.in
r199197 r212283 25 25 26 26 messages -> WebCookieManager { 27 void GetHostnamesWithCookies( uint64_t callbackID)28 void DeleteCookiesForHostname( String hostname)29 void DeleteAllCookies( )30 void DeleteAllCookiesModifiedSince( std::chrono::system_clock::time_point time)31 void AddCookie( struct WebCore::Cookie cookie, String hostname)27 void GetHostnamesWithCookies(WebCore::SessionID sessionID, uint64_t callbackID) 28 void DeleteCookiesForHostname(WebCore::SessionID sessionID, String hostname) 29 void DeleteAllCookies(WebCore::SessionID sessionID) 30 void DeleteAllCookiesModifiedSince(WebCore::SessionID sessionID, std::chrono::system_clock::time_point time) 31 void AddCookie(WebCore::SessionID sessionID, struct WebCore::Cookie cookie, String hostname) 32 32 33 33 void SetHTTPCookieAcceptPolicy(uint32_t policy) 34 34 void GetHTTPCookieAcceptPolicy(uint64_t callbackID) 35 35 36 void StartObservingCookieChanges( )37 void StopObservingCookieChanges( )36 void StartObservingCookieChanges(WebCore::SessionID sessionID) 37 void StopObservingCookieChanges(WebCore::SessionID sessionID) 38 38 39 39 #if USE(SOUP)
Note: See TracChangeset
for help on using the changeset viewer.