OLD | NEW |
---|---|
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
7 #include "base/strings/sys_string_conversions.h" | 7 #include "base/strings/sys_string_conversions.h" |
8 #include "chrome/browser/ui/autofill/autofill_dialog_models.h" | 8 #include "chrome/browser/ui/autofill/autofill_dialog_models.h" |
9 #include "chrome/browser/ui/autofill/autofill_dialog_types.h" | 9 #include "chrome/browser/ui/autofill/autofill_dialog_types.h" |
10 #include "chrome/browser/ui/autofill/card_unmask_prompt_controller.h" | 10 #include "chrome/browser/ui/autofill/card_unmask_prompt_controller.h" |
11 #include "chrome/browser/ui/chrome_style.h" | 11 #include "chrome/browser/ui/chrome_style.h" |
12 #import "chrome/browser/ui/cocoa/autofill/autofill_textfield.h" | |
12 #import "chrome/browser/ui/cocoa/autofill/autofill_tooltip_controller.h" | 13 #import "chrome/browser/ui/cocoa/autofill/autofill_tooltip_controller.h" |
13 #include "chrome/browser/ui/cocoa/autofill/card_unmask_prompt_view_bridge.h" | 14 #include "chrome/browser/ui/cocoa/autofill/card_unmask_prompt_view_bridge.h" |
14 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" | 15 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" |
15 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_control_u tils.h" | 16 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_control_u tils.h" |
16 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" | 17 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" |
17 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" | 18 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" |
18 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h" | 19 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h" |
19 #import "chrome/browser/ui/cocoa/l10n_util.h" | 20 #import "chrome/browser/ui/cocoa/l10n_util.h" |
20 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
21 #include "grit/theme_resources.h" | 22 #include "grit/theme_resources.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 #pragma mark CardUnmaskPromptViewCocoa | 123 #pragma mark CardUnmaskPromptViewCocoa |
123 | 124 |
124 @implementation CardUnmaskPromptViewCocoa { | 125 @implementation CardUnmaskPromptViewCocoa { |
125 base::scoped_nsobject<NSBox> permanentErrorBox_; | 126 base::scoped_nsobject<NSBox> permanentErrorBox_; |
126 base::scoped_nsobject<NSView> inputRowView_; | 127 base::scoped_nsobject<NSView> inputRowView_; |
127 base::scoped_nsobject<NSView> storageView_; | 128 base::scoped_nsobject<NSView> storageView_; |
128 | 129 |
129 base::scoped_nsobject<NSTextField> titleLabel_; | 130 base::scoped_nsobject<NSTextField> titleLabel_; |
130 base::scoped_nsobject<NSTextField> permanentErrorLabel_; | 131 base::scoped_nsobject<NSTextField> permanentErrorLabel_; |
131 base::scoped_nsobject<NSTextField> instructionsLabel_; | 132 base::scoped_nsobject<NSTextField> instructionsLabel_; |
132 base::scoped_nsobject<NSTextField> cvcInput_; | 133 base::scoped_nsobject<AutofillTextField> cvcInput_; |
133 base::scoped_nsobject<NSPopUpButton> monthPopup_; | 134 base::scoped_nsobject<NSPopUpButton> monthPopup_; |
134 base::scoped_nsobject<NSPopUpButton> yearPopup_; | 135 base::scoped_nsobject<NSPopUpButton> yearPopup_; |
135 base::scoped_nsobject<NSButton> cancelButton_; | 136 base::scoped_nsobject<NSButton> cancelButton_; |
136 base::scoped_nsobject<NSButton> verifyButton_; | 137 base::scoped_nsobject<NSButton> verifyButton_; |
137 base::scoped_nsobject<NSButton> storageCheckbox_; | 138 base::scoped_nsobject<NSButton> storageCheckbox_; |
138 base::scoped_nsobject<AutofillTooltipController> storageTooltip_; | 139 base::scoped_nsobject<AutofillTooltipController> storageTooltip_; |
139 base::scoped_nsobject<NSTextField> errorLabel_; | 140 base::scoped_nsobject<NSTextField> errorLabel_; |
140 base::scoped_nsobject<NSTextField> progressOverlayLabel_; | 141 base::scoped_nsobject<NSTextField> progressOverlayLabel_; |
141 | 142 |
142 int monthPopupDefaultIndex_; | 143 int monthPopupDefaultIndex_; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
206 [yearPopup_ setEnabled:enabled]; | 207 [yearPopup_ setEnabled:enabled]; |
207 [storageCheckbox_ setEnabled:enabled]; | 208 [storageCheckbox_ setEnabled:enabled]; |
208 } | 209 } |
209 | 210 |
210 - (void)setRetriableErrorMessage:(const base::string16&)text { | 211 - (void)setRetriableErrorMessage:(const base::string16&)text { |
211 NSAttributedString* attributedString = | 212 NSAttributedString* attributedString = |
212 constrained_window::GetAttributedLabelString( | 213 constrained_window::GetAttributedLabelString( |
213 SysUTF16ToNSString(text), kErrorFontStyle, NSNaturalTextAlignment, | 214 SysUTF16ToNSString(text), kErrorFontStyle, NSNaturalTextAlignment, |
214 NSLineBreakByWordWrapping); | 215 NSLineBreakByWordWrapping); |
215 [errorLabel_ setAttributedStringValue:attributedString]; | 216 [errorLabel_ setAttributedStringValue:attributedString]; |
217 | |
218 // If there is more than one input showing, don't mark anything as | |
219 // invalid since we don't know the location of the problem. | |
220 if (!text.empty() && !bridge_->GetController()->ShouldRequestExpirationDate()) | |
221 [cvcInput_ setValidityMessage:@"invalid"]; | |
bondd
2015/04/01 18:13:14
AutofillTextField only checks this string for leng
groby-ooo-7-16
2015/04/02 22:32:56
I know :)
Check if this is used as a hover messag
| |
222 | |
216 [self performLayoutAndDisplay:YES]; | 223 [self performLayoutAndDisplay:YES]; |
217 } | 224 } |
218 | 225 |
219 - (void)setPermanentErrorMessage:(const base::string16&)text { | 226 - (void)setPermanentErrorMessage:(const base::string16&)text { |
220 if (!text.empty()) { | 227 if (!text.empty()) { |
221 if (!permanentErrorBox_) { | 228 if (!permanentErrorBox_) { |
222 permanentErrorBox_.reset([[NSBox alloc] initWithFrame:NSZeroRect]); | 229 permanentErrorBox_.reset([[NSBox alloc] initWithFrame:NSZeroRect]); |
223 [permanentErrorBox_ setBoxType:NSBoxCustom]; | 230 [permanentErrorBox_ setBoxType:NSBoxCustom]; |
224 [permanentErrorBox_ setBorderType:NSNoBorder]; | 231 [permanentErrorBox_ setBorderType:NSNoBorder]; |
225 [permanentErrorBox_ setTitlePosition:NSNoTitle]; | 232 [permanentErrorBox_ setTitlePosition:NSNoTitle]; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 [self setRetriableErrorMessage: | 294 [self setRetriableErrorMessage: |
288 l10n_util::GetStringUTF16( | 295 l10n_util::GetStringUTF16( |
289 IDS_AUTOFILL_CARD_UNMASK_INVALID_EXPIRATION_DATE)]; | 296 IDS_AUTOFILL_CARD_UNMASK_INVALID_EXPIRATION_DATE)]; |
290 } | 297 } |
291 | 298 |
292 [self updateVerifyButtonEnabled]; | 299 [self updateVerifyButtonEnabled]; |
293 } | 300 } |
294 | 301 |
295 // Called when text in CVC input field changes. | 302 // Called when text in CVC input field changes. |
296 - (void)controlTextDidChange:(NSNotification*)notification { | 303 - (void)controlTextDidChange:(NSNotification*)notification { |
304 if (bridge_->GetController()->InputCvcIsValid( | |
305 base::SysNSStringToUTF16([cvcInput_ stringValue]))) | |
306 [cvcInput_ setValidityMessage:@""]; | |
307 | |
297 [self updateVerifyButtonEnabled]; | 308 [self updateVerifyButtonEnabled]; |
298 } | 309 } |
299 | 310 |
300 - (base::scoped_nsobject<NSView>)createStorageViewWithController: | 311 - (base::scoped_nsobject<NSView>)createStorageViewWithController: |
301 (autofill::CardUnmaskPromptController*)controller { | 312 (autofill::CardUnmaskPromptController*)controller { |
302 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]); | 313 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]); |
303 | 314 |
304 // Add "Store card on this device" checkbox. | 315 // Add "Store card on this device" checkbox. |
305 storageCheckbox_.reset([[NSButton alloc] initWithFrame:NSZeroRect]); | 316 storageCheckbox_.reset([[NSButton alloc] initWithFrame:NSZeroRect]); |
306 [storageCheckbox_ setButtonType:NSSwitchButton]; | 317 [storageCheckbox_ setButtonType:NSSwitchButton]; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
489 setFrameOrigin:NSMakePoint(NSMaxX([monthPopup_ frame]) + kButtonGap, | 500 setFrameOrigin:NSMakePoint(NSMaxX([monthPopup_ frame]) + kButtonGap, |
490 0)]; | 501 0)]; |
491 NSRect expirationFrame = | 502 NSRect expirationFrame = |
492 NSUnionRect([monthPopup_ frame], [yearPopup_ frame]); | 503 NSUnionRect([monthPopup_ frame], [yearPopup_ frame]); |
493 expirationFrame.size.width += kButtonGap; | 504 expirationFrame.size.width += kButtonGap; |
494 [expirationView setFrame:expirationFrame]; | 505 [expirationView setFrame:expirationFrame]; |
495 [inputRowView_ addSubview:expirationView]; | 506 [inputRowView_ addSubview:expirationView]; |
496 } | 507 } |
497 | 508 |
498 // Add CVC text input. | 509 // Add CVC text input. |
499 cvcInput_.reset([[NSTextField alloc] initWithFrame:NSZeroRect]); | 510 cvcInput_.reset([[AutofillTextField alloc] initWithFrame:NSZeroRect]); |
500 [[cvcInput_ cell] | 511 [[cvcInput_ cell] |
501 setPlaceholderString:l10n_util::GetNSString( | 512 setPlaceholderString:l10n_util::GetNSString( |
502 IDS_AUTOFILL_DIALOG_PLACEHOLDER_CVC)]; | 513 IDS_AUTOFILL_DIALOG_PLACEHOLDER_CVC)]; |
503 [[cvcInput_ cell] setScrollable:YES]; | 514 [[cvcInput_ cell] setScrollable:YES]; |
504 [cvcInput_ setDelegate:self]; | 515 [cvcInput_ setDelegate:self]; |
505 [cvcInput_ sizeToFit]; | 516 [cvcInput_ sizeToFit]; |
506 [cvcInput_ setFrame:NSMakeRect(NSMaxX([expirationView frame]), 0, | 517 [cvcInput_ setFrame:NSMakeRect(NSMaxX([expirationView frame]), 0, |
507 kCvcInputWidth, NSHeight([cvcInput_ frame]))]; | 518 kCvcInputWidth, NSHeight([cvcInput_ frame]))]; |
508 [inputRowView_ addSubview:cvcInput_]; | 519 [inputRowView_ addSubview:cvcInput_]; |
509 | 520 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
549 | 560 |
550 // Layout inputRowView_. | 561 // Layout inputRowView_. |
551 [CardUnmaskPromptViewCocoa sizeToFitView:inputRowView_]; | 562 [CardUnmaskPromptViewCocoa sizeToFitView:inputRowView_]; |
552 [CardUnmaskPromptViewCocoa verticallyCenterSubviewsInView:inputRowView_]; | 563 [CardUnmaskPromptViewCocoa verticallyCenterSubviewsInView:inputRowView_]; |
553 | 564 |
554 [self setView:mainView]; | 565 [self setView:mainView]; |
555 [self performLayoutAndDisplay:NO]; | 566 [self performLayoutAndDisplay:NO]; |
556 } | 567 } |
557 | 568 |
558 @end | 569 @end |
OLD | NEW |