chromium/ios/chrome/browser/passwords/ui_bundled/password_breach_mediator.h

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

#ifndef IOS_CHROME_BROWSER_UI_PASSWORDS_PASSWORD_BREACH_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_PASSWORDS_PASSWORD_BREACH_MEDIATOR_H_

#import <Foundation/Foundation.h>

#include "components/password_manager/core/browser/leak_detection_dialog_utils.h"
#include "components/password_manager/core/browser/password_manager_metrics_util.h"
#import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h"

@protocol ApplicationCommands;
@protocol PasswordBreachConsumer;
@protocol PasswordBreachPresenter;

// Manages the state and interactions of the consumer.
@interface PasswordBreachMediator : NSObject <ConfirmationAlertActionHandler>

- (instancetype)
    initWithConsumer:(id<PasswordBreachConsumer>)consumer
           presenter:(id<PasswordBreachPresenter>)presenter
    metrics_recorder:
        (std::unique_ptr<
            password_manager::metrics_util::LeakDialogMetricsRecorder>)
            metrics_recorder
            leakType:(password_manager::CredentialLeakType)leakType;

- (instancetype)init NS_UNAVAILABLE;

- (instancetype)initWithCoder NS_UNAVAILABLE;

// Informs the mediator that its about to be destroyed, so it can perform any
// logging or clean up needed.
- (void)disconnect;

@end

#endif  // IOS_CHROME_BROWSER_UI_PASSWORDS_PASSWORD_BREACH_MEDIATOR_H_