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

Side by Side Diff: Source/core/html/HTMLSelectElement.cpp

Issue 597853004: Revert of Turn off autofill highlight when changing option in an autofilled <select> element (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 6 years, 3 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
« no previous file with comments | « Source/core/html/HTMLSelectElement.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 , m_typeAhead(this) 75 , m_typeAhead(this)
76 , m_size(0) 76 , m_size(0)
77 , m_lastOnChangeIndex(-1) 77 , m_lastOnChangeIndex(-1)
78 , m_activeSelectionAnchorIndex(-1) 78 , m_activeSelectionAnchorIndex(-1)
79 , m_activeSelectionEndIndex(-1) 79 , m_activeSelectionEndIndex(-1)
80 , m_isProcessingUserDrivenChange(false) 80 , m_isProcessingUserDrivenChange(false)
81 , m_multiple(false) 81 , m_multiple(false)
82 , m_activeSelectionState(false) 82 , m_activeSelectionState(false)
83 , m_shouldRecalcListItems(false) 83 , m_shouldRecalcListItems(false)
84 , m_suggestedIndex(-1) 84 , m_suggestedIndex(-1)
85 , m_isAutofilledByPreview(false)
86 { 85 {
87 } 86 }
88 87
89 PassRefPtrWillBeRawPtr<HTMLSelectElement> HTMLSelectElement::create(Document& do cument) 88 PassRefPtrWillBeRawPtr<HTMLSelectElement> HTMLSelectElement::create(Document& do cument)
90 { 89 {
91 RefPtrWillBeRawPtr<HTMLSelectElement> select = adoptRefWillBeNoop(new HTMLSe lectElement(document, 0)); 90 RefPtrWillBeRawPtr<HTMLSelectElement> select = adoptRefWillBeNoop(new HTMLSe lectElement(document, 0));
92 select->ensureUserAgentShadowRoot(); 91 select->ensureUserAgentShadowRoot();
93 return select.release(); 92 return select.release();
94 } 93 }
95 94
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 break; 262 break;
264 optionIndex++; 263 optionIndex++;
265 } 264 }
266 } 265 }
267 if (optionIndex >= static_cast<int>(items.size())) 266 if (optionIndex >= static_cast<int>(items.size()))
268 optionIndex = -1; 267 optionIndex = -1;
269 } 268 }
270 269
271 int previousSelectedIndex = selectedIndex(); 270 int previousSelectedIndex = selectedIndex();
272 setSuggestedIndex(-1); 271 setSuggestedIndex(-1);
273 if (m_isAutofilledByPreview)
274 setAutofilled(false);
275 setSelectedIndex(optionIndex); 272 setSelectedIndex(optionIndex);
276 273
277 if (sendEvents && previousSelectedIndex != selectedIndex()) { 274 if (sendEvents && previousSelectedIndex != selectedIndex()) {
278 if (usesMenuList()) 275 if (usesMenuList())
279 dispatchInputAndChangeEventForMenuList(false); 276 dispatchInputAndChangeEventForMenuList(false);
280 else 277 else
281 listBoxOnChange(); 278 listBoxOnChange();
282 } 279 }
283 } 280 }
284 281
(...skipping 15 matching lines...) Expand all
300 setSuggestedIndex(-1); 297 setSuggestedIndex(-1);
301 return; 298 return;
302 } 299 }
303 300
304 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& items = listItems( ); 301 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& items = listItems( );
305 unsigned optionIndex = 0; 302 unsigned optionIndex = 0;
306 for (unsigned i = 0; i < items.size(); ++i) { 303 for (unsigned i = 0; i < items.size(); ++i) {
307 if (isHTMLOptionElement(items[i])) { 304 if (isHTMLOptionElement(items[i])) {
308 if (toHTMLOptionElement(items[i])->value() == value) { 305 if (toHTMLOptionElement(items[i])->value() == value) {
309 setSuggestedIndex(optionIndex); 306 setSuggestedIndex(optionIndex);
310 m_isAutofilledByPreview = true;
311 return; 307 return;
312 } 308 }
313 optionIndex++; 309 optionIndex++;
314 } 310 }
315 } 311 }
316 312
317 setSuggestedIndex(-1); 313 setSuggestedIndex(-1);
318 } 314 }
319 315
320 bool HTMLSelectElement::isPresentationAttribute(const QualifiedName& name) const 316 bool HTMLSelectElement::isPresentationAttribute(const QualifiedName& name) const
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 setAutofilled(false); 917 setAutofilled(false);
922 } 918 }
923 919
924 void HTMLSelectElement::selectOption(int optionIndex, SelectOptionFlags flags) 920 void HTMLSelectElement::selectOption(int optionIndex, SelectOptionFlags flags)
925 { 921 {
926 bool shouldDeselect = !m_multiple || (flags & DeselectOtherOptions); 922 bool shouldDeselect = !m_multiple || (flags & DeselectOtherOptions);
927 923
928 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& items = listItems( ); 924 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& items = listItems( );
929 int listIndex = optionToListIndex(optionIndex); 925 int listIndex = optionToListIndex(optionIndex);
930 926
931 if (selectedIndex() != optionIndex && this->isAutofilled())
932 setAutofilled(false);
933
934 HTMLElement* element = 0; 927 HTMLElement* element = 0;
935 if (listIndex >= 0) { 928 if (listIndex >= 0) {
936 element = items[listIndex]; 929 element = items[listIndex];
937 if (isHTMLOptionElement(*element)) { 930 if (isHTMLOptionElement(*element)) {
938 if (m_activeSelectionAnchorIndex < 0 || shouldDeselect) 931 if (m_activeSelectionAnchorIndex < 0 || shouldDeselect)
939 setActiveSelectionAnchorIndex(listIndex); 932 setActiveSelectionAnchorIndex(listIndex);
940 if (m_activeSelectionEndIndex < 0 || shouldDeselect) 933 if (m_activeSelectionEndIndex < 0 || shouldDeselect)
941 setActiveSelectionEndIndex(listIndex); 934 setActiveSelectionEndIndex(listIndex);
942 toHTMLOptionElement(*element).setSelectedState(true); 935 toHTMLOptionElement(*element).setSelectedState(true);
943 } 936 }
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
1748 int focusedIndex = activeSelectionEndListIndex(); 1741 int focusedIndex = activeSelectionEndListIndex();
1749 if (focusedIndex < 0) 1742 if (focusedIndex < 0)
1750 focusedIndex = firstSelectableListIndex(); 1743 focusedIndex = firstSelectableListIndex();
1751 if (focusedIndex < 0) 1744 if (focusedIndex < 0)
1752 return nullptr; 1745 return nullptr;
1753 HTMLElement* focused = listItems()[focusedIndex]; 1746 HTMLElement* focused = listItems()[focusedIndex];
1754 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr ; 1747 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr ;
1755 } 1748 }
1756 1749
1757 } // namespace 1750 } // namespace
OLDNEW
« no previous file with comments | « Source/core/html/HTMLSelectElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698