Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(284)

Side by Side Diff: chrome/browser/ui/cocoa/passwords/auto_signin_view_controller.mm

Issue 1645503002: Remove dangling ManagePasswordsBubbleModel pointers. Test that different password bubbles don't pin… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <algorithm> 5 #include <algorithm>
6 6
7 #import "chrome/browser/ui/cocoa/passwords/auto_signin_view_controller.h" 7 #import "chrome/browser/ui/cocoa/passwords/auto_signin_view_controller.h"
8 8
9 #include "base/mac/bind_objc_block.h" 9 #include "base/mac/bind_objc_block.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
11 #include "base/timer/timer.h" 11 #include "base/timer/timer.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/ui/chrome_style.h" 13 #include "chrome/browser/ui/chrome_style.h"
14 #import "chrome/browser/ui/cocoa/passwords/account_avatar_fetcher_manager.h" 14 #import "chrome/browser/ui/cocoa/passwords/account_avatar_fetcher_manager.h"
15 #import "chrome/browser/ui/cocoa/passwords/credential_item_view.h" 15 #import "chrome/browser/ui/cocoa/passwords/credential_item_view.h"
16 #import "chrome/browser/ui/cocoa/passwords/passwords_bubble_utils.h" 16 #import "chrome/browser/ui/cocoa/passwords/passwords_bubble_utils.h"
17 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 17 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
18 #include "grit/generated_resources.h" 18 #include "grit/generated_resources.h"
19 #include "skia/ext/skia_utils_mac.h" 19 #include "skia/ext/skia_utils_mac.h"
20 #include "ui/base/l10n/l10n_util.h" 20 #include "ui/base/l10n/l10n_util.h"
21 #include "ui/base/resource/resource_bundle.h" 21 #include "ui/base/resource/resource_bundle.h"
22 #include "ui/gfx/font_list.h" 22 #include "ui/gfx/font_list.h"
23 23
24 namespace { 24 namespace {
25 const int kAutoSigninToastTimeoutSeconds = 3; 25 const int kAutoSigninToastTimeoutSeconds = 3;
26 } // namespace 26 } // namespace
27 27
28 @interface ManagePasswordsBubbleAutoSigninViewController () < 28 @interface AutoSigninViewController ()<CredentialItemDelegate>
29 CredentialItemDelegate> 29 - (instancetype)
30 - (id)initWithModel:(ManagePasswordsBubbleModel*)model 30 initWithAvatarManager:(AccountAvatarFetcherManager*)avatarManager
31 avatarManager:(AccountAvatarFetcherManager*)avatarManager 31 delegate:(id<BasePasswordsContentViewDelegate>)delegate;
32 delegate:(id<ManagePasswordsBubbleContentViewDelegate>)delegate;
33 @end 32 @end
34 33
35 @implementation ManagePasswordsBubbleAutoSigninViewController 34 @implementation AutoSigninViewController
36 35
37 - (id)initWithModel:(ManagePasswordsBubbleModel*)model 36 - (instancetype)initWithDelegate:
38 delegate:(id<ManagePasswordsBubbleContentViewDelegate>)delegate { 37 (id<BasePasswordsContentViewDelegate>)delegate {
38 auto request_context = delegate.model->GetProfile()->GetRequestContext();
39 base::scoped_nsobject<AccountAvatarFetcherManager> avatarManager( 39 base::scoped_nsobject<AccountAvatarFetcherManager> avatarManager(
40 [[AccountAvatarFetcherManager alloc] 40 [[AccountAvatarFetcherManager alloc]
41 initWithRequestContext:model->GetProfile()->GetRequestContext()]); 41 initWithRequestContext:request_context]);
42 return 42 return [self initWithAvatarManager:avatarManager delegate:delegate];
43 [self initWithModel:model avatarManager:avatarManager delegate:delegate];
44 } 43 }
45 44
46 - (id)initWithModel:(ManagePasswordsBubbleModel*)model 45 - (instancetype)
47 avatarManager:(AccountAvatarFetcherManager*)avatarManager 46 initWithAvatarManager:(AccountAvatarFetcherManager*)avatarManager
48 delegate:(id<ManagePasswordsBubbleContentViewDelegate>)delegate { 47 delegate:(id<BasePasswordsContentViewDelegate>)delegate {
49 if ((self = [super initWithDelegate:delegate])) { 48 if ((self = [super initWithDelegate:delegate])) {
50 model_ = model;
51 avatarManager_.reset([avatarManager retain]); 49 avatarManager_.reset([avatarManager retain]);
52 credentialView_.reset([[CredentialItemView alloc] 50 credentialView_.reset([[CredentialItemView alloc]
53 initWithPasswordForm:model->pending_password() 51 initWithPasswordForm:delegate.model->pending_password()
54 credentialType:password_manager::CredentialType:: 52 credentialType:password_manager::CredentialType::
55 CREDENTIAL_TYPE_PASSWORD 53 CREDENTIAL_TYPE_PASSWORD
56 style:password_manager_mac::CredentialItemStyle:: 54 style:password_manager_mac::CredentialItemStyle::
57 AUTO_SIGNIN 55 AUTO_SIGNIN
58 delegate:self]); 56 delegate:self]);
59 timer_.reset(new base::Timer(false, false)); 57 timer_.reset(new base::Timer(false, false));
60 __block ManagePasswordsBubbleAutoSigninViewController* weakSelf = self; 58 __block AutoSigninViewController* weakSelf = self;
61 timer_->Start(FROM_HERE, 59 timer_->Start(FROM_HERE,
62 base::TimeDelta::FromSeconds(kAutoSigninToastTimeoutSeconds), 60 base::TimeDelta::FromSeconds(kAutoSigninToastTimeoutSeconds),
63 base::BindBlock(^{ 61 base::BindBlock(^{
64 // |weakSelf| is still valid. Otherwise the timer would have 62 // |weakSelf| is still valid. Otherwise the timer would have
65 // stopped when it was deleted by [self dealloc]. 63 // stopped when it was deleted by [self dealloc].
66 [weakSelf->delegate_ viewShouldDismiss]; 64 [weakSelf.delegate viewShouldDismiss];
67 })); 65 }));
68 } 66 }
69 return self; 67 return self;
70 } 68 }
71 69
72 - (void)fetchAvatar:(const GURL&)avatarURL forView:(CredentialItemView*)view { 70 - (void)fetchAvatar:(const GURL&)avatarURL forView:(CredentialItemView*)view {
73 [avatarManager_ fetchAvatar:avatarURL forView:view]; 71 [avatarManager_ fetchAvatar:avatarURL forView:view];
74 } 72 }
75 73
76 - (void)loadView { 74 - (void)loadView {
77 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]); 75 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]);
78 const CGFloat kPadding = kFramePadding; 76 const CGFloat kPadding = kFramePadding;
79 [view setFrameSize:NSMakeSize( 77 [view setFrameSize:NSMakeSize(
80 2 * kPadding + NSWidth([credentialView_ frame]), 78 2 * kPadding + NSWidth([credentialView_ frame]),
81 2 * kPadding + NSHeight([credentialView_ frame]))]; 79 2 * kPadding + NSHeight([credentialView_ frame]))];
82 [view addSubview:credentialView_]; 80 [view addSubview:credentialView_];
83 [credentialView_ setFrameOrigin:NSMakePoint(kPadding, kPadding)]; 81 [credentialView_ setFrameOrigin:NSMakePoint(kPadding, kPadding)];
84 [self setView:view]; 82 [self setView:view];
85 } 83 }
86 84
87 @end 85 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698