| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/web/net/cookie_notification_bridge.h" |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "base/functional/bind.h" |
| #import "base/location.h" |
| #import "ios/net/cookies/cookie_store_ios.h" |
| #import "ios/web/public/thread/web_task_traits.h" |
| #import "ios/web/public/thread/web_thread.h" |
| |
| namespace web { |
| |
| CookieNotificationBridge::CookieNotificationBridge() { |
| id<NSObject> registration = [[NSNotificationCenter defaultCenter] |
| addObserverForName:NSHTTPCookieManagerCookiesChangedNotification |
| object:[NSHTTPCookieStorage sharedHTTPCookieStorage] |
| queue:nil |
| usingBlock:^(NSNotification* notification) { |
| OnNotificationReceived(notification); |
| }]; |
| registration_ = registration; |
| } |
| |
| CookieNotificationBridge::~CookieNotificationBridge() { |
| [[NSNotificationCenter defaultCenter] removeObserver:registration_]; |
| } |
| |
| void CookieNotificationBridge::OnNotificationReceived( |
| NSNotification* notification) { |
| DCHECK([[notification name] |
| isEqualToString:NSHTTPCookieManagerCookiesChangedNotification]); |
| web::GetIOThreadTaskRunner({})->PostTask( |
| FROM_HERE, |
| base::BindOnce(&net::CookieStoreIOS::NotifySystemCookiesChanged)); |
| } |
| |
| } // namespace web |