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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLFormElement.cpp

Issue 2546063002: Rename FormAssociatedElement to ListedElement (Closed)
Patch Set: Rename FormAssociatedElement to ListedElement Created 4 years 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 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
6 * reserved. 6 * reserved.
7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 for (const auto& element : elements) 148 for (const auto& element : elements)
149 element->formRemovedFromTree(root); 149 element->formRemovedFromTree(root);
150 } 150 }
151 151
152 void HTMLFormElement::removedFrom(ContainerNode* insertionPoint) { 152 void HTMLFormElement::removedFrom(ContainerNode* insertionPoint) {
153 // We don't need to take care of form association by 'form' content 153 // We don't need to take care of form association by 'form' content
154 // attribute becuse IdTargetObserver handles it. 154 // attribute becuse IdTargetObserver handles it.
155 if (m_hasElementsAssociatedByParser) { 155 if (m_hasElementsAssociatedByParser) {
156 Node& root = NodeTraversal::highestAncestorOrSelf(*this); 156 Node& root = NodeTraversal::highestAncestorOrSelf(*this);
157 if (!m_associatedElementsAreDirty) { 157 if (!m_associatedElementsAreDirty) {
158 FormAssociatedElement::List elements(associatedElements()); 158 ListedElement::List elements(associatedElements());
159 notifyFormRemovedFromTree(elements, root); 159 notifyFormRemovedFromTree(elements, root);
160 } else { 160 } else {
161 FormAssociatedElement::List elements; 161 ListedElement::List elements;
162 collectAssociatedElements( 162 collectAssociatedElements(
163 NodeTraversal::highestAncestorOrSelf(*insertionPoint), elements); 163 NodeTraversal::highestAncestorOrSelf(*insertionPoint), elements);
164 notifyFormRemovedFromTree(elements, root); 164 notifyFormRemovedFromTree(elements, root);
165 collectAssociatedElements(root, elements); 165 collectAssociatedElements(root, elements);
166 notifyFormRemovedFromTree(elements, root); 166 notifyFormRemovedFromTree(elements, root);
167 } 167 }
168 168
169 if (!m_imageElementsAreDirty) { 169 if (!m_imageElementsAreDirty) {
170 HeapVector<Member<HTMLImageElement>> images(imageElements()); 170 HeapVector<Member<HTMLImageElement>> images(imageElements());
171 notifyFormRemovedFromTree(images, root); 171 notifyFormRemovedFromTree(images, root);
(...skipping 15 matching lines...) Expand all
187 if (event.eventPhase() != Event::kCapturingPhase && targetNode && 187 if (event.eventPhase() != Event::kCapturingPhase && targetNode &&
188 targetNode != this && (event.type() == EventTypeNames::submit || 188 targetNode != this && (event.type() == EventTypeNames::submit ||
189 event.type() == EventTypeNames::reset)) { 189 event.type() == EventTypeNames::reset)) {
190 event.stopPropagation(); 190 event.stopPropagation();
191 return; 191 return;
192 } 192 }
193 HTMLElement::handleLocalEvents(event); 193 HTMLElement::handleLocalEvents(event);
194 } 194 }
195 195
196 unsigned HTMLFormElement::length() const { 196 unsigned HTMLFormElement::length() const {
197 const FormAssociatedElement::List& elements = associatedElements(); 197 const ListedElement::List& elements = associatedElements();
198 unsigned len = 0; 198 unsigned len = 0;
199 for (unsigned i = 0; i < elements.size(); ++i) { 199 for (unsigned i = 0; i < elements.size(); ++i) {
200 if (elements[i]->isEnumeratable()) 200 if (elements[i]->isEnumeratable())
201 ++len; 201 ++len;
202 } 202 }
203 return len; 203 return len;
204 } 204 }
205 205
206 HTMLElement* HTMLFormElement::item(unsigned index) { 206 HTMLElement* HTMLFormElement::item(unsigned index) {
207 return elements()->item(index); 207 return elements()->item(index);
208 } 208 }
209 209
210 void HTMLFormElement::submitImplicitly(Event* event, 210 void HTMLFormElement::submitImplicitly(Event* event,
211 bool fromImplicitSubmissionTrigger) { 211 bool fromImplicitSubmissionTrigger) {
212 int submissionTriggerCount = 0; 212 int submissionTriggerCount = 0;
213 bool seenDefaultButton = false; 213 bool seenDefaultButton = false;
214 const FormAssociatedElement::List& elements = associatedElements(); 214 const ListedElement::List& elements = associatedElements();
215 for (unsigned i = 0; i < elements.size(); ++i) { 215 for (unsigned i = 0; i < elements.size(); ++i) {
216 FormAssociatedElement* formAssociatedElement = elements[i]; 216 ListedElement* ListedElement = elements[i];
tkent 2016/12/02 13:24:37 Rename this variable to listedElement (lower l)
217 if (!formAssociatedElement->isFormControlElement()) 217 if (!ListedElement->isFormControlElement())
218 continue; 218 continue;
219 HTMLFormControlElement* control = 219 HTMLFormControlElement* control = toHTMLFormControlElement(ListedElement);
220 toHTMLFormControlElement(formAssociatedElement);
221 if (!seenDefaultButton && control->canBeSuccessfulSubmitButton()) { 220 if (!seenDefaultButton && control->canBeSuccessfulSubmitButton()) {
222 if (fromImplicitSubmissionTrigger) 221 if (fromImplicitSubmissionTrigger)
223 seenDefaultButton = true; 222 seenDefaultButton = true;
224 if (control->isSuccessfulSubmitButton()) { 223 if (control->isSuccessfulSubmitButton()) {
225 control->dispatchSimulatedClick(event); 224 control->dispatchSimulatedClick(event);
226 return; 225 return;
227 } 226 }
228 if (fromImplicitSubmissionTrigger) { 227 if (fromImplicitSubmissionTrigger) {
229 // Default (submit) button is not activated; no implicit submission. 228 // Default (submit) button is not activated; no implicit submission.
230 return; 229 return;
231 } 230 }
232 } else if (control->canTriggerImplicitSubmission()) { 231 } else if (control->canTriggerImplicitSubmission()) {
233 ++submissionTriggerCount; 232 ++submissionTriggerCount;
234 } 233 }
235 } 234 }
236 if (fromImplicitSubmissionTrigger && submissionTriggerCount == 1) 235 if (fromImplicitSubmissionTrigger && submissionTriggerCount == 1)
237 prepareForSubmission(event, nullptr); 236 prepareForSubmission(event, nullptr);
238 } 237 }
239 238
240 bool HTMLFormElement::validateInteractively() { 239 bool HTMLFormElement::validateInteractively() {
241 UseCounter::count(document(), UseCounter::FormValidationStarted); 240 UseCounter::count(document(), UseCounter::FormValidationStarted);
242 const FormAssociatedElement::List& elements = associatedElements(); 241 const ListedElement::List& elements = associatedElements();
243 for (unsigned i = 0; i < elements.size(); ++i) { 242 for (unsigned i = 0; i < elements.size(); ++i) {
244 if (elements[i]->isFormControlElement()) 243 if (elements[i]->isFormControlElement())
245 toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage(); 244 toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage();
246 } 245 }
247 246
248 HeapVector<Member<HTMLFormControlElement>> unhandledInvalidControls; 247 HeapVector<Member<HTMLFormControlElement>> unhandledInvalidControls;
249 if (!checkInvalidControlsAndCollectUnhandled( 248 if (!checkInvalidControlsAndCollectUnhandled(
250 &unhandledInvalidControls, CheckValidityDispatchInvalidEvent)) 249 &unhandledInvalidControls, CheckValidityDispatchInvalidEvent))
251 return true; 250 return true;
252 UseCounter::count(document(), UseCounter::FormValidationAbortedSubmission); 251 UseCounter::count(document(), UseCounter::FormValidationAbortedSubmission);
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 return; 465 return;
467 466
468 m_isInResetFunction = true; 467 m_isInResetFunction = true;
469 468
470 if (dispatchEvent(Event::createCancelableBubble(EventTypeNames::reset)) != 469 if (dispatchEvent(Event::createCancelableBubble(EventTypeNames::reset)) !=
471 DispatchEventResult::NotCanceled) { 470 DispatchEventResult::NotCanceled) {
472 m_isInResetFunction = false; 471 m_isInResetFunction = false;
473 return; 472 return;
474 } 473 }
475 474
476 const FormAssociatedElement::List& elements = associatedElements(); 475 const ListedElement::List& elements = associatedElements();
477 for (unsigned i = 0; i < elements.size(); ++i) { 476 for (unsigned i = 0; i < elements.size(); ++i) {
478 if (elements[i]->isFormControlElement()) 477 if (elements[i]->isFormControlElement())
479 toHTMLFormControlElement(elements[i])->reset(); 478 toHTMLFormControlElement(elements[i])->reset();
480 } 479 }
481 480
482 m_isInResetFunction = false; 481 m_isInResetFunction = false;
483 } 482 }
484 483
485 void HTMLFormElement::parseAttribute(const QualifiedName& name, 484 void HTMLFormElement::parseAttribute(const QualifiedName& name,
486 const AtomicString& oldValue, 485 const AtomicString& oldValue,
(...skipping 20 matching lines...) Expand all
507 m_attributes.updateMethodType(value); 506 m_attributes.updateMethodType(value);
508 } else if (name == enctypeAttr) { 507 } else if (name == enctypeAttr) {
509 m_attributes.updateEncodingType(value); 508 m_attributes.updateEncodingType(value);
510 } else if (name == accept_charsetAttr) { 509 } else if (name == accept_charsetAttr) {
511 m_attributes.setAcceptCharset(value); 510 m_attributes.setAcceptCharset(value);
512 } else { 511 } else {
513 HTMLElement::parseAttribute(name, oldValue, value); 512 HTMLElement::parseAttribute(name, oldValue, value);
514 } 513 }
515 } 514 }
516 515
517 void HTMLFormElement::associate(FormAssociatedElement& e) { 516 void HTMLFormElement::associate(ListedElement& e) {
518 m_associatedElementsAreDirty = true; 517 m_associatedElementsAreDirty = true;
519 m_associatedElements.clear(); 518 m_associatedElements.clear();
520 if (toHTMLElement(e).fastHasAttribute(formAttr)) 519 if (toHTMLElement(e).fastHasAttribute(formAttr))
521 m_hasElementsAssociatedByFormAttribute = true; 520 m_hasElementsAssociatedByFormAttribute = true;
522 } 521 }
523 522
524 void HTMLFormElement::disassociate(FormAssociatedElement& e) { 523 void HTMLFormElement::disassociate(ListedElement& e) {
525 m_associatedElementsAreDirty = true; 524 m_associatedElementsAreDirty = true;
526 m_associatedElements.clear(); 525 m_associatedElements.clear();
527 removeFromPastNamesMap(toHTMLElement(e)); 526 removeFromPastNamesMap(toHTMLElement(e));
528 } 527 }
529 528
530 bool HTMLFormElement::isURLAttribute(const Attribute& attribute) const { 529 bool HTMLFormElement::isURLAttribute(const Attribute& attribute) const {
531 return attribute.name() == actionAttr || 530 return attribute.name() == actionAttr ||
532 HTMLElement::isURLAttribute(attribute); 531 HTMLElement::isURLAttribute(attribute);
533 } 532 }
534 533
(...skipping 18 matching lines...) Expand all
553 m_hasElementsAssociatedByParser = true; 552 m_hasElementsAssociatedByParser = true;
554 UseCounter::count(document(), UseCounter::FormAssociationByParser); 553 UseCounter::count(document(), UseCounter::FormAssociationByParser);
555 } 554 }
556 555
557 HTMLFormControlsCollection* HTMLFormElement::elements() { 556 HTMLFormControlsCollection* HTMLFormElement::elements() {
558 return ensureCachedCollection<HTMLFormControlsCollection>(FormControls); 557 return ensureCachedCollection<HTMLFormControlsCollection>(FormControls);
559 } 558 }
560 559
561 void HTMLFormElement::collectAssociatedElements( 560 void HTMLFormElement::collectAssociatedElements(
562 Node& root, 561 Node& root,
563 FormAssociatedElement::List& elements) const { 562 ListedElement::List& elements) const {
564 elements.clear(); 563 elements.clear();
565 for (HTMLElement& element : Traversal<HTMLElement>::startsAfter(root)) { 564 for (HTMLElement& element : Traversal<HTMLElement>::startsAfter(root)) {
566 FormAssociatedElement* associatedElement = 0; 565 ListedElement* associatedElement = 0;
tkent 2016/12/02 13:24:37 Rename this variable to listedElement.
567 if (element.isFormControlElement()) 566 if (element.isFormControlElement())
568 associatedElement = toHTMLFormControlElement(&element); 567 associatedElement = toHTMLFormControlElement(&element);
569 else if (isHTMLObjectElement(element)) 568 else if (isHTMLObjectElement(element))
570 associatedElement = toHTMLObjectElement(&element); 569 associatedElement = toHTMLObjectElement(&element);
571 else 570 else
572 continue; 571 continue;
573 if (associatedElement->form() == this) 572 if (associatedElement->form() == this)
574 elements.append(associatedElement); 573 elements.append(associatedElement);
575 } 574 }
576 } 575 }
577 576
578 // This function should be const conceptually. However we update some fields 577 // This function should be const conceptually. However we update some fields
579 // because of lazy evaluation. 578 // because of lazy evaluation.
580 const FormAssociatedElement::List& HTMLFormElement::associatedElements() const { 579 const ListedElement::List& HTMLFormElement::associatedElements() const {
581 if (!m_associatedElementsAreDirty) 580 if (!m_associatedElementsAreDirty)
582 return m_associatedElements; 581 return m_associatedElements;
583 HTMLFormElement* mutableThis = const_cast<HTMLFormElement*>(this); 582 HTMLFormElement* mutableThis = const_cast<HTMLFormElement*>(this);
584 Node* scope = mutableThis; 583 Node* scope = mutableThis;
585 if (m_hasElementsAssociatedByParser) 584 if (m_hasElementsAssociatedByParser)
586 scope = &NodeTraversal::highestAncestorOrSelf(*mutableThis); 585 scope = &NodeTraversal::highestAncestorOrSelf(*mutableThis);
587 if (isConnected() && m_hasElementsAssociatedByFormAttribute) 586 if (isConnected() && m_hasElementsAssociatedByFormAttribute)
588 scope = &treeScope().rootNode(); 587 scope = &treeScope().rootNode();
589 DCHECK(scope); 588 DCHECK(scope);
590 collectAssociatedElements(*scope, mutableThis->m_associatedElements); 589 collectAssociatedElements(*scope, mutableThis->m_associatedElements);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 bool HTMLFormElement::checkValidity() { 655 bool HTMLFormElement::checkValidity() {
657 return !checkInvalidControlsAndCollectUnhandled( 656 return !checkInvalidControlsAndCollectUnhandled(
658 0, CheckValidityDispatchInvalidEvent); 657 0, CheckValidityDispatchInvalidEvent);
659 } 658 }
660 659
661 bool HTMLFormElement::checkInvalidControlsAndCollectUnhandled( 660 bool HTMLFormElement::checkInvalidControlsAndCollectUnhandled(
662 HeapVector<Member<HTMLFormControlElement>>* unhandledInvalidControls, 661 HeapVector<Member<HTMLFormControlElement>>* unhandledInvalidControls,
663 CheckValidityEventBehavior eventBehavior) { 662 CheckValidityEventBehavior eventBehavior) {
664 // Copy associatedElements because event handlers called from 663 // Copy associatedElements because event handlers called from
665 // HTMLFormControlElement::checkValidity() might change associatedElements. 664 // HTMLFormControlElement::checkValidity() might change associatedElements.
666 const FormAssociatedElement::List& associatedElements = 665 const ListedElement::List& associatedElements = this->associatedElements();
tkent 2016/12/02 13:24:37 Rename this variable to listedElements.
667 this->associatedElements(); 666 HeapVector<Member<ListedElement>> elements;
668 HeapVector<Member<FormAssociatedElement>> elements;
669 elements.reserveCapacity(associatedElements.size()); 667 elements.reserveCapacity(associatedElements.size());
670 for (unsigned i = 0; i < associatedElements.size(); ++i) 668 for (unsigned i = 0; i < associatedElements.size(); ++i)
671 elements.append(associatedElements[i]); 669 elements.append(associatedElements[i]);
672 int invalidControlsCount = 0; 670 int invalidControlsCount = 0;
673 for (unsigned i = 0; i < elements.size(); ++i) { 671 for (unsigned i = 0; i < elements.size(); ++i) {
674 if (elements[i]->form() == this && elements[i]->isFormControlElement()) { 672 if (elements[i]->form() == this && elements[i]->isFormControlElement()) {
675 HTMLFormControlElement* control = 673 HTMLFormControlElement* control =
676 toHTMLFormControlElement(elements[i].get()); 674 toHTMLFormControlElement(elements[i].get());
677 if (control->isSubmittableElement() && 675 if (control->isSubmittableElement() &&
678 !control->checkValidity(unhandledInvalidControls, eventBehavior) && 676 !control->checkValidity(unhandledInvalidControls, eventBehavior) &&
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 for (const auto& control : associatedElements()) { 813 for (const auto& control : associatedElements()) {
816 if (!control->isFormControlElement()) 814 if (!control->isFormControlElement())
817 continue; 815 continue;
818 if (toHTMLFormControlElement(control)->canBeSuccessfulSubmitButton()) 816 if (toHTMLFormControlElement(control)->canBeSuccessfulSubmitButton())
819 toHTMLFormControlElement(control)->pseudoStateChanged( 817 toHTMLFormControlElement(control)->pseudoStateChanged(
820 CSSSelector::PseudoDefault); 818 CSSSelector::PseudoDefault);
821 } 819 }
822 } 820 }
823 821
824 } // namespace blink 822 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698