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

Side by Side Diff: components/autofill/content/renderer/password_autofill_agent.cc

Issue 184103016: Autofill: Refactoring to support fetching password after a username is selected (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. Created 6 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/content/renderer/password_autofill_agent.h" 5 #include "components/autofill/content/renderer/password_autofill_agent.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(element); 344 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(element);
345 if (iter == login_to_password_info_.end()) 345 if (iter == login_to_password_info_.end())
346 return false; 346 return false;
347 347
348 int win_key_code = event.windowsKeyCode; 348 int win_key_code = event.windowsKeyCode;
349 iter->second.backspace_pressed_last = 349 iter->second.backspace_pressed_last =
350 (win_key_code == ui::VKEY_BACK || win_key_code == ui::VKEY_DELETE); 350 (win_key_code == ui::VKEY_BACK || win_key_code == ui::VKEY_DELETE);
351 return true; 351 return true;
352 } 352 }
353 353
354 bool PasswordAutofillAgent::DidAcceptAutofillSuggestion( 354 bool PasswordAutofillAgent::AcceptAutofillSuggestion(
355 const blink::WebNode& node, 355 const blink::WebNode& node,
356 const blink::WebString& username) { 356 const blink::WebString& username,
357 blink::WebInputElement input; 357 const blink::WebString& password) {
358 PasswordInfo password; 358 blink::WebInputElement username_element;
359 if (!FindLoginInfo(node, &input, &password)) 359 PasswordInfo password_info;
360 if (!FindLoginInfo(node, &username_element, &password_info))
360 return false; 361 return false;
361 362
362 // Set the incoming |username| in the text field and |FillUserNameAndPassword| 363 if (IsElementAutocompletable(username_element) &&
363 // will do the rest. 364 IsElementAutocompletable(password_info.password_field)) {
Ilya Sherman 2014/03/28 21:33:34 nit: I would invert this condition and include an
Patrick Dubroy 2014/04/01 16:08:48 Done.
364 input.setValue(username, true); 365 base::string16 current_username = username_element.value();
365 return FillUserNameAndPassword(&input, &password.password_field, 366 username_element.setValue(username, true);
366 password.fill_data, 367 SetElementAutofilled(&username_element, true);
367 true /* exact_username_match */, 368 username_element.setSelectionRange(current_username.length(),
368 true /* set_selection */); 369 username.length());
370
371 password_info.password_field.setValue(password, true);
372 SetElementAutofilled(&password_info.password_field, true);
373 }
374
375 return true;
369 } 376 }
Ilya Sherman 2014/03/28 21:33:34 Could you please add test coverage for this method
Patrick Dubroy 2014/04/01 16:08:48 Done. In doing so, I did noticed some weird behavi
Garrett Casto 2014/04/01 17:32:21 I think that this was an oversight, but note that
370 377
371 bool PasswordAutofillAgent::DidClearAutofillSelection( 378 bool PasswordAutofillAgent::DidClearAutofillSelection(
372 const blink::WebNode& node) { 379 const blink::WebNode& node) {
373 blink::WebInputElement input; 380 blink::WebInputElement input;
374 PasswordInfo password; 381 PasswordInfo password;
375 return FindLoginInfo(node, &input, &password); 382 return FindLoginInfo(node, &input, &password);
376 } 383 }
377 384
378 bool PasswordAutofillAgent::ShowSuggestions( 385 bool PasswordAutofillAgent::ShowSuggestions(
379 const blink::WebInputElement& element) { 386 const blink::WebInputElement& element) {
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(input); 912 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(input);
906 if (iter == login_to_password_info_.end()) 913 if (iter == login_to_password_info_.end())
907 return false; 914 return false;
908 915
909 *found_input = input; 916 *found_input = input;
910 *found_password = iter->second; 917 *found_password = iter->second;
911 return true; 918 return true;
912 } 919 }
913 920
914 } // namespace autofill 921 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698