chromium/ios/web/net/cookie_notification_bridge.h

// 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.

#ifndef IOS_WEB_NET_COOKIE_NOTIFICATION_BRIDGE_H_
#define IOS_WEB_NET_COOKIE_NOTIFICATION_BRIDGE_H_

@protocol NSObject;
@class NSNotification;

namespace web {

// CookieNotificationBridge listens to
// NSHTTPCookieManagerCookiesChangedNotification on the posting thread and
// re-sends it to the cookie store on the IO thread.
class CookieNotificationBridge {
 public:
  CookieNotificationBridge();

  CookieNotificationBridge(const CookieNotificationBridge&) = delete;
  CookieNotificationBridge& operator=(const CookieNotificationBridge&) = delete;

  ~CookieNotificationBridge();

 private:
  static void OnNotificationReceived(NSNotification* notification);

  // Token returned by NSNotificationCenter upon registration. Owned by the
  // bridge and used to unregister from NSNotificationCenter in destructor.
  __strong id<NSObject> registration_;
};

}  // namespace web

#endif  // IOS_WEB_NET_COOKIE_NOTIFICATION_BRIDGE_H_