| // Copyright 2023 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/chrome/browser/shared/model/utils/notification_observer_bridge.h" |
| |
| #import "base/check.h" |
| |
| @implementation NotificationObserverBridge { |
| base::RepeatingCallback<void(NSNotification*)> _callback; |
| } |
| |
| - (instancetype)initForNotification:(NSNotificationName)notification |
| usingCallback:(NotificationCallback)callback { |
| self = [super init]; |
| if (self) { |
| CHECK(callback); |
| _callback = callback; |
| [[NSNotificationCenter defaultCenter] |
| addObserver:self |
| selector:@selector(didReceiveNotification:) |
| name:notification |
| object:nil]; |
| } |
| return self; |
| } |
| |
| - (void)didReceiveNotification:(NSNotification*)notification { |
| _callback.Run(notification); |
| } |
| |
| @end |