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

Side by Side Diff: third_party/WebKit/Source/core/dom/Element.cpp

Issue 2362223002: Stop clamping tabIndex to short range (Closed)
Patch Set: Fix test expectation Created 4 years, 2 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
8 * All rights reserved. 8 * All rights reserved.
9 * (C) 2007 Eric Seidel (eric@webkit.org) 9 * (C) 2007 Eric Seidel (eric@webkit.org)
10 * 10 *
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 if (!hasRareData()) 210 if (!hasRareData())
211 return; 211 return;
212 elementRareData()->clearElementFlag(mask); 212 elementRareData()->clearElementFlag(mask);
213 } 213 }
214 214
215 void Element::clearTabIndexExplicitlyIfNeeded() { 215 void Element::clearTabIndexExplicitlyIfNeeded() {
216 if (hasRareData()) 216 if (hasRareData())
217 elementRareData()->clearTabIndexExplicitly(); 217 elementRareData()->clearTabIndexExplicitly();
218 } 218 }
219 219
220 void Element::setTabIndexExplicitly(short tabIndex) { 220 void Element::setTabIndexExplicitly(int tabIndex) {
221 ensureElementRareData().setTabIndexExplicitly(tabIndex); 221 ensureElementRareData().setTabIndexExplicitly(tabIndex);
222 } 222 }
223 223
224 void Element::setTabIndex(int value) { 224 void Element::setTabIndex(int value) {
225 setIntegralAttribute(tabindexAttr, value); 225 setIntegralAttribute(tabindexAttr, value);
226 } 226 }
227 227
228 short Element::tabIndex() const { 228 int Element::tabIndex() const {
229 return hasRareData() ? elementRareData()->tabIndex() : 0; 229 return hasRareData() ? elementRareData()->tabIndex() : 0;
230 } 230 }
231 231
232 bool Element::layoutObjectIsFocusable() const { 232 bool Element::layoutObjectIsFocusable() const {
233 // Elements in canvas fallback content are not rendered, but they are allowed 233 // Elements in canvas fallback content are not rendered, but they are allowed
234 // to be focusable as long as their canvas is displayed and visible. 234 // to be focusable as long as their canvas is displayed and visible.
235 if (isInCanvasSubtree()) { 235 if (isInCanvasSubtree()) {
236 const HTMLCanvasElement* canvas = 236 const HTMLCanvasElement* canvas =
237 Traversal<HTMLCanvasElement>::firstAncestorOrSelf(*this); 237 Traversal<HTMLCanvasElement>::firstAncestorOrSelf(*this);
238 DCHECK(canvas); 238 DCHECK(canvas);
(...skipping 2187 matching lines...) Expand 10 before | Expand all | Expand 10 after
2426 if (name == tabindexAttr) { 2426 if (name == tabindexAttr) {
2427 int tabindex = 0; 2427 int tabindex = 0;
2428 if (value.isEmpty()) { 2428 if (value.isEmpty()) {
2429 clearTabIndexExplicitlyIfNeeded(); 2429 clearTabIndexExplicitlyIfNeeded();
2430 if (adjustedFocusedElementInTreeScope() == this) { 2430 if (adjustedFocusedElementInTreeScope() == this) {
2431 // We might want to call blur(), but it's dangerous to dispatch 2431 // We might want to call blur(), but it's dangerous to dispatch
2432 // events here. 2432 // events here.
2433 document().setNeedsFocusedElementCheck(); 2433 document().setNeedsFocusedElementCheck();
2434 } 2434 }
2435 } else if (parseHTMLInteger(value, tabindex)) { 2435 } else if (parseHTMLInteger(value, tabindex)) {
2436 // Clamp tabindex to the range of 'short' to match Firefox's behavior. 2436 setTabIndexExplicitly(tabindex);
kochi 2016/10/18 02:37:24 Could you add a comment here for the behavior when
rwlbuis 2016/10/19 00:43:43 Done.
2437 setTabIndexExplicitly(
2438 max(static_cast<int>(std::numeric_limits<short>::min()),
2439 std::min(tabindex,
2440 static_cast<int>(std::numeric_limits<short>::max()))));
2441 } 2437 }
2442 } else if (name == XMLNames::langAttr) { 2438 } else if (name == XMLNames::langAttr) {
2443 pseudoStateChanged(CSSSelector::PseudoLang); 2439 pseudoStateChanged(CSSSelector::PseudoLang);
2444 } 2440 }
2445 } 2441 }
2446 2442
2447 bool Element::parseAttributeName(QualifiedName& out, 2443 bool Element::parseAttributeName(QualifiedName& out,
2448 const AtomicString& namespaceURI, 2444 const AtomicString& namespaceURI,
2449 const AtomicString& qualifiedName, 2445 const AtomicString& qualifiedName,
2450 ExceptionState& exceptionState) { 2446 ExceptionState& exceptionState) {
(...skipping 1631 matching lines...) Expand 10 before | Expand all | Expand 10 after
4082 } 4078 }
4083 4079
4084 DEFINE_TRACE_WRAPPERS(Element) { 4080 DEFINE_TRACE_WRAPPERS(Element) {
4085 if (hasRareData()) { 4081 if (hasRareData()) {
4086 visitor->traceWrappers(elementRareData()); 4082 visitor->traceWrappers(elementRareData());
4087 } 4083 }
4088 ContainerNode::traceWrappers(visitor); 4084 ContainerNode::traceWrappers(visitor);
4089 } 4085 }
4090 4086
4091 } // namespace blink 4087 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698