blob: c31b881aa94ef8ee6bb718ae114f41ec91bd8762 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
// Copyright (c) 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 CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_SECTION_CONTAINER_H_
#define CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_SECTION_CONTAINER_H_
#import <Cocoa/Cocoa.h>
#include "base/mac/scoped_nsobject.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/autofill/autofill_dialog_types.h"
#import "chrome/browser/ui/cocoa/autofill/autofill_input_field.h"
#import "chrome/browser/ui/cocoa/autofill/autofill_layout.h"
#include "components/autofill/core/browser/detail_input.h"
#include "components/autofill/core/browser/dialog_section.h"
namespace autofill {
class AutofillDialogViewDelegate;
}
@class AutofillSectionView;
@class AutofillSuggestionContainer;
@class AutofillTextField;
@class AutofillTooltipController;
@class LayoutView;
@class MenuButton;
@class MenuController;
// Delegate to handle display of validation messages.
@protocol AutofillValidationDisplay
// Updates the validation message for a given field.
- (void)updateMessageForField:(NSControl<AutofillInputField>*)field;
// Hides the validation error bubble.
- (void)hideErrorBubble;
@end
// View delegate for a section of the payment details. Contains a label
// describing the section as well as associated inputs and controls. Built
// dynamically based on data retrieved from AutofillDialogViewDelegate.
@interface AutofillSectionContainer :
NSViewController<AutofillLayout, AutofillInputDelegate> {
@private
base::scoped_nsobject<LayoutView> inputs_;
base::scoped_nsobject<MenuButton> suggestButton_;
base::scoped_nsobject<AutofillSuggestionContainer> suggestContainer_;
base::scoped_nsobject<NSTextField> label_;
// The view for the container.
base::scoped_nsobject<AutofillSectionView> view_;
// Some sections need to show an icon with an associated tooltip. This is the
// controller for such an icon. There is at most one such icon per section.
base::scoped_nsobject<AutofillTooltipController> tooltipController_;
// The logical superview for the tooltip icon. Weak pointer, owned by
// |inputs_|.
AutofillTextField* tooltipField_;
// List of weak pointers, which constitute unique field IDs.
std::vector<const autofill::DetailInput*> detailInputs_;
// A delegate to handle display of validation messages. Not owned.
id<AutofillValidationDisplay> validationDelegate_;
// Indicate whether the dialog should show suggestions or manual inputs when
// performLayout is triggered.
BOOL showSuggestions_;
base::scoped_nsobject<MenuController> menuController_;
autofill::DialogSection section_;
autofill::AutofillDialogViewDelegate* delegate_; // Not owned.
}
@property(readonly, nonatomic) autofill::DialogSection section;
@property(assign, nonatomic) id<AutofillValidationDisplay> validationDelegate;
// Designated initializer. Queries |delegate| for the list of desired input
// fields for |section|.
- (id)initWithDelegate:(autofill::AutofillDialogViewDelegate*)delegate
forSection:(autofill::DialogSection)section;
// Populates |output| with mappings from field identification to input value.
- (void)getInputs:(autofill::FieldValueMap*)output;
// Called when the delegate-maintained suggestions model has changed.
- (void)modelChanged;
// Called when the contents of a section have changed.
- (void)update;
// Fills the section with Autofill data that was triggered by a user
// interaction with the originating |type|.
- (void)fillForType:(const autofill::ServerFieldType)type;
// Validate this section. Validation rules depend on |validationType|.
- (BOOL)validateFor:(autofill::ValidationType)validationType;
// Returns the value of the |suggestContainer_|'s input field, or nil if no
// suggestion is currently showing.
- (NSString*)suggestionText;
// Collects all input fields (direct & suggestions) into the given |array|.
- (void)addInputsToArray:(NSMutableArray*)array;
@end
@interface AutofillSectionContainer (ForTesting)
// Retrieve the field associated with the given type.
- (NSControl<AutofillInputField>*)getField:(autofill::ServerFieldType)type;
// Sets the value for the field matching |type|. Does nothing if the field is
// not part of this section.
- (void)setFieldValue:(NSString*)text
forType:(autofill::ServerFieldType)type;
// Sets the value for the suggestion text field.
- (void)setSuggestionFieldValue:(NSString*)text;
// Activates a given input field, determined by |type|. Does nothing if the
// field is not part of this section.
- (void)activateFieldForType:(autofill::ServerFieldType)type;
@end
#endif // CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_SECTION_CONTAINER_H_
|