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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Issue 786823002: PasswordFormManager takes WeakPtr<PasswordManagerDriver> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: SupportsWeakPtr Created 6 years 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/prefs/pref_service.h" 6 #include "base/prefs/pref_service.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 ManagePasswordsIconMock mock; 113 ManagePasswordsIconMock mock;
114 controller()->UpdateIconAndBubbleState(&mock); 114 controller()->UpdateIconAndBubbleState(&mock);
115 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); 115 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
116 } 116 }
117 117
118 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { 118 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) {
119 password_manager::StubPasswordManagerClient client; 119 password_manager::StubPasswordManagerClient client;
120 password_manager::StubPasswordManagerDriver driver; 120 password_manager::StubPasswordManagerDriver driver;
121 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 121 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
122 new password_manager::PasswordFormManager( 122 new password_manager::PasswordFormManager(
123 NULL, &client, &driver, test_form(), false)); 123 NULL, &client, driver.AsWeakPtr(), test_form(), false));
124 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 124 controller()->OnPasswordSubmitted(test_form_manager.Pass());
125 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE, 125 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE,
126 controller()->state()); 126 controller()->state());
127 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); 127 EXPECT_TRUE(controller()->PasswordPendingUserDecision());
128 128
129 // TODO(mkwst): This should be the value of test_form().origin, but 129 // TODO(mkwst): This should be the value of test_form().origin, but
130 // it's being masked by the stub implementation of 130 // it's being masked by the stub implementation of
131 // ManagePasswordsUIControllerMock::PendingCredentials. 131 // ManagePasswordsUIControllerMock::PendingCredentials.
132 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); 132 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin());
133 133
134 ManagePasswordsIconMock mock; 134 ManagePasswordsIconMock mock;
135 controller()->UpdateIconAndBubbleState(&mock); 135 controller()->UpdateIconAndBubbleState(&mock);
136 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, 136 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
137 mock.state()); 137 mock.state());
138 } 138 }
139 139
140 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) { 140 TEST_F(ManagePasswordsUIControllerTest, PasswordSaved) {
141 password_manager::StubPasswordManagerClient client; 141 password_manager::StubPasswordManagerClient client;
142 password_manager::StubPasswordManagerDriver driver; 142 password_manager::StubPasswordManagerDriver driver;
143 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 143 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
144 new password_manager::PasswordFormManager( 144 new password_manager::PasswordFormManager(
145 NULL, &client, &driver, test_form(), false)); 145 NULL, &client, driver.AsWeakPtr(), test_form(), false));
146 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 146 controller()->OnPasswordSubmitted(test_form_manager.Pass());
147 147
148 ManagePasswordsIconMock mock; 148 ManagePasswordsIconMock mock;
149 controller()->UpdateIconAndBubbleState(&mock); 149 controller()->UpdateIconAndBubbleState(&mock);
150 controller()->SavePassword(); 150 controller()->SavePassword();
151 controller()->UpdateIconAndBubbleState(&mock); 151 controller()->UpdateIconAndBubbleState(&mock);
152 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); 152 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
153 } 153 }
154 154
155 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) { 155 TEST_F(ManagePasswordsUIControllerTest, PasswordBlacklisted) {
156 password_manager::StubPasswordManagerClient client; 156 password_manager::StubPasswordManagerClient client;
157 password_manager::StubPasswordManagerDriver driver; 157 password_manager::StubPasswordManagerDriver driver;
158 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 158 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
159 new password_manager::PasswordFormManager( 159 new password_manager::PasswordFormManager(
160 NULL, &client, &driver, test_form(), false)); 160 NULL, &client, driver.AsWeakPtr(), test_form(), false));
161 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 161 controller()->OnPasswordSubmitted(test_form_manager.Pass());
162 162
163 ManagePasswordsIconMock mock; 163 ManagePasswordsIconMock mock;
164 controller()->UpdateIconAndBubbleState(&mock); 164 controller()->UpdateIconAndBubbleState(&mock);
165 controller()->NeverSavePassword(); 165 controller()->NeverSavePassword();
166 controller()->UpdateIconAndBubbleState(&mock); 166 controller()->UpdateIconAndBubbleState(&mock);
167 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); 167 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state());
168 } 168 }
169 169
170 TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) { 170 TEST_F(ManagePasswordsUIControllerTest, QuickNavigations) {
171 password_manager::StubPasswordManagerClient client; 171 password_manager::StubPasswordManagerClient client;
172 password_manager::StubPasswordManagerDriver driver; 172 password_manager::StubPasswordManagerDriver driver;
173 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 173 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
174 new password_manager::PasswordFormManager( 174 new password_manager::PasswordFormManager(
175 NULL, &client, &driver, test_form(), false)); 175 NULL, &client, driver.AsWeakPtr(), test_form(), false));
176 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 176 controller()->OnPasswordSubmitted(test_form_manager.Pass());
177 ManagePasswordsIconMock mock; 177 ManagePasswordsIconMock mock;
178 controller()->UpdateIconAndBubbleState(&mock); 178 controller()->UpdateIconAndBubbleState(&mock);
179 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, 179 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
180 mock.state()); 180 mock.state());
181 181
182 // Fake-navigate within a second. We expect the bubble's state to persist 182 // Fake-navigate within a second. We expect the bubble's state to persist
183 // if a navigation occurs too quickly for a user to reasonably have been 183 // if a navigation occurs too quickly for a user to reasonably have been
184 // able to interact with the bubble. This happens on `accounts.google.com`, 184 // able to interact with the bubble. This happens on `accounts.google.com`,
185 // for instance. 185 // for instance.
186 scoped_ptr<MockElapsedTimer> timer(new MockElapsedTimer()); 186 scoped_ptr<MockElapsedTimer> timer(new MockElapsedTimer());
187 timer->Advance(kQuickNavigationDelayInMS); 187 timer->Advance(kQuickNavigationDelayInMS);
188 controller()->SetTimer(timer.release()); 188 controller()->SetTimer(timer.release());
189 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), 189 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
190 content::FrameNavigateParams()); 190 content::FrameNavigateParams());
191 controller()->UpdateIconAndBubbleState(&mock); 191 controller()->UpdateIconAndBubbleState(&mock);
192 192
193 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, 193 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
194 mock.state()); 194 mock.state());
195 } 195 }
196 196
197 TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) { 197 TEST_F(ManagePasswordsUIControllerTest, SlowNavigations) {
198 password_manager::StubPasswordManagerClient client; 198 password_manager::StubPasswordManagerClient client;
199 password_manager::StubPasswordManagerDriver driver; 199 password_manager::StubPasswordManagerDriver driver;
200 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 200 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
201 new password_manager::PasswordFormManager( 201 new password_manager::PasswordFormManager(
202 NULL, &client, &driver, test_form(), false)); 202 NULL, &client, driver.AsWeakPtr(), test_form(), false));
203 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 203 controller()->OnPasswordSubmitted(test_form_manager.Pass());
204 ManagePasswordsIconMock mock; 204 ManagePasswordsIconMock mock;
205 controller()->UpdateIconAndBubbleState(&mock); 205 controller()->UpdateIconAndBubbleState(&mock);
206 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, 206 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
207 mock.state()); 207 mock.state());
208 208
209 // Fake-navigate after a second. We expect the bubble's state to be reset 209 // Fake-navigate after a second. We expect the bubble's state to be reset
210 // if a navigation occurs after this limit. 210 // if a navigation occurs after this limit.
211 scoped_ptr<MockElapsedTimer> timer(new MockElapsedTimer()); 211 scoped_ptr<MockElapsedTimer> timer(new MockElapsedTimer());
212 timer->Advance(kSlowNavigationDelayInMS); 212 timer->Advance(kSlowNavigationDelayInMS);
213 controller()->SetTimer(timer.release()); 213 controller()->SetTimer(timer.release());
214 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), 214 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
215 content::FrameNavigateParams()); 215 content::FrameNavigateParams());
216 controller()->UpdateIconAndBubbleState(&mock); 216 controller()->UpdateIconAndBubbleState(&mock);
217 217
218 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state()); 218 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, mock.state());
219 } 219 }
220 220
221 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { 221 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) {
222 // Navigate to a non-webby URL, then see what happens! 222 // Navigate to a non-webby URL, then see what happens!
223 content::WebContentsTester::For(web_contents()) 223 content::WebContentsTester::For(web_contents())
224 ->NavigateAndCommit(GURL("chrome://sign-in")); 224 ->NavigateAndCommit(GURL("chrome://sign-in"));
225 225
226 password_manager::StubPasswordManagerClient client; 226 password_manager::StubPasswordManagerClient client;
227 password_manager::StubPasswordManagerDriver driver; 227 password_manager::StubPasswordManagerDriver driver;
228 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 228 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
229 new password_manager::PasswordFormManager( 229 new password_manager::PasswordFormManager(
230 NULL, &client, &driver, test_form(), false)); 230 NULL, &client, driver.AsWeakPtr(), test_form(), false));
231 controller()->OnPasswordSubmitted(test_form_manager.Pass()); 231 controller()->OnPasswordSubmitted(test_form_manager.Pass());
232 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); 232 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
233 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); 233 EXPECT_FALSE(controller()->PasswordPendingUserDecision());
234 234
235 // TODO(mkwst): This should be the value of test_form().origin, but 235 // TODO(mkwst): This should be the value of test_form().origin, but
236 // it's being masked by the stub implementation of 236 // it's being masked by the stub implementation of
237 // ManagePasswordsUIControllerMock::PendingCredentials. 237 // ManagePasswordsUIControllerMock::PendingCredentials.
238 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); 238 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin());
239 239
240 ManagePasswordsIconMock mock; 240 ManagePasswordsIconMock mock;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 ManagePasswordsIconMock mock; 320 ManagePasswordsIconMock mock;
321 controller()->UpdateIconAndBubbleState(&mock); 321 controller()->UpdateIconAndBubbleState(&mock);
322 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state()); 322 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, mock.state());
323 } 323 }
324 324
325 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { 325 TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) {
326 password_manager::StubPasswordManagerClient client; 326 password_manager::StubPasswordManagerClient client;
327 password_manager::StubPasswordManagerDriver driver; 327 password_manager::StubPasswordManagerDriver driver;
328 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 328 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
329 new password_manager::PasswordFormManager( 329 new password_manager::PasswordFormManager(
330 NULL, &client, &driver, test_form(), false)); 330 NULL, &client, driver.AsWeakPtr(), test_form(), false));
331 331
332 controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); 332 controller()->OnAutomaticPasswordSave(test_form_manager.Pass());
333 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); 333 EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state());
334 334
335 ManagePasswordsIconMock mock; 335 ManagePasswordsIconMock mock;
336 controller()->UpdateIconAndBubbleState(&mock); 336 controller()->UpdateIconAndBubbleState(&mock);
337 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); 337 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state());
338 } 338 }
339 339
340 TEST_F(ManagePasswordsUIControllerTest, ChooseCredential) { 340 TEST_F(ManagePasswordsUIControllerTest, ChooseCredential) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 base::Unretained(this)))); 372 base::Unretained(this))));
373 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, 373 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE,
374 controller()->state()); 374 controller()->state());
375 375
376 controller()->ManagePasswordsUIController::ChooseCredential(false, 376 controller()->ManagePasswordsUIController::ChooseCredential(false,
377 test_form()); 377 test_form());
378 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); 378 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state());
379 ASSERT_TRUE(credential_info()); 379 ASSERT_TRUE(credential_info());
380 EXPECT_EQ(password_manager::CREDENTIAL_TYPE_EMPTY, credential_info()->type); 380 EXPECT_EQ(password_manager::CREDENTIAL_TYPE_EMPTY, credential_info()->type);
381 } 381 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698