blob: 69e1f5b556ef2dcb355c40079186b90fe69d6e83 [file] [log] [blame]
// Copyright 2019 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.
#import "ios/chrome/browser/overlays/public/overlay_presenter_observer_bridge.h"
#include "base/check.h"
#include "ios/chrome/browser/overlays/public/overlay_request_support.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
OverlayPresenterObserverBridge::OverlayPresenterObserverBridge(
id<OverlayPresenterObserving> observer)
: observer_(observer) {
DCHECK(observer_);
}
OverlayPresenterObserverBridge::~OverlayPresenterObserverBridge() = default;
const OverlayRequestSupport* OverlayPresenterObserverBridge::GetRequestSupport(
OverlayPresenter* presenter) const {
if ([observer_
respondsToSelector:@selector(overlayRequestSupportForPresenter:)]) {
return [observer_ overlayRequestSupportForPresenter:presenter];
}
return OverlayRequestSupport::All();
}
void OverlayPresenterObserverBridge::WillShowOverlay(
OverlayPresenter* presenter,
OverlayRequest* request,
bool initial_presentation) {
if ([observer_ respondsToSelector:@selector
(overlayPresenter:
willShowOverlayForRequest:initialPresentation:)]) {
[observer_ overlayPresenter:presenter
willShowOverlayForRequest:request
initialPresentation:initial_presentation];
}
}
void OverlayPresenterObserverBridge::DidShowOverlay(OverlayPresenter* presenter,
OverlayRequest* request) {
if ([observer_ respondsToSelector:@selector(overlayPresenter:
didShowOverlayForRequest:)]) {
[observer_ overlayPresenter:presenter didShowOverlayForRequest:request];
}
}
void OverlayPresenterObserverBridge::DidHideOverlay(OverlayPresenter* presenter,
OverlayRequest* request) {
if ([observer_ respondsToSelector:@selector(overlayPresenter:
didHideOverlayForRequest:)]) {
[observer_ overlayPresenter:presenter didHideOverlayForRequest:request];
}
}
void OverlayPresenterObserverBridge::OverlayPresenterDestroyed(
OverlayPresenter* presenter) {
if ([observer_ respondsToSelector:@selector(overlayPresenterDestroyed:)]) {
[observer_ overlayPresenterDestroyed:presenter];
}
}