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

Side by Side Diff: third_party/WebKit/Source/web/WebFormControlElement.cpp

Issue 1955963002: [Autofill] Send events to fields being autofilled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 void WebFormControlElement::setValue(const WebString& value, bool sendEvents) 90 void WebFormControlElement::setValue(const WebString& value, bool sendEvents)
91 { 91 {
92 if (isHTMLInputElement(*m_private)) 92 if (isHTMLInputElement(*m_private))
93 unwrap<HTMLInputElement>()->setValue(value, sendEvents ? DispatchInputAn dChangeEvent : DispatchNoEvent); 93 unwrap<HTMLInputElement>()->setValue(value, sendEvents ? DispatchInputAn dChangeEvent : DispatchNoEvent);
94 else if (isHTMLTextAreaElement(*m_private)) 94 else if (isHTMLTextAreaElement(*m_private))
95 unwrap<HTMLTextAreaElement>()->setValue(value, sendEvents ? DispatchInpu tAndChangeEvent : DispatchNoEvent); 95 unwrap<HTMLTextAreaElement>()->setValue(value, sendEvents ? DispatchInpu tAndChangeEvent : DispatchNoEvent);
96 else if (isHTMLSelectElement(*m_private)) 96 else if (isHTMLSelectElement(*m_private))
97 unwrap<HTMLSelectElement>()->setValue(value, sendEvents); 97 unwrap<HTMLSelectElement>()->setValue(value, sendEvents);
98 } 98 }
99 99
100 void WebFormControlElement::setAutofillValue(const WebString& value)
101 {
102 // The input and change events will be sent in setValue.
103 if (isHTMLInputElement(*m_private)) {
tkent 2016/05/09 01:54:21 - You can unify HTMLInputElement path and HTMLText
sebsg 2016/05/09 22:19:11 Nice! I merged the calls but kept the if more rest
104 unwrap<HTMLInputElement>()->dispatchFocusEvent(nullptr, WebFocusTypeForw ard, nullptr);
105 unwrap<HTMLInputElement>()->dispatchKeyDownEvent();
106 unwrap<HTMLInputElement>()->setValue(value, DispatchInputAndChangeEvent) ;
107 unwrap<HTMLInputElement>()->dispatchKeyUpEvent();
108 unwrap<HTMLInputElement>()->dispatchBlurEvent(nullptr, WebFocusTypeForwa rd, nullptr);
109 } else if (isHTMLTextAreaElement(*m_private)) {
110 unwrap<HTMLTextAreaElement>()->dispatchFocusEvent(nullptr, WebFocusTypeF orward, nullptr);
111 unwrap<HTMLTextAreaElement>()->dispatchKeyDownEvent();
112 unwrap<HTMLTextAreaElement>()->setValue(value, DispatchInputAndChangeEve nt);
113 unwrap<HTMLTextAreaElement>()->dispatchKeyUpEvent();
114 unwrap<HTMLTextAreaElement>()->dispatchBlurEvent(nullptr, WebFocusTypeFo rward, nullptr);
115 } else if (isHTMLSelectElement(*m_private)) {
116 unwrap<HTMLSelectElement>()->dispatchFocusEvent(nullptr, WebFocusTypeFor ward, nullptr);
117 unwrap<HTMLSelectElement>()->setValue(value, true);
118 unwrap<HTMLSelectElement>()->dispatchBlurEvent(nullptr, WebFocusTypeForw ard, nullptr);
119 }
120 }
121
100 WebString WebFormControlElement::value() const 122 WebString WebFormControlElement::value() const
101 { 123 {
102 if (isHTMLInputElement(*m_private)) 124 if (isHTMLInputElement(*m_private))
103 return constUnwrap<HTMLInputElement>()->value(); 125 return constUnwrap<HTMLInputElement>()->value();
104 if (isHTMLTextAreaElement(*m_private)) 126 if (isHTMLTextAreaElement(*m_private))
105 return constUnwrap<HTMLTextAreaElement>()->value(); 127 return constUnwrap<HTMLTextAreaElement>()->value();
106 if (isHTMLSelectElement(*m_private)) 128 if (isHTMLSelectElement(*m_private))
107 return constUnwrap<HTMLSelectElement>()->value(); 129 return constUnwrap<HTMLSelectElement>()->value();
108 return WebString(); 130 return WebString();
109 } 131 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 m_private = elem; 210 m_private = elem;
189 return *this; 211 return *this;
190 } 212 }
191 213
192 WebFormControlElement::operator HTMLFormControlElement*() const 214 WebFormControlElement::operator HTMLFormControlElement*() const
193 { 215 {
194 return toHTMLFormControlElement(m_private.get()); 216 return toHTMLFormControlElement(m_private.get());
195 } 217 }
196 218
197 } // namespace blink 219 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698