blob: ca64b29941535655788ab0fc12d125c32952722b [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.
#ifndef IOS_CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE_OBSERVER_BRIDGE_H_
#define IOS_CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE_OBSERVER_BRIDGE_H_
#include "base/macros.h"
#include "components/translate/core/browser/translate_infobar_delegate.h"
// Objective-C equivalent of translate::TranslateInfoBarDelegate::Observer.
@protocol TranslateInfobarDelegateObserving <NSObject>
- (void)translateInfoBarDelegate:(translate::TranslateInfoBarDelegate*)delegate
didChangeTranslateStep:(translate::TranslateStep)step
withErrorType:(translate::TranslateErrors::Type)errorType;
- (BOOL)translateInfoBarDelegateDidDismissWithoutInteraction:
(translate::TranslateInfoBarDelegate*)delegate;
@end
// Bridge class to observe translate::TranslateInfoBarDelegate in Objective-C.
class TranslateInfobarDelegateObserverBridge
: public translate::TranslateInfoBarDelegate::Observer {
public:
// |owner| will not be retained.
TranslateInfobarDelegateObserverBridge(
translate::TranslateInfoBarDelegate* translate_infobar_delegate,
id<TranslateInfobarDelegateObserving> owner);
~TranslateInfobarDelegateObserverBridge() override;
// translate::TranslateInfoBarDelegate::Observer.
void OnTranslateStepChanged(
translate::TranslateStep step,
translate::TranslateErrors::Type error_type) override;
bool IsDeclinedByUser() override;
private:
translate::TranslateInfoBarDelegate* translate_infobar_delegate_ = nullptr;
__weak id<TranslateInfobarDelegateObserving> owner_ = nil;
DISALLOW_COPY_AND_ASSIGN(TranslateInfobarDelegateObserverBridge);
};
#endif // IOS_CHROME_BROWSER_TRANSLATE_TRANSLATE_INFOBAR_DELEGATE_OBSERVER_BRIDGE_H_