Chromium Code Reviews| Index: chrome/browser/ui/cocoa/autofill/autofill_dialog_view_tester_cocoa.mm | 
| diff --git a/chrome/browser/ui/cocoa/autofill/autofill_dialog_view_tester_cocoa.mm b/chrome/browser/ui/cocoa/autofill/autofill_dialog_view_tester_cocoa.mm | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..06515c5a0cc5ceeb5ba196890f5ce2c1405cbfcf | 
| --- /dev/null | 
| +++ b/chrome/browser/ui/cocoa/autofill/autofill_dialog_view_tester_cocoa.mm | 
| @@ -0,0 +1,137 @@ | 
| +// Copyright (c) 2014 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. | 
| + | 
| +#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_view_tester_cocoa.h" | 
| + | 
| +#include "base/strings/sys_string_conversions.h" | 
| +#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.h" | 
| +#import "chrome/browser/ui/cocoa/autofill/autofill_dialog_window_controller.h" | 
| +#import "chrome/browser/ui/cocoa/autofill/autofill_main_container.h" | 
| +#import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" | 
| +#import "chrome/browser/ui/cocoa/autofill/autofill_sign_in_container.h" | 
| + | 
| + | 
| +// Mirrors the AutofillDialogViewTester API on the C++ side. | 
| +@interface AutofillDialogWindowController (AutofillDialogViewTesterCocoa) | 
| + | 
| +- (void)setTextContents:(NSString*)text | 
| + forType:(autofill::ServerFieldType)type; | 
| +- (void)setTextContents:(NSString*)text | 
| + ofSuggestionForSection:(autofill::DialogSection)section; | 
| +- (void)activateFieldForType:(autofill::ServerFieldType)type; | 
| +- (content::WebContents*)getSignInWebContents; | 
| +- (BOOL)isShowingOverlay; | 
| + | 
| +@end | 
| + | 
| + | 
| +@implementation AutofillDialogWindowController (AutofillDialogViewTesterCocoa) | 
| + | 
| +- (void)setTextContents:(NSString*)text | 
| + forType:(autofill::ServerFieldType)type { | 
| + for (size_t i = autofill::SECTION_MIN; i <= autofill::SECTION_MAX; ++i) { | 
| + autofill::DialogSection section = static_cast<autofill::DialogSection>(i); | 
| + // TODO(groby): Need to find the section for an input directly - wasteful. | 
| + [[mainContainer_ sectionForId:section] setFieldValue:text forType:type]; | 
| + } | 
| +} | 
| + | 
| +- (void)setTextContents:(NSString*)text | 
| + ofSuggestionForSection:(autofill::DialogSection)section { | 
| + [[mainContainer_ sectionForId:section] setSuggestionFieldValue:text]; | 
| +} | 
| + | 
| +- (void)activateFieldForType:(autofill::ServerFieldType)type { | 
| + for (size_t i = autofill::SECTION_MIN; i <= autofill::SECTION_MAX; ++i) { | 
| + autofill::DialogSection section = static_cast<autofill::DialogSection>(i); | 
| + [[mainContainer_ sectionForId:section] activateFieldForType:type]; | 
| + } | 
| +} | 
| + | 
| +- (content::WebContents*)getSignInWebContents { | 
| + return [signInContainer_ webContents]; | 
| +} | 
| + | 
| +- (BOOL)isShowingOverlay { | 
| + return ![[overlayController_ view] isHidden]; | 
| +} | 
| + | 
| +@end | 
| + | 
| +namespace autofill { | 
| + | 
| +scoped_ptr<AutofillDialogViewTester> AutofillDialogViewTester::For( | 
| + AutofillDialogView* dialog) { | 
| + return scoped_ptr<AutofillDialogViewTester>( | 
| + new AutofillDialogViewTesterCocoa( | 
| + static_cast<AutofillDialogCocoa*>(dialog))); | 
| +} | 
| + | 
| +AutofillDialogViewTesterCocoa::AutofillDialogViewTesterCocoa( | 
| + AutofillDialogCocoa* dialog) | 
| + : dialog_(dialog) {} | 
| + | 
| +AutofillDialogViewTesterCocoa::~AutofillDialogViewTesterCocoa() {} | 
| + | 
| +void AutofillDialogViewTesterCocoa::SubmitForTesting() { | 
| + [controller() accept:nil]; | 
| +} | 
| + | 
| +void AutofillDialogViewTesterCocoa::CancelForTesting() { | 
| + [controller() cancel:nil]; | 
| +} | 
| + | 
| +base::string16 AutofillDialogViewTesterCocoa::GetTextContentsOfInput( | 
| + ServerFieldType type) { | 
| + for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) { | 
| + DialogSection section = static_cast<DialogSection>(i); | 
| + FieldValueMap contents; | 
| + [controller() getInputs:&contents forSection:section]; | 
| + FieldValueMap::const_iterator it = contents.find(type); | 
| + if (it != contents.end()) | 
| + return it->second; | 
| + } | 
| + | 
| + NOTREACHED(); | 
| + return base::string16(); | 
| +} | 
| + | 
| +void AutofillDialogViewTesterCocoa::SetTextContentsOfInput( | 
| + ServerFieldType type, | 
| + const base::string16& contents) { | 
| + [controller() setTextContents:base::SysUTF16ToNSString(contents) | 
| + forType:type]; | 
| 
 
Dan Beam
2014/01/28 22:10:35
nit:
[controller() setTextContents:base::SysUTF16
 
 | 
| +} | 
| + | 
| +void AutofillDialogViewTesterCocoa::SetTextContentsOfSuggestionInput( | 
| + DialogSection section, | 
| + const base::string16& text) { | 
| + [controller() setTextContents:base::SysUTF16ToNSString(text) | 
| + ofSuggestionForSection:section]; | 
| 
 
Evan Stade
2014/01/28 22:09:52
is this the correct indent?
 
Dan Beam
2014/01/28 22:10:35
[controller() setTextContents:base::SysUTF16ToNSSt
 
groby-ooo-7-16
2014/01/29 22:10:21
What Dan said. Victim of :s// :)
 
 | 
| +} | 
| + | 
| +void AutofillDialogViewTesterCocoa::ActivateInput(ServerFieldType type) { | 
| + [controller() activateFieldForType:type]; | 
| +} | 
| + | 
| +gfx::Size AutofillDialogViewTesterCocoa::GetSize() const { | 
| + return gfx::Size(NSSizeToCGSize([[controller() window] frame].size)); | 
| +} | 
| + | 
| +content::WebContents* AutofillDialogViewTesterCocoa::GetSignInWebContents() { | 
| + return [controller() getSignInWebContents]; | 
| +} | 
| + | 
| + | 
| 
 
Evan Stade
2014/01/28 22:09:52
^H
 
 | 
| +bool AutofillDialogViewTesterCocoa::IsShowingOverlay() const { | 
| + return [controller() isShowingOverlay]; | 
| +} | 
| + | 
| +AutofillDialogWindowController* | 
| + AutofillDialogViewTesterCocoa::controller() const { | 
| + return dialog_->sheet_delegate_; | 
| +} | 
| + | 
| +} | 
| 
 
Evan Stade
2014/01/28 22:09:52
// namespace autofill
 
Dan Beam
2014/01/28 22:10:35
nit: }  // namespace autofill
 
 | 
| + | 
| 
 
Evan Stade
2014/01/28 22:09:52
^H
 
 |