// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ios/chrome/browser/chrome_browser_provider_observer_bridge.h"

#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif

ChromeBrowserProviderObserverBridge::ChromeBrowserProviderObserverBridge(
    id<ChromeBrowserProviderObserver> observer)
    : observer_(observer), scoped_observer_(this) {
  DCHECK(observer_);
  scoped_observer_.Add(ios::GetChromeBrowserProvider());
}

ChromeBrowserProviderObserverBridge::~ChromeBrowserProviderObserverBridge() {}

void ChromeBrowserProviderObserverBridge::OnChromeIdentityServiceDidChange(
    ios::ChromeIdentityService* new_identity_service) {
  if ([observer_ respondsToSelector:@selector(chromeIdentityServiceDidChange:)])
    [observer_ chromeIdentityServiceDidChange:new_identity_service];
}

void ChromeBrowserProviderObserverBridge::
    OnChromeBrowserProviderWillBeDestroyed() {
  if ([observer_
          respondsToSelector:@selector(chromeBrowserProviderWillBeDestroyed)]) {
    [observer_ chromeBrowserProviderWillBeDestroyed];
  }
}
