chromium/components/password_manager/ios/password_controller_driver_helper.h

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

#ifndef COMPONENTS_PASSWORD_MANAGER_IOS_PASSWORD_CONTROLLER_DRIVER_HELPER_H_
#define COMPONENTS_PASSWORD_MANAGER_IOS_PASSWORD_CONTROLLER_DRIVER_HELPER_H_

#import <Foundation/Foundation.h>

#import "components/password_manager/core/browser/password_generation_frame_helper.h"
#import "components/password_manager/ios/ios_password_manager_driver.h"

NS_ASSUME_NONNULL_BEGIN

@class PasswordControllerDriverHelper;

namespace web {
class WebFrame;
class WebState;
}  // namespace web

// This class is a helper for SharedPasswordController which is able to
// retrieve the driver and the generation helper. These methods are separated
// inside this class in order to facilitate tests which verify flows involving
// the driver and the generation helper.
@interface PasswordControllerDriverHelper : NSObject

// Creates a instance with the given |webState|.
- (instancetype)initWithWebState:(web::WebState*)webState
    NS_DESIGNATED_INITIALIZER;

- (instancetype)init NS_UNAVAILABLE;

// Returns the IOSPasswordManagerDriver tied to the frame.
- (IOSPasswordManagerDriver*)PasswordManagerDriver:(web::WebFrame*)frame;

// Returns the PasswordGenerationFrameHelper correspondent to the
// IOSPasswordManagerDriver attached to the frame.
- (password_manager::PasswordGenerationFrameHelper*)PasswordGenerationHelper:
    (web::WebFrame*)frame;

@end

NS_ASSUME_NONNULL_END

#endif  // COMPONENTS_PASSWORD_MANAGER_IOS_PASSWORD_CONTROLLER_DRIVER_HELPER_H_