void stopObservingCookieChanges() { ASSERT(isMainThread()); CFRunLoopRef runLoop = cookieStorageObserverRunLoop(); ASSERT(runLoop); RetainPtr<CFHTTPCookieStorageRef> cookieStorage = currentCFHTTPCookieStorage(); ASSERT(cookieStorage); CFHTTPCookieStorageRemoveObserver(cookieStorage.get(), runLoop, kCFRunLoopDefaultMode, notifyCookiesChanged, 0); CFHTTPCookieStorageUnscheduleFromRunLoop(cookieStorage.get(), runLoop, kCFRunLoopCommonModes); }
static bool shouldRelaxThirdPartyCookiePolicy(NetworkingContext* context, const KURL& url) { // If a URL already has cookies, then we'll relax the 3rd party cookie policy and accept new cookies. RetainPtr<CFHTTPCookieStorageRef> cfCookieStorage = currentCFHTTPCookieStorage(context); CFHTTPCookieStorageAcceptPolicy cookieAcceptPolicy = CFHTTPCookieStorageGetCookieAcceptPolicy(cfCookieStorage.get()); if (cookieAcceptPolicy != CFHTTPCookieStorageAcceptPolicyOnlyFromMainDocumentDomain) return false; RetainPtr<CFURLRef> cfURL = adoptCF(url.createCFURL()); RetainPtr<CFArrayRef> cookies = adoptCF(CFHTTPCookieStorageCopyCookiesForURL(cfCookieStorage.get(), cfURL.get(), false)); return CFArrayGetCount(cookies.get()); }