1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef IOS_CHROME_BROWSER_CHROME_BROWSER_PROVIDER_OBSERVER_BRIDGE_H_ 6 #define IOS_CHROME_BROWSER_CHROME_BROWSER_PROVIDER_OBSERVER_BRIDGE_H_ 7 8 #import <Foundation/Foundation.h> 9 10 #include "base/macros.h" 11 #include "base/scoped_observer.h" 12 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" 13 14 // Objective-C protocol mirroring ChromeBrowserProvider::Observer. 15 @protocol ChromeBrowserProviderObserver<NSObject> 16 @optional 17 // Called when a new ChromeIdentityService has been installed. 18 - (void)chromeIdentityServiceDidChange: 19 (ios::ChromeIdentityService*)newIdentityService; 20 // Called when the ChromeBrowserProvider will be destroyed. 21 - (void)chromeBrowserProviderWillBeDestroyed; 22 @end 23 24 // Simple observer bridge that forwards all events to its delegate observer. 25 class ChromeBrowserProviderObserverBridge 26 : public ios::ChromeBrowserProvider::Observer { 27 public: 28 explicit ChromeBrowserProviderObserverBridge( 29 id<ChromeBrowserProviderObserver> observer); 30 ~ChromeBrowserProviderObserverBridge() override; 31 32 private: 33 // ios::ChromeBrowserProvider::Observer implementation. 34 void OnChromeIdentityServiceDidChange( 35 ios::ChromeIdentityService* new_identity_service) override; 36 void OnChromeBrowserProviderWillBeDestroyed() override; 37 38 __weak id<ChromeBrowserProviderObserver> observer_; 39 ScopedObserver<ios::ChromeBrowserProvider, 40 ios::ChromeBrowserProvider::Observer> 41 scoped_observer_{this}; 42 43 DISALLOW_COPY_AND_ASSIGN(ChromeBrowserProviderObserverBridge); 44 }; 45 46 #endif // IOS_CHROME_BROWSER_CHROME_BROWSER_PROVIDER_OBSERVER_BRIDGE_H_ 47