| // Copyright 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_DIALOG_WINDOW_CONTROLLER_H_ |
| #define CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_DIALOG_WINDOW_CONTROLLER_H_ |
| |
| #import <Cocoa/Cocoa.h> |
| |
| #include "base/mac/scoped_nsobject.h" |
| #include "chrome/browser/ui/autofill/autofill_dialog_types.h" |
| #import "chrome/browser/ui/cocoa/autofill/autofill_layout.h" |
| |
| @class AutofillHeader; |
| @class AutofillLoadingShieldController; |
| @class AutofillMainContainer; |
| @class AutofillOverlayController; |
| @class AutofillSignInContainer; |
| |
| namespace content { |
| class NavigationController; |
| class WebContents; |
| } // content |
| |
| namespace autofill { |
| class AutofillDialogCocoa; |
| } // autofill |
| |
| |
| // Forwarding AutofillDialogView calls. |
| @protocol AutofillDialogBridge |
| |
| - (void)show; |
| - (void)hide; |
| - (void)updateNotificationArea; |
| - (void)updateAccountChooser; |
| - (void)updateButtonStrip; |
| - (void)updateSection:(autofill::DialogSection)section; |
| - (void)updateForErrors; |
| - (void)fillSection:(autofill::DialogSection)section |
| forInput:(const autofill::DetailInput&)input; |
| - (void)getInputs:(autofill::FieldValueMap*)outputs |
| forSection:(autofill::DialogSection)section; |
| - (NSString*)getCvc; |
| - (BOOL)saveDetailsLocally; |
| - (content::NavigationController*)showSignIn; |
| - (void)hideSignIn; |
| - (void)modelChanged; |
| - (void)updateErrorBubble; |
| - (void)onSignInResize:(NSSize)size; |
| |
| @end |
| |
| |
| // Window controller for AutofillDialogView. |
| @interface AutofillDialogWindowController : |
| NSWindowController<NSWindowDelegate, AutofillLayout, AutofillDialogBridge> { |
| @private |
| content::WebContents* webContents_; // weak. |
| autofill::AutofillDialogCocoa* dialog_; // weak. |
| |
| base::scoped_nsobject<AutofillHeader> header_; |
| base::scoped_nsobject<AutofillMainContainer> mainContainer_; |
| base::scoped_nsobject<AutofillSignInContainer> signInContainer_; |
| base::scoped_nsobject<AutofillOverlayController> overlayController_; |
| base::scoped_nsobject<AutofillLoadingShieldController> |
| loadingShieldController_; |
| base::scoped_nsobject<NSTextView> fieldEditor_; |
| } |
| |
| // Designated initializer. The WebContents cannot be NULL. |
| - (id)initWithWebContents:(content::WebContents*)webContents |
| dialog:(autofill::AutofillDialogCocoa*)dialog; |
| |
| // Requests a re-layout for the entire dialog. The layout will be postponed |
| // until the next cycle of the runloop. |
| - (void)requestRelayout; |
| |
| // Validate data. If it is valid, notify the delegate that the user would |
| // like to use the data. |
| - (IBAction)accept:(id)sender; |
| |
| // User canceled the dialog. |
| - (IBAction)cancel:(id)sender; |
| |
| @end |
| |
| |
| // Mirrors the TestableAutofillDialogView API on the C++ side. |
| @interface AutofillDialogWindowController (TestableAutofillDialogView) |
| |
| - (void)setTextContents:(NSString*)text |
| forInput:(const autofill::DetailInput&)input; |
| - (void)setTextContents:(NSString*)text |
| ofSuggestionForSection:(autofill::DialogSection)section; |
| - (void)activateFieldForInput:(const autofill::DetailInput&)input; |
| - (content::WebContents*)getSignInWebContents; |
| - (BOOL)isShowingOverlay; |
| |
| @end |
| |
| #endif // CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_DIALOG_WINDOW_CONTROLLER_H_ |