File: autofill_section_container.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (129 lines) | stat: -rw-r--r-- 4,651 bytes parent folder | download | duplicates (2)
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
// 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"

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_