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

Side by Side Diff: chrome/browser/password_manager/password_manager_unittest.cc

Issue 19705013: [password autofill] Remove references to PasswordForm from RenderViewImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Callback Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector> 5 #include <vector>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/password_manager/mock_password_store.h" 10 #include "chrome/browser/password_manager/mock_password_store.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 form.password_autocomplete_set = true; 78 form.password_autocomplete_set = true;
79 form.submit_element = ASCIIToUTF16("signIn"); 79 form.submit_element = ASCIIToUTF16("signIn");
80 form.signon_realm = "http://www.google.com"; 80 form.signon_realm = "http://www.google.com";
81 return form; 81 return form;
82 } 82 }
83 83
84 PasswordManager* manager() { 84 PasswordManager* manager() {
85 return PasswordManager::FromWebContents(web_contents()); 85 return PasswordManager::FromWebContents(web_contents());
86 } 86 }
87 87
88 void OnPasswordFormSubmitted(const content::PasswordForm& form) {
89 manager()->OnPasswordFormSubmitted(form);
90 }
91
88 scoped_refptr<MockPasswordStore> store_; 92 scoped_refptr<MockPasswordStore> store_;
89 MockPasswordManagerDelegate delegate_; // Owned by manager_. 93 MockPasswordManagerDelegate delegate_; // Owned by manager_.
90 }; 94 };
91 95
92 MATCHER_P(FormMatches, form, "") { 96 MATCHER_P(FormMatches, form, "") {
93 return form.signon_realm == arg.signon_realm && 97 return form.signon_realm == arg.signon_realm &&
94 form.origin == arg.origin && 98 form.origin == arg.origin &&
95 form.action == arg.action && 99 form.action == arg.action &&
96 form.username_element == arg.username_element && 100 form.username_element == arg.username_element &&
97 form.password_element == arg.password_element && 101 form.password_element == arg.password_element &&
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 std::vector<PasswordForm*> result; // Empty password store. 205 std::vector<PasswordForm*> result; // Empty password store.
202 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0)); 206 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
203 EXPECT_CALL(*store_.get(), GetLogins(_, _)) 207 EXPECT_CALL(*store_.get(), GetLogins(_, _))
204 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1))); 208 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
205 std::vector<PasswordForm> observed; 209 std::vector<PasswordForm> observed;
206 PasswordForm form(MakeSimpleForm()); 210 PasswordForm form(MakeSimpleForm());
207 observed.push_back(form); 211 observed.push_back(form);
208 manager()->OnPasswordFormsParsed(observed); // The initial load. 212 manager()->OnPasswordFormsParsed(observed); // The initial load.
209 manager()->OnPasswordFormsRendered(observed); // The initial layout. 213 manager()->OnPasswordFormsRendered(observed); // The initial layout.
210 214
211 PasswordForm empty_form(form); 215 // No message from the renderer that a password was submitted. No
212 empty_form.username_value = string16(); 216 // expected calls.
213 empty_form.password_value = string16();
214 content::LoadCommittedDetails details;
215 content::FrameNavigateParams params;
216 params.password_form = empty_form;
217 manager()->DidNavigateAnyFrame(details, params);
218
219 // No expected calls.
220 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_)).Times(0); 217 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_)).Times(0);
221 observed.clear(); 218 observed.clear();
222 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. 219 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
223 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. 220 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
224 } 221 }
225 222
226 TEST_F(PasswordManagerTest, FormSubmitAfterNavigateSubframe) { 223 TEST_F(PasswordManagerTest, FormSubmitAfterNavigateSubframe) {
227 // Test that navigating a subframe does not prevent us from showing the save 224 // Test that navigating a subframe does not prevent us from showing the save
228 // password infobar. 225 // password infobar.
229 std::vector<PasswordForm*> result; // Empty password store. 226 std::vector<PasswordForm*> result; // Empty password store.
230 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0)); 227 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
231 EXPECT_CALL(*store_.get(), GetLogins(_, _)) 228 EXPECT_CALL(*store_.get(), GetLogins(_, _))
232 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1))); 229 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
233 std::vector<PasswordForm> observed; 230 std::vector<PasswordForm> observed;
234 PasswordForm form(MakeSimpleForm()); 231 PasswordForm form(MakeSimpleForm());
235 observed.push_back(form); 232 observed.push_back(form);
236 manager()->OnPasswordFormsParsed(observed); // The initial load. 233 manager()->OnPasswordFormsParsed(observed); // The initial load.
237 manager()->OnPasswordFormsRendered(observed); // The initial layout. 234 manager()->OnPasswordFormsRendered(observed); // The initial layout.
238 235
239 // Simulate navigating a sub-frame. 236 // Simulate navigating a sub-frame.
240 content::LoadCommittedDetails details; 237 content::LoadCommittedDetails details;
241 details.is_main_frame = false;
242 content::FrameNavigateParams params; 238 content::FrameNavigateParams params;
243 manager()->DidNavigateAnyFrame(details, params); 239 manager()->DidNavigateAnyFrame(details, params);
244 240
245 // Simulate navigating the real page. 241 // Simulate submitting the password.
246 details.is_main_frame = true; 242 OnPasswordFormSubmitted(form);
247 params.password_form = form;
248 manager()->DidNavigateAnyFrame(details, params);
249 243
250 // Now the password manager waits for the navigation to complete. 244 // Now the password manager waits for the navigation to complete.
251 scoped_ptr<PasswordFormManager> form_to_save; 245 scoped_ptr<PasswordFormManager> form_to_save;
252 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_)) 246 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
253 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save))); 247 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
254 248
255 observed.clear(); 249 observed.clear();
256 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. 250 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
257 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. 251 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
258 252
(...skipping 23 matching lines...) Expand all
282 std::vector<PasswordForm> observed; 276 std::vector<PasswordForm> observed;
283 observed.push_back(first_form); 277 observed.push_back(first_form);
284 manager()->OnPasswordFormsParsed(observed); 278 manager()->OnPasswordFormsParsed(observed);
285 observed.clear(); 279 observed.clear();
286 manager()->OnPasswordFormsRendered(observed); 280 manager()->OnPasswordFormsRendered(observed);
287 281
288 // Now navigate to a second page. 282 // Now navigate to a second page.
289 content::LoadCommittedDetails details; 283 content::LoadCommittedDetails details;
290 details.is_main_frame = true; 284 details.is_main_frame = true;
291 content::FrameNavigateParams params; 285 content::FrameNavigateParams params;
292 manager()->DidNavigateAnyFrame(details, params); 286 manager()->DidNavigateMainFrame(details, params);
293 287
294 // This page contains a form with the same markup, but on a different 288 // This page contains a form with the same markup, but on a different
295 // URL. 289 // URL.
296 observed.push_back(second_form); 290 observed.push_back(second_form);
297 manager()->OnPasswordFormsParsed(observed); 291 manager()->OnPasswordFormsParsed(observed);
298 manager()->OnPasswordFormsRendered(observed); 292 manager()->OnPasswordFormsRendered(observed);
299 293
300 // Now submit this form 294 // Now submit this form
301 params.password_form = second_form; 295 OnPasswordFormSubmitted(second_form);
302 manager()->DidNavigateAnyFrame(details, params);
303 296
304 // Navigation after form submit. 297 // Navigation after form submit.
305 scoped_ptr<PasswordFormManager> form_to_save; 298 scoped_ptr<PasswordFormManager> form_to_save;
306 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_)) 299 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
307 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save))); 300 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
308 observed.clear(); 301 observed.clear();
309 manager()->OnPasswordFormsParsed(observed); 302 manager()->OnPasswordFormsParsed(observed);
310 manager()->OnPasswordFormsRendered(observed); 303 manager()->OnPasswordFormsRendered(observed);
311 304
312 // Make sure that the saved form matches the second form, not the first. 305 // Make sure that the saved form matches the second form, not the first.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // navigation occurs. 461 // navigation occurs.
469 EXPECT_CALL(delegate_, 462 EXPECT_CALL(delegate_,
470 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(0)); 463 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(0));
471 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form))); 464 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form)));
472 465
473 // Now the password manager waits for the navigation to complete. 466 // Now the password manager waits for the navigation to complete.
474 observed.clear(); 467 observed.clear();
475 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. 468 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
476 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. 469 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
477 } 470 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698