// Copyright 2017 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_WEB_VIEW_PUBLIC_CWV_AUTOFILL_SUGGESTION_H_
#define IOS_WEB_VIEW_PUBLIC_CWV_AUTOFILL_SUGGESTION_H_

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

#import "cwv_export.h"

NS_ASSUME_NONNULL_BEGIN

CWV_EXPORT
// Represents a suggestion for an address, creditcard, or password form based
// off of a single field. Filling using a suggestion may fill more than one
// field at once.
// Example:
//   If an address profile is:
//   John Doe
//   1600 Amiphtheatre Pkwy
//   Mountain View, CA 94403
//   Then if
//   <form name="shipping_info">
//     <input type='text' name="first_name"> <-- focused on this
//     <input type='text' name="last_name">
//     <input type='text' name="address_1">
//     <input type='text' name="address_2">
//     <input type='text' name="state">
//     <input type='text' name="country">
//     <input type='text' name="zip_code">
//   </form>
//   The suggestion may look like:
//   |formName| "shipping_info"
//   |value| "John"
//   |displayDescription| "1600 Amphitheatre Pkwy ..."
//   Using this suggestion would replace all fields with the appropriate value.
@interface CWVAutofillSuggestion : NSObject

// The 'name' attribute of the html form element.
@property(nonatomic, copy, readonly) NSString* formName;

// A generated identifier for the html field element. Generated by
// __gCrWeb.form.getFieldIdentifier in form.js.
@property(nonatomic, copy, readonly) NSString* fieldIdentifier;

// The identifier of the WebFrame containing the field.
@property(nonatomic, copy, readonly) NSString* frameID;

// The string that will replace the field's value attribute.
@property(nonatomic, copy, readonly) NSString* value;

// Non-nil if this suggestion is created from a credit card or address profile.
// Contain extra information from that profile to help differentiate from other
// suggestions.
@property(nonatomic, copy, readonly, nullable) NSString* displayDescription;

// The icon image of the suggestion, currently this is only used for displaying
// credit card network icon.
@property(nonatomic, readonly, nullable) UIImage* icon;

// The unique identifier associated with the suggestion.
@property(nonatomic, readonly) NSInteger uniqueIdentifier;

- (instancetype)init NS_UNAVAILABLE;

// YES if this is a password autofill suggestion.
- (BOOL)isPasswordSuggestion;

@end

NS_ASSUME_NONNULL_END

#endif  // IOS_WEB_VIEW_PUBLIC_CWV_AUTOFILL_SUGGESTION_H_
