blob: e70f5d8c5794566f53cb4b86c21091ccf25f95fe [file] [log] [blame]
// Copyright 2013 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_AUTOFILL_AUTOFILL_CONTROLLER_H_
#define IOS_CHROME_BROWSER_AUTOFILL_AUTOFILL_CONTROLLER_H_
#import <UIKit/UIKit.h>
#include <vector>
@class AutofillAgent;
@protocol FormSuggestionProvider;
namespace autofill {
class FormStructure;
}
namespace ios {
class ChromeBrowserState;
}
namespace password_manager {
class PasswordGenerationManager;
}
namespace web {
class WebState;
}
// Handles Autofill.
@interface AutofillController : NSObject
@property(nonatomic, readonly) ios::ChromeBrowserState* browserState;
@property(weak, nonatomic, readonly) id<FormSuggestionProvider>
suggestionProvider;
// Designated initializer. Neither |browserState| nor |webState| should be null.
// |downloadEnabled| should be NO for tests to stop the system making external
// network requests.
- (instancetype)
initWithBrowserState:(ios::ChromeBrowserState*)browserState
webState:(web::WebState*)webState
autofillAgent:(AutofillAgent*)autofillAgent
passwordGenerationManager:
(password_manager::PasswordGenerationManager*)passwordGenerationManager
downloadEnabled:(BOOL)downloadEnabled NS_DESIGNATED_INITIALIZER;
// Convenience initializer. The autofill agent will be created from the
// given webstate.
// The system will start making external network requests.
- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState
passwordGenerationManager:
(password_manager::PasswordGenerationManager*)
passwordGenerationManager
webState:(web::WebState*)webState;
- (instancetype)init NS_UNAVAILABLE;
// Detaches itself from the supplied |webState|.
- (void)detachFromWebState;
// Sends the field type predictions specified in |forms| to the renderer. This
// method is a no-op if the appropriate experiment is not set.
- (void)sendAutofillTypePredictionsToRenderer:
(const std::vector<autofill::FormStructure*>&)forms;
@end
#endif // IOS_CHROME_BROWSER_AUTOFILL_AUTOFILL_CONTROLLER_H_