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 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
// 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.
#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.h"
#include "base/bind.h"
#include "base/mac/scoped_nsobject.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h"
#import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h"
#import "chrome/browser/ui/cocoa/autofill/autofill_dialog_window_controller.h"
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h"
namespace autofill {
// static
AutofillDialogView* AutofillDialogView::Create(
AutofillDialogViewDelegate* delegate) {
return new AutofillDialogCocoa(delegate);
}
AutofillDialogCocoa::AutofillDialogCocoa(AutofillDialogViewDelegate* delegate)
: delegate_(delegate),
close_weak_ptr_factory_(this) {
}
AutofillDialogCocoa::~AutofillDialogCocoa() {
}
void AutofillDialogCocoa::Show() {
// This should only be called once.
DCHECK(!sheet_delegate_.get());
sheet_delegate_.reset([[AutofillDialogWindowController alloc]
initWithWebContents:delegate_->GetWebContents()
dialog:this]);
base::scoped_nsobject<CustomConstrainedWindowSheet> sheet(
[[CustomConstrainedWindowSheet alloc]
initWithCustomWindow:[sheet_delegate_ window]]);
constrained_window_.reset(
new ConstrainedWindowMac(this, delegate_->GetWebContents(), sheet));
[sheet_delegate_ show];
}
void AutofillDialogCocoa::Hide() {
[sheet_delegate_ hide];
}
void AutofillDialogCocoa::PerformClose() {
if (!close_weak_ptr_factory_.HasWeakPtrs()) {
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&AutofillDialogCocoa::CloseNow,
close_weak_ptr_factory_.GetWeakPtr()));
}
}
void AutofillDialogCocoa::CloseNow() {
constrained_window_->CloseWebContentsModalDialog();
}
void AutofillDialogCocoa::UpdatesStarted() {
}
void AutofillDialogCocoa::UpdatesFinished() {
}
void AutofillDialogCocoa::UpdateAccountChooser() {
[sheet_delegate_ updateAccountChooser];
}
void AutofillDialogCocoa::UpdateButtonStrip() {
[sheet_delegate_ updateButtonStrip];
}
void AutofillDialogCocoa::UpdateOverlay() {
// TODO(estade): only update the overlay.
UpdateButtonStrip();
}
void AutofillDialogCocoa::UpdateDetailArea() {
}
void AutofillDialogCocoa::UpdateForErrors() {
[sheet_delegate_ updateForErrors];
}
void AutofillDialogCocoa::UpdateNotificationArea() {
[sheet_delegate_ updateNotificationArea];
}
void AutofillDialogCocoa::UpdateSection(DialogSection section) {
[sheet_delegate_ updateSection:section];
}
void AutofillDialogCocoa::FillSection(DialogSection section,
ServerFieldType originating_type) {
[sheet_delegate_ fillSection:section forType:originating_type];
}
void AutofillDialogCocoa::GetUserInput(DialogSection section,
FieldValueMap* output) {
[sheet_delegate_ getInputs:output forSection:section];
}
base::string16 AutofillDialogCocoa::GetCvc() {
return base::SysNSStringToUTF16([sheet_delegate_ getCvc]);
}
bool AutofillDialogCocoa::SaveDetailsLocally() {
return [sheet_delegate_ saveDetailsLocally];
}
const content::NavigationController* AutofillDialogCocoa::ShowSignIn(
const GURL& url) {
return [sheet_delegate_ showSignIn:url];
}
void AutofillDialogCocoa::HideSignIn() {
[sheet_delegate_ hideSignIn];
}
void AutofillDialogCocoa::ModelChanged() {
[sheet_delegate_ modelChanged];
}
void AutofillDialogCocoa::UpdateErrorBubble() {
[sheet_delegate_ updateErrorBubble];
}
void AutofillDialogCocoa::OnSignInResize(const gfx::Size& pref_size) {
[sheet_delegate_ onSignInResize:
NSMakeSize(pref_size.width(), pref_size.height())];
}
void AutofillDialogCocoa::ValidateSection(DialogSection section) {
[sheet_delegate_ validateSection:section];
}
void AutofillDialogCocoa::OnConstrainedWindowClosed(
ConstrainedWindowMac* window) {
constrained_window_.reset();
// |this| belongs to |delegate_|, so no self-destruction here.
delegate_->ViewClosed();
}
} // autofill
|