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

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

Issue 214823011: Autofill/rAc: dispatch "input"/"change" on <input>, <textarea>, and <select> (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: d'oh 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/form_autofill_util.h" 5 #include "components/autofill/content/renderer/form_autofill_util.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 void FillFormField(const FormFieldData& data, 526 void FillFormField(const FormFieldData& data,
527 bool is_initiating_node, 527 bool is_initiating_node,
528 blink::WebFormControlElement* field) { 528 blink::WebFormControlElement* field) {
529 // Nothing to fill. 529 // Nothing to fill.
530 if (data.value.empty()) 530 if (data.value.empty())
531 return; 531 return;
532 532
533 field->setAutofilled(true); 533 field->setAutofilled(true);
534 534
535 WebInputElement* input_element = toWebInputElement(field); 535 WebInputElement* input_element = toWebInputElement(field);
536 if (IsTextInput(input_element) || IsMonthInput(input_element)) { 536 if (IsCheckableElement(input_element)) {
537 // If the maxlength attribute contains a negative value, maxLength() 537 input_element->setChecked(data.is_checked, true);
538 // returns the default maxlength value. 538 } else {
539 input_element->setValue( 539 base::string16 value = data.value;
540 data.value.substr(0, input_element->maxLength()), true); 540 if (IsTextInput(input_element) || IsMonthInput(input_element)) {
541 } else if (IsTextAreaElement(*field) || IsSelectElement(*field)) { 541 // If the maxlength attribute contains a negative value, maxLength()
542 if (field->value() != data.value) { 542 // returns the default maxlength value.
543 field->setValue(data.value); 543 value = value.substr(0, input_element->maxLength());
544 field->dispatchFormControlChangeEvent();
545 } 544 }
546 } else { 545 field->setValue(value, true);
547 DCHECK(IsCheckableElement(input_element));
548 input_element->setChecked(data.is_checked, true);
549 } 546 }
550 547
551 if (is_initiating_node && 548 if (is_initiating_node &&
552 ((IsTextInput(input_element) || IsMonthInput(input_element)) || 549 ((IsTextInput(input_element) || IsMonthInput(input_element)) ||
553 IsTextAreaElement(*field))) { 550 IsTextAreaElement(*field))) {
554 int length = field->value().length(); 551 int length = field->value().length();
555 field->setSelectionRange(length, length); 552 field->setSelectionRange(length, length);
556 // Clear the current IME composition (the underline), if there is one. 553 // Clear the current IME composition (the underline), if there is one.
557 field->document().frame()->unmarkText(); 554 field->document().frame()->unmarkText();
558 } 555 }
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 1171
1175 gfx::RectF GetScaledBoundingBox(float scale, WebFormControlElement* element) { 1172 gfx::RectF GetScaledBoundingBox(float scale, WebFormControlElement* element) {
1176 gfx::Rect bounding_box(element->boundsInViewportSpace()); 1173 gfx::Rect bounding_box(element->boundsInViewportSpace());
1177 return gfx::RectF(bounding_box.x() * scale, 1174 return gfx::RectF(bounding_box.x() * scale,
1178 bounding_box.y() * scale, 1175 bounding_box.y() * scale,
1179 bounding_box.width() * scale, 1176 bounding_box.width() * scale,
1180 bounding_box.height() * scale); 1177 bounding_box.height() * scale);
1181 } 1178 }
1182 1179
1183 } // namespace autofill 1180 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/autofill/autofill_interactive_uitest.cc ('k') | components/autofill/content/renderer/form_cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698