| // 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. |
| |
| #import "chrome/browser/ui/cocoa/one_click_signin_dialog_controller.h" |
| |
| #include "base/bind.h" |
| #include "base/message_loop/message_loop.h" |
| #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h" |
| #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_window.h" |
| #import "chrome/browser/ui/cocoa/one_click_signin_view_controller.h" |
| |
| OneClickSigninDialogController::OneClickSigninDialogController( |
| content::WebContents* web_contents, |
| const BrowserWindow::StartSyncCallback& sync_callback, |
| const base::string16& email) { |
| base::Closure close_callback = base::Bind( |
| &OneClickSigninDialogController::PerformClose, base::Unretained(this)); |
| view_controller_.reset([[OneClickSigninViewController alloc] |
| initWithNibName:@"OneClickSigninDialog" |
| webContents:web_contents |
| syncCallback:sync_callback |
| closeCallback:close_callback |
| isSyncDialog:YES |
| email:email |
| errorMessage:nil]); |
| base::scoped_nsobject<NSWindow> window([[ConstrainedWindowCustomWindow alloc] |
| initWithContentRect:[[view_controller_ view] bounds]]); |
| [[window contentView] addSubview:[view_controller_ view]]; |
| |
| base::scoped_nsobject<CustomConstrainedWindowSheet> sheet( |
| [[CustomConstrainedWindowSheet alloc] initWithCustomWindow:window]); |
| constrained_window_.reset(new ConstrainedWindowMac( |
| this, web_contents, sheet)); |
| } |
| |
| OneClickSigninDialogController::~OneClickSigninDialogController() { |
| } |
| |
| void OneClickSigninDialogController::OnConstrainedWindowClosed( |
| ConstrainedWindowMac* window) { |
| [view_controller_ viewWillClose]; |
| base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
| } |
| |
| void OneClickSigninDialogController::PerformClose() { |
| constrained_window_->CloseWebContentsModalDialog(); |
| } |