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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLSelectElement.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 Nokia Corporation and/or its subsidiary(-ies). 2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
4 * (C) 1999 Antti Koivisto (koivisto@kde.org) 4 * (C) 1999 Antti Koivisto (koivisto@kde.org)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved.
7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
8 * Copyright (C) 2010 Google Inc. All rights reserved. 8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
10 * 10 *
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 // Actual index of option not counting OPTGROUP entries that may be in list. 1096 // Actual index of option not counting OPTGROUP entries that may be in list.
1097 int optionIndex = 0; 1097 int optionIndex = 0;
1098 for (int i = 0; i < listIndex; ++i) { 1098 for (int i = 0; i < listIndex; ++i) {
1099 if (isHTMLOptionElement(*items[i])) 1099 if (isHTMLOptionElement(*items[i]))
1100 ++optionIndex; 1100 ++optionIndex;
1101 } 1101 }
1102 1102
1103 return optionIndex; 1103 return optionIndex;
1104 } 1104 }
1105 1105
1106 void HTMLSelectElement::dispatchFocusEvent(Element* oldFocusedElement, WebFocusT ype type, InputDeviceCapabilities* sourceCapabilities)
1107 {
1108 // Save the selection so it can be compared to the new selection when
1109 // dispatching change events during blur event dispatch.
1110 if (usesMenuList())
1111 saveLastSelection();
1112 HTMLFormControlElementWithState::dispatchFocusEvent(oldFocusedElement, type, sourceCapabilities);
1113 }
1114
1115 void HTMLSelectElement::dispatchBlurEvent(Element* newFocusedElement, WebFocusTy pe type, InputDeviceCapabilities* sourceCapabilities)
1116 {
1117 m_typeAhead.resetSession();
1118 // We only need to fire change events here for menu lists, because we fire
1119 // change events for list boxes whenever the selection change is actually
1120 // made. This matches other browsers' behavior.
1121 if (usesMenuList())
1122 dispatchInputAndChangeEventForMenuList();
1123 m_lastOnChangeSelection.clear();
1124 HTMLFormControlElementWithState::dispatchBlurEvent(newFocusedElement, type, sourceCapabilities);
1125 }
1126
1127 void HTMLSelectElement::deselectItemsWithoutValidation(HTMLElement* excludeEleme nt) 1106 void HTMLSelectElement::deselectItemsWithoutValidation(HTMLElement* excludeEleme nt)
1128 { 1107 {
1129 for (auto& element : listItems()) { 1108 for (auto& element : listItems()) {
1130 if (element != excludeElement && isHTMLOptionElement(*element)) 1109 if (element != excludeElement && isHTMLOptionElement(*element))
1131 toHTMLOptionElement(element)->setSelectedState(false); 1110 toHTMLOptionElement(element)->setSelectedState(false);
1132 } 1111 }
1133 } 1112 }
1134 1113
1135 FormControlState HTMLSelectElement::saveFormControlState() const 1114 FormControlState HTMLSelectElement::saveFormControlState() const
1136 { 1115 {
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after
1982 m_popup->disconnectClient(); 1961 m_popup->disconnectClient();
1983 m_popupIsVisible = false; 1962 m_popupIsVisible = false;
1984 m_popup = nullptr; 1963 m_popup = nullptr;
1985 } 1964 }
1986 1965
1987 void HTMLSelectElement::resetTypeAheadSessionForTesting() 1966 void HTMLSelectElement::resetTypeAheadSessionForTesting()
1988 { 1967 {
1989 m_typeAhead.resetSession(); 1968 m_typeAhead.resetSession();
1990 } 1969 }
1991 1970
1971 void HTMLSelectElement::dispatchFocusEvent(Element* oldFocusedElement, WebFocusT ype type, InputDeviceCapabilities* sourceCapabilities)
1972 {
1973 // Save the selection so it can be compared to the new selection when
1974 // dispatching change events during blur event dispatch.
1975 if (usesMenuList())
1976 saveLastSelection();
1977 HTMLFormControlElementWithState::dispatchFocusEvent(oldFocusedElement, type, sourceCapabilities);
1978 }
1979
1980 void HTMLSelectElement::dispatchBlurEvent(Element* newFocusedElement, WebFocusTy pe type, InputDeviceCapabilities* sourceCapabilities)
1981 {
1982 m_typeAhead.resetSession();
1983 // We only need to fire change events here for menu lists, because we fire
1984 // change events for list boxes whenever the selection change is actually
1985 // made. This matches other browsers' behavior.
1986 if (usesMenuList())
1987 dispatchInputAndChangeEventForMenuList();
1988 m_lastOnChangeSelection.clear();
1989 HTMLFormControlElementWithState::dispatchBlurEvent(newFocusedElement, type, sourceCapabilities);
1990 }
1991
1992 } // namespace blink 1992 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698