Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/ui/cocoa/profiles/user_manager_mac.h" | 5 #include "chrome/browser/ui/cocoa/profiles/user_manager_mac.h" |
| 6 | 6 |
| 7 #include "base/mac/foundation_util.h" | 7 #include "base/mac/foundation_util.h" |
| 8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
| 9 #import "chrome/browser/app_controller_mac.h" | 9 #import "chrome/browser/app_controller_mac.h" |
| 10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| 11 #include "chrome/browser/profiles/profile_avatar_icon_util.h" | 11 #include "chrome/browser/profiles/profile_avatar_icon_util.h" |
| 12 #include "chrome/browser/profiles/profile_manager.h" | 12 #include "chrome/browser/profiles/profile_manager.h" |
| 13 #include "chrome/browser/profiles/profile_metrics.h" | 13 #include "chrome/browser/profiles/profile_metrics.h" |
| 14 #include "chrome/browser/profiles/profiles_state.h" | 14 #include "chrome/browser/profiles/profiles_state.h" |
| 15 #include "chrome/browser/signin/signin_promo.h" | |
| 15 #include "chrome/browser/ui/browser_dialogs.h" | 16 #include "chrome/browser/ui/browser_dialogs.h" |
| 16 #import "chrome/browser/ui/cocoa/browser_window_utils.h" | 17 #import "chrome/browser/ui/cocoa/browser_window_utils.h" |
| 17 #include "chrome/browser/ui/cocoa/chrome_event_processing_window.h" | 18 #include "chrome/browser/ui/cocoa/chrome_event_processing_window.h" |
| 19 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" | |
| 20 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" | |
| 21 #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h" | |
| 18 #include "chrome/browser/ui/user_manager.h" | 22 #include "chrome/browser/ui/user_manager.h" |
| 19 #include "chrome/grit/chromium_strings.h" | 23 #include "chrome/grit/chromium_strings.h" |
| 24 #include "components/web_modal/web_contents_modal_dialog_host.h" | |
| 25 #include "components/web_modal/web_contents_modal_dialog_manager.h" | |
| 26 #include "components/web_modal/web_contents_modal_dialog_manager_delegate.h" | |
| 20 #include "content/public/browser/native_web_keyboard_event.h" | 27 #include "content/public/browser/native_web_keyboard_event.h" |
| 21 #include "content/public/browser/render_widget_host_view.h" | 28 #include "content/public/browser/render_widget_host_view.h" |
| 22 #include "content/public/browser/web_contents.h" | 29 #include "content/public/browser/web_contents.h" |
| 23 #include "content/public/browser/web_contents_delegate.h" | 30 #include "content/public/browser/web_contents_delegate.h" |
| 24 #include "ui/base/l10n/l10n_util_mac.h" | 31 #include "ui/base/l10n/l10n_util_mac.h" |
| 25 #include "ui/events/keycodes/keyboard_codes.h" | 32 #include "ui/events/keycodes/keyboard_codes.h" |
| 26 | 33 |
| 27 namespace { | 34 namespace { |
| 28 | 35 |
| 29 // Update the App Controller with a new Profile. Used when a Profile is locked | 36 // Update the App Controller with a new Profile. Used when a Profile is locked |
| 30 // to set the Controller to the Guest profile so the old Profile's bookmarks, | 37 // to set the Controller to the Guest profile so the old Profile's bookmarks, |
| 31 // etc... cannot be accessed. | 38 // etc... cannot be accessed. |
| 32 void ChangeAppControllerForProfile(Profile* profile, | 39 void ChangeAppControllerForProfile(Profile* profile, |
| 33 Profile::CreateStatus status) { | 40 Profile::CreateStatus status) { |
| 34 if (status == Profile::CREATE_STATUS_INITIALIZED) { | 41 if (status == Profile::CREATE_STATUS_INITIALIZED) { |
| 35 AppController* controller = | 42 AppController* controller = |
| 36 base::mac::ObjCCast<AppController>([NSApp delegate]); | 43 base::mac::ObjCCast<AppController>([NSApp delegate]); |
| 37 [controller windowChangedToProfile:profile]; | 44 [controller windowChangedToProfile:profile]; |
| 38 } | 45 } |
| 39 } | 46 } |
| 40 | 47 |
| 41 } // namespace | 48 } // namespace |
| 42 | 49 |
| 43 // An open User Manager window. There can only be one open at a time. This | 50 // An open User Manager window. There can only be one open at a time. This |
| 44 // is reset to NULL when the window is closed. | 51 // is reset to NULL when the window is closed. |
| 45 UserManagerMac* instance_ = NULL; // Weak. | 52 UserManagerMac* instance_ = NULL; // Weak. |
| 46 BOOL instance_under_construction_ = NO; | 53 BOOL instance_under_construction_ = NO; |
| 47 | 54 |
| 55 void CloseInstanceReauthDialog() { | |
| 56 DCHECK(instance_); | |
| 57 instance_->CloseReauthDialog(); | |
| 58 } | |
| 59 | |
| 60 // The modal dialog host the User Manager uses to display the reauth dialog. | |
| 61 class UserManagerModalHost : public web_modal::WebContentsModalDialogHost { | |
| 62 public: | |
| 63 UserManagerModalHost(gfx::NativeView host_view) | |
| 64 : host_view_(host_view) {} | |
| 65 | |
| 66 gfx::Size GetMaximumDialogSize() override { | |
| 67 return gfx::Size( | |
| 68 UserManager::kReauthDialogWidth, UserManager::kReauthDialogHeight); | |
| 69 } | |
| 70 | |
| 71 ~UserManagerModalHost() override {} | |
| 72 | |
| 73 gfx::NativeView GetHostView() const override { | |
| 74 return host_view_; | |
| 75 } | |
| 76 | |
| 77 gfx::Point GetDialogPosition(const gfx::Size& size) override { | |
| 78 return gfx::Point(0, 0); | |
| 79 } | |
| 80 | |
| 81 void AddObserver(web_modal::ModalDialogHostObserver* observer) override {} | |
| 82 void RemoveObserver(web_modal::ModalDialogHostObserver* observer) override {} | |
| 83 | |
| 84 private: | |
| 85 gfx::NativeView host_view_; | |
| 86 }; | |
| 87 | |
| 88 // The modal manager delegate allowing the display of constrained windows for | |
| 89 // the reauth dialog. | |
| 90 class UserManagerModalManagerDelegate : | |
| 91 public web_modal::WebContentsModalDialogManagerDelegate { | |
| 92 public: | |
| 93 UserManagerModalManagerDelegate(gfx::NativeView host_view) { | |
| 94 modal_host_.reset(new UserManagerModalHost(host_view)); | |
| 95 } | |
| 96 | |
| 97 web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost() | |
| 98 override { | |
| 99 return modal_host_.get(); | |
| 100 } | |
| 101 | |
| 102 bool IsWebContentsVisible(content::WebContents* web_contents) override { | |
| 103 return true; | |
| 104 } | |
| 105 | |
| 106 ~UserManagerModalManagerDelegate() override {} | |
| 107 protected: | |
| 108 scoped_ptr<UserManagerModalHost> modal_host_; | |
| 109 }; | |
| 110 | |
| 48 // Custom WebContentsDelegate that allows handling of hotkeys. | 111 // Custom WebContentsDelegate that allows handling of hotkeys. |
| 49 class UserManagerWebContentsDelegate : public content::WebContentsDelegate { | 112 class UserManagerWebContentsDelegate : public content::WebContentsDelegate { |
| 50 public: | 113 public: |
| 51 UserManagerWebContentsDelegate() {} | 114 UserManagerWebContentsDelegate() {} |
| 52 | 115 |
| 53 // WebContentsDelegate implementation. Forwards all unhandled keyboard events | 116 // WebContentsDelegate implementation. Forwards all unhandled keyboard events |
| 54 // to the current window. | 117 // to the current window. |
| 55 void HandleKeyboardEvent( | 118 void HandleKeyboardEvent( |
| 56 content::WebContents* source, | 119 content::WebContents* source, |
| 57 const content::NativeWebKeyboardEvent& event) override { | 120 const content::NativeWebKeyboardEvent& event) override { |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 68 event.windowsKeyCode == ui::VKEY_V); | 131 event.windowsKeyCode == ui::VKEY_V); |
| 69 | 132 |
| 70 // Only handle close window Chrome accelerators and text editing ones. | 133 // Only handle close window Chrome accelerators and text editing ones. |
| 71 if (chromeCommandId == IDC_CLOSE_WINDOW || chromeCommandId == IDC_EXIT || | 134 if (chromeCommandId == IDC_CLOSE_WINDOW || chromeCommandId == IDC_EXIT || |
| 72 isTextEditingCommand) { | 135 isTextEditingCommand) { |
| 73 [[NSApp mainMenu] performKeyEquivalent:event.os_event]; | 136 [[NSApp mainMenu] performKeyEquivalent:event.os_event]; |
| 74 } | 137 } |
| 75 } | 138 } |
| 76 }; | 139 }; |
| 77 | 140 |
| 141 class ReauthDialogDelegate : public UserManager::ReauthDialogObserver, | |
| 142 public UserManagerWebContentsDelegate, | |
| 143 public ConstrainedWindowMacDelegate { | |
| 144 public: | |
| 145 ReauthDialogDelegate(content::WebContents* web_contents, std::string email) | |
| 146 : UserManager::ReauthDialogObserver(web_contents, email) {} | |
| 147 | |
| 148 // UserManager::ReauthDialogObserver: | |
| 149 void CloseReauthDialog() override { | |
| 150 CloseInstanceReauthDialog(); | |
| 151 } | |
| 152 | |
| 153 // ConstrainedWindowMacDelegate: | |
| 154 void OnConstrainedWindowClosed(ConstrainedWindowMac* window) override { | |
| 155 CloseReauthDialog(); | |
| 156 } | |
| 157 | |
| 158 DISALLOW_COPY_AND_ASSIGN(ReauthDialogDelegate); | |
| 159 }; | |
| 160 | |
| 161 // WindowController for the reauth dialog. | |
| 162 @interface ReauthDialogWindowController | |
| 163 : NSWindowController <NSWindowDelegate> { | |
| 164 @private | |
| 165 std::string emailAddress_; | |
| 166 content::WebContents* webContents_; | |
| 167 scoped_ptr<ReauthDialogDelegate> webContentsDelegate_; | |
| 168 scoped_ptr<ConstrainedWindowMac> constrained_window_; | |
| 169 scoped_ptr<content::WebContents> reauthWebContents_; | |
| 170 } | |
| 171 - (id)initWithProfile:(Profile*)profile | |
| 172 email:(std::string)email | |
| 173 webContents:(content::WebContents*)webContents; | |
| 174 - (void)close; | |
| 175 @end | |
| 176 | |
| 177 @implementation ReauthDialogWindowController | |
| 178 | |
| 179 - (id)initWithProfile:(Profile*)profile | |
| 180 email:(std::string)email | |
| 181 webContents:(content::WebContents*)webContents { | |
| 182 webContents_ = webContents; | |
| 183 emailAddress_ = email; | |
| 184 | |
| 185 NSRect frame = NSMakeRect( | |
| 186 0, 0, UserManager::kReauthDialogWidth, UserManager::kReauthDialogHeight); | |
| 187 base::scoped_nsobject<ConstrainedWindowCustomWindow> window( | |
| 188 [[ConstrainedWindowCustomWindow alloc] initWithContentRect:frame]); | |
| 189 if ((self = [super initWithWindow:window])) { | |
| 190 webContents_ = webContents; | |
| 191 | |
| 192 reauthWebContents_.reset(content::WebContents::Create( | |
| 193 content::WebContents::CreateParams(profile))); | |
| 194 window.get().contentView = reauthWebContents_->GetNativeView(); | |
| 195 webContentsDelegate_.reset( | |
| 196 new ReauthDialogDelegate(reauthWebContents_.get(), emailAddress_)); | |
| 197 reauthWebContents_->SetDelegate(webContentsDelegate_.get()); | |
| 198 | |
| 199 base::scoped_nsobject<CustomConstrainedWindowSheet> sheet( | |
| 200 [[CustomConstrainedWindowSheet alloc] | |
| 201 initWithCustomWindow:[self window]]); | |
| 202 constrained_window_.reset( | |
| 203 new ConstrainedWindowMac( | |
| 204 webContentsDelegate_.get(), webContents_, sheet)); | |
| 205 [window setStyleMask:NSTitledWindowMask | NSClosableWindowMask]; | |
| 206 | |
| 207 // The close button needs to call CloseWebContentsModalDialog() on the | |
| 208 // constrained window isntead of just [window close] so grab a reference to | |
| 209 // it in the title bar and change its action. | |
| 210 auto closeButton = [window standardWindowButton:NSWindowCloseButton]; | |
| 211 [closeButton setTarget:self]; | |
| 212 [closeButton setAction:@selector(closeButtonClicked:)]; | |
| 213 [self show]; | |
| 214 } | |
| 215 | |
| 216 return self; | |
| 217 } | |
| 218 | |
| 219 - (void)show { | |
| 220 GURL url = signin::GetReauthURLWithEmail(emailAddress_); | |
| 221 reauthWebContents_->GetController().LoadURL(url, content::Referrer(), | |
| 222 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, | |
| 223 std::string()); | |
| 224 } | |
| 225 | |
| 226 - (void)closeButtonClicked:(NSButton*)button { | |
| 227 [self close]; | |
| 228 } | |
| 229 | |
| 230 - (void)close { | |
| 231 constrained_window_->CloseWebContentsModalDialog(); | |
| 232 } | |
| 233 | |
| 234 @end | |
| 235 | |
| 78 // Window controller for the User Manager view. | 236 // Window controller for the User Manager view. |
| 79 @interface UserManagerWindowController : NSWindowController <NSWindowDelegate> { | 237 @interface UserManagerWindowController : NSWindowController <NSWindowDelegate> { |
| 80 @private | 238 @private |
| 81 scoped_ptr<content::WebContents> webContents_; | 239 scoped_ptr<content::WebContents> webContents_; |
| 82 scoped_ptr<UserManagerWebContentsDelegate> webContentsDelegate_; | 240 scoped_ptr<UserManagerWebContentsDelegate> webContentsDelegate_; |
| 83 UserManagerMac* userManagerObserver_; // Weak. | 241 UserManagerMac* userManagerObserver_; // Weak. |
| 242 scoped_ptr<UserManagerModalManagerDelegate> modal_manager_delegate_; | |
| 243 base::scoped_nsobject<ReauthDialogWindowController> reauth_window_controller_; | |
| 84 } | 244 } |
| 85 - (void)windowWillClose:(NSNotification*)notification; | 245 - (void)windowWillClose:(NSNotification*)notification; |
| 86 - (void)dealloc; | 246 - (void)dealloc; |
| 87 - (id)initWithProfile:(Profile*)profile | 247 - (id)initWithProfile:(Profile*)profile |
| 88 withObserver:(UserManagerMac*)userManagerObserver; | 248 withObserver:(UserManagerMac*)userManagerObserver; |
| 89 - (void)showURL:(const GURL&)url; | 249 - (void)showURL:(const GURL&)url; |
| 90 - (void)show; | 250 - (void)show; |
| 91 - (void)close; | 251 - (void)close; |
| 92 - (BOOL)isVisible; | 252 - (BOOL)isVisible; |
| 253 - (void)showReauthDialogWithProfile:(Profile*)profile email:(std::string)email; | |
| 254 - (void)closeReauthDialog; | |
| 93 @end | 255 @end |
| 94 | 256 |
| 95 @implementation UserManagerWindowController | 257 @implementation UserManagerWindowController |
| 96 | 258 |
| 97 - (id)initWithProfile:(Profile*)profile | 259 - (id)initWithProfile:(Profile*)profile |
| 98 withObserver:(UserManagerMac*)userManagerObserver { | 260 withObserver:(UserManagerMac*)userManagerObserver { |
| 99 | |
| 100 // Center the window on the screen that currently has focus. | 261 // Center the window on the screen that currently has focus. |
| 101 NSScreen* mainScreen = [NSScreen mainScreen]; | 262 NSScreen* mainScreen = [NSScreen mainScreen]; |
| 102 CGFloat screenHeight = [mainScreen frame].size.height; | 263 CGFloat screenHeight = [mainScreen frame].size.height; |
| 103 CGFloat screenWidth = [mainScreen frame].size.width; | 264 CGFloat screenWidth = [mainScreen frame].size.width; |
| 104 | 265 |
| 105 NSRect contentRect = | 266 NSRect contentRect = |
| 106 NSMakeRect((screenWidth - UserManager::kWindowWidth) / 2, | 267 NSMakeRect((screenWidth - UserManager::kWindowWidth) / 2, |
| 107 (screenHeight - UserManager::kWindowHeight) / 2, | 268 (screenHeight - UserManager::kWindowHeight) / 2, |
| 108 UserManager::kWindowWidth, UserManager::kWindowHeight); | 269 UserManager::kWindowWidth, UserManager::kWindowHeight); |
| 109 ChromeEventProcessingWindow* window = [[ChromeEventProcessingWindow alloc] | 270 ChromeEventProcessingWindow* window = [[ChromeEventProcessingWindow alloc] |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 120 | 281 |
| 121 if ((self = [super initWithWindow:window])) { | 282 if ((self = [super initWithWindow:window])) { |
| 122 userManagerObserver_ = userManagerObserver; | 283 userManagerObserver_ = userManagerObserver; |
| 123 | 284 |
| 124 // Initialize the web view. | 285 // Initialize the web view. |
| 125 webContents_.reset(content::WebContents::Create( | 286 webContents_.reset(content::WebContents::Create( |
| 126 content::WebContents::CreateParams(profile))); | 287 content::WebContents::CreateParams(profile))); |
| 127 window.contentView = webContents_->GetNativeView(); | 288 window.contentView = webContents_->GetNativeView(); |
| 128 webContentsDelegate_.reset(new UserManagerWebContentsDelegate()); | 289 webContentsDelegate_.reset(new UserManagerWebContentsDelegate()); |
| 129 webContents_->SetDelegate(webContentsDelegate_.get()); | 290 webContents_->SetDelegate(webContentsDelegate_.get()); |
| 130 DCHECK(window.contentView); | |
| 131 | 291 |
| 132 [[NSNotificationCenter defaultCenter] | 292 [[NSNotificationCenter defaultCenter] |
| 133 addObserver:self | 293 addObserver:self |
| 134 selector:@selector(windowWillClose:) | 294 selector:@selector(windowWillClose:) |
| 135 name:NSWindowWillCloseNotification | 295 name:NSWindowWillCloseNotification |
| 136 object:self.window]; | 296 object:self.window]; |
| 137 } | 297 } |
| 138 return self; | 298 return self; |
| 139 } | 299 } |
| 140 | 300 |
| 141 - (void)dealloc { | 301 - (void)dealloc { |
| 142 [[NSNotificationCenter defaultCenter] removeObserver:self]; | 302 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| 303 // Remove the ModalDailogManager that's about to be destroyed. | |
| 304 auto manager = web_modal::WebContentsModalDialogManager::FromWebContents( | |
| 305 webContents_.get()); | |
| 306 if (manager) | |
| 307 manager->SetDelegate(nullptr); | |
| 308 | |
| 143 [super dealloc]; | 309 [super dealloc]; |
| 144 } | 310 } |
| 145 | 311 |
| 146 - (void)showURL:(const GURL&)url { | 312 - (void)showURL:(const GURL&)url { |
| 147 webContents_->GetController().LoadURL(url, content::Referrer(), | 313 webContents_->GetController().LoadURL(url, content::Referrer(), |
| 148 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, | 314 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
| 149 std::string()); | 315 std::string()); |
| 150 content::RenderWidgetHostView* rwhv = webContents_->GetRenderWidgetHostView(); | 316 content::RenderWidgetHostView* rwhv = webContents_->GetRenderWidgetHostView(); |
| 151 if (rwhv) | 317 if (rwhv) |
| 152 rwhv->SetBackgroundColor(profiles::kUserManagerBackgroundColor); | 318 rwhv->SetBackgroundColor(profiles::kUserManagerBackgroundColor); |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 176 -(BOOL)isVisible { | 342 -(BOOL)isVisible { |
| 177 return [[self window] isVisible]; | 343 return [[self window] isVisible]; |
| 178 } | 344 } |
| 179 | 345 |
| 180 - (void)windowWillClose:(NSNotification*)notification { | 346 - (void)windowWillClose:(NSNotification*)notification { |
| 181 [[NSNotificationCenter defaultCenter] removeObserver:self]; | 347 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| 182 DCHECK(userManagerObserver_); | 348 DCHECK(userManagerObserver_); |
| 183 userManagerObserver_->WindowWasClosed(); | 349 userManagerObserver_->WindowWasClosed(); |
| 184 } | 350 } |
| 185 | 351 |
| 352 - (void)showReauthDialogWithProfile:(Profile*)profile email:(std::string)email { | |
| 353 // Make sure there's a WebContentsModalDialogManager for this UserManager's | |
| 354 // web contents. | |
| 355 web_modal::WebContentsModalDialogManager::CreateForWebContents( | |
|
groby-ooo-7-16
2015/08/11 21:24:50
I think I've explained things badly :(
AIUI, you
anthonyvd
2015/08/11 21:37:28
This Manager is attached to the UserManager's webC
| |
| 356 webContents_.get()); | |
| 357 modal_manager_delegate_.reset( | |
| 358 new UserManagerModalManagerDelegate([[self window] contentView])); | |
| 359 web_modal::WebContentsModalDialogManager::FromWebContents( | |
| 360 webContents_.get())->SetDelegate(modal_manager_delegate_.get()); | |
| 361 reauth_window_controller_.reset( | |
| 362 [[ReauthDialogWindowController alloc] | |
| 363 initWithProfile:profile | |
| 364 email:email | |
| 365 webContents:webContents_.get()]); | |
| 366 } | |
| 367 | |
| 368 - (void)closeReauthDialog { | |
| 369 [reauth_window_controller_ close]; | |
| 370 } | |
| 371 | |
| 186 @end | 372 @end |
| 187 | 373 |
| 188 | 374 |
| 189 // static | 375 // static |
| 190 void UserManager::Show( | 376 void UserManager::Show( |
| 191 const base::FilePath& profile_path_to_focus, | 377 const base::FilePath& profile_path_to_focus, |
| 192 profiles::UserManagerTutorialMode tutorial_mode, | 378 profiles::UserManagerTutorialMode tutorial_mode, |
| 193 profiles::UserManagerProfileSelected profile_open_action) { | 379 profiles::UserManagerProfileSelected profile_open_action) { |
| 194 DCHECK(profile_path_to_focus != ProfileManager::GetGuestProfilePath()); | 380 DCHECK(profile_path_to_focus != ProfileManager::GetGuestProfilePath()); |
| 195 | 381 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 231 | 417 |
| 232 // static | 418 // static |
| 233 void UserManager::OnUserManagerShown() { | 419 void UserManager::OnUserManagerShown() { |
| 234 if (instance_) | 420 if (instance_) |
| 235 instance_->LogTimeToOpen(); | 421 instance_->LogTimeToOpen(); |
| 236 } | 422 } |
| 237 | 423 |
| 238 // static | 424 // static |
| 239 void UserManager::ShowReauthDialog(content::BrowserContext* browser_context, | 425 void UserManager::ShowReauthDialog(content::BrowserContext* browser_context, |
| 240 const std::string& email) { | 426 const std::string& email) { |
| 241 // TODO(rogerta): See equivalent views implementation in user_manager_view.cc. | 427 DCHECK(instance_); |
| 428 instance_->ShowReauthDialog(browser_context, email); | |
| 429 } | |
| 430 | |
| 431 void UserManagerMac::ShowReauthDialog(content::BrowserContext* browser_context, | |
| 432 const std::string& email) { | |
| 433 [window_controller_ | |
| 434 showReauthDialogWithProfile:Profile::FromBrowserContext(browser_context) | |
| 435 email:email]; | |
| 436 } | |
| 437 | |
| 438 void UserManagerMac::CloseReauthDialog() { | |
| 439 [window_controller_ closeReauthDialog]; | |
| 242 } | 440 } |
| 243 | 441 |
| 244 UserManagerMac::UserManagerMac(Profile* profile) { | 442 UserManagerMac::UserManagerMac(Profile* profile) { |
| 245 window_controller_.reset([[UserManagerWindowController alloc] | 443 window_controller_.reset([[UserManagerWindowController alloc] |
| 246 initWithProfile:profile withObserver:this]); | 444 initWithProfile:profile withObserver:this]); |
| 247 } | 445 } |
| 248 | 446 |
| 249 UserManagerMac::~UserManagerMac() { | 447 UserManagerMac::~UserManagerMac() { |
| 250 } | 448 } |
| 251 | 449 |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 263 void UserManagerMac::LogTimeToOpen() { | 461 void UserManagerMac::LogTimeToOpen() { |
| 264 if (user_manager_started_showing_ == base::Time()) | 462 if (user_manager_started_showing_ == base::Time()) |
| 265 return; | 463 return; |
| 266 | 464 |
| 267 ProfileMetrics::LogTimeToOpenUserManager( | 465 ProfileMetrics::LogTimeToOpenUserManager( |
| 268 base::Time::Now() - user_manager_started_showing_); | 466 base::Time::Now() - user_manager_started_showing_); |
| 269 user_manager_started_showing_ = base::Time(); | 467 user_manager_started_showing_ = base::Time(); |
| 270 } | 468 } |
| 271 | 469 |
| 272 void UserManagerMac::WindowWasClosed() { | 470 void UserManagerMac::WindowWasClosed() { |
| 471 CloseReauthDialog(); | |
| 273 instance_ = NULL; | 472 instance_ = NULL; |
| 274 delete this; | 473 delete this; |
| 275 } | 474 } |
| OLD | NEW |