OLD | NEW |
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 reserv
ed. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 for (size_t i = 0; i < size; ++i) | 129 for (size_t i = 0; i < size; ++i) |
130 elements[i]->formRemovedFromTree(root); | 130 elements[i]->formRemovedFromTree(root); |
131 ASSERT(elements.size() == size); | 131 ASSERT(elements.size() == size); |
132 } | 132 } |
133 | 133 |
134 void HTMLFormElement::removedFrom(ContainerNode* insertionPoint) | 134 void HTMLFormElement::removedFrom(ContainerNode* insertionPoint) |
135 { | 135 { |
136 // We don't need to take care of form association by 'form' content | 136 // We don't need to take care of form association by 'form' content |
137 // attribute becuse IdTargetObserver handles it. | 137 // attribute becuse IdTargetObserver handles it. |
138 if (m_hasElementsAssociatedByParser) { | 138 if (m_hasElementsAssociatedByParser) { |
139 Node& root = highestAncestor(); | 139 Node& root = highestAncestorOrSelf(); |
140 if (!m_associatedElementsAreDirty) { | 140 if (!m_associatedElementsAreDirty) { |
141 Vector<FormAssociatedElement*> elements(associatedElements()); | 141 Vector<FormAssociatedElement*> elements(associatedElements()); |
142 notifyFormRemovedFromTree(elements, root); | 142 notifyFormRemovedFromTree(elements, root); |
143 } else { | 143 } else { |
144 Vector<FormAssociatedElement*> elements; | 144 Vector<FormAssociatedElement*> elements; |
145 collectAssociatedElements(insertionPoint->highestAncestor(), element
s); | 145 collectAssociatedElements(insertionPoint->highestAncestorOrSelf(), e
lements); |
146 notifyFormRemovedFromTree(elements, root); | 146 notifyFormRemovedFromTree(elements, root); |
147 collectAssociatedElements(root, elements); | 147 collectAssociatedElements(root, elements); |
148 notifyFormRemovedFromTree(elements, root); | 148 notifyFormRemovedFromTree(elements, root); |
149 } | 149 } |
150 | 150 |
151 if (!m_imageElementsAreDirty) { | 151 if (!m_imageElementsAreDirty) { |
152 Vector<HTMLImageElement*> images(imageElements()); | 152 Vector<HTMLImageElement*> images(imageElements()); |
153 notifyFormRemovedFromTree(images, root); | 153 notifyFormRemovedFromTree(images, root); |
154 } else { | 154 } else { |
155 Vector<HTMLImageElement*> images; | 155 Vector<HTMLImageElement*> images; |
156 collectImageElements(insertionPoint->highestAncestor(), images); | 156 collectImageElements(insertionPoint->highestAncestorOrSelf(), images
); |
157 notifyFormRemovedFromTree(images, root); | 157 notifyFormRemovedFromTree(images, root); |
158 collectImageElements(root, images); | 158 collectImageElements(root, images); |
159 notifyFormRemovedFromTree(images, root); | 159 notifyFormRemovedFromTree(images, root); |
160 } | 160 } |
161 } | 161 } |
162 HTMLElement::removedFrom(insertionPoint); | 162 HTMLElement::removedFrom(insertionPoint); |
163 } | 163 } |
164 | 164 |
165 void HTMLFormElement::handleLocalEvents(Event* event) | 165 void HTMLFormElement::handleLocalEvents(Event* event) |
166 { | 166 { |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 | 557 |
558 // This function should be const conceptually. However we update some fields | 558 // This function should be const conceptually. However we update some fields |
559 // because of lazy evaluation. | 559 // because of lazy evaluation. |
560 const Vector<FormAssociatedElement*>& HTMLFormElement::associatedElements() cons
t | 560 const Vector<FormAssociatedElement*>& HTMLFormElement::associatedElements() cons
t |
561 { | 561 { |
562 if (!m_associatedElementsAreDirty) | 562 if (!m_associatedElementsAreDirty) |
563 return m_associatedElements; | 563 return m_associatedElements; |
564 HTMLFormElement* mutableThis = const_cast<HTMLFormElement*>(this); | 564 HTMLFormElement* mutableThis = const_cast<HTMLFormElement*>(this); |
565 Node* scope = mutableThis; | 565 Node* scope = mutableThis; |
566 if (m_hasElementsAssociatedByParser) | 566 if (m_hasElementsAssociatedByParser) |
567 scope = &highestAncestor(); | 567 scope = &highestAncestorOrSelf(); |
568 if (inDocument() && treeScope().idTargetObserverRegistry().hasObservers(fast
GetAttribute(idAttr))) | 568 if (inDocument() && treeScope().idTargetObserverRegistry().hasObservers(fast
GetAttribute(idAttr))) |
569 scope = &treeScope().rootNode(); | 569 scope = &treeScope().rootNode(); |
570 ASSERT(scope); | 570 ASSERT(scope); |
571 collectAssociatedElements(*scope, mutableThis->m_associatedElements); | 571 collectAssociatedElements(*scope, mutableThis->m_associatedElements); |
572 mutableThis->m_associatedElementsAreDirty = false; | 572 mutableThis->m_associatedElementsAreDirty = false; |
573 return m_associatedElements; | 573 return m_associatedElements; |
574 } | 574 } |
575 | 575 |
576 void HTMLFormElement::collectImageElements(Node& root, Vector<HTMLImageElement*>
& elements) | 576 void HTMLFormElement::collectImageElements(Node& root, Vector<HTMLImageElement*>
& elements) |
577 { | 577 { |
578 elements.clear(); | 578 elements.clear(); |
579 for (HTMLImageElement* image = Traversal<HTMLImageElement>::firstWithin(root
); image; image = Traversal<HTMLImageElement>::next(*image)) { | 579 for (HTMLImageElement* image = Traversal<HTMLImageElement>::firstWithin(root
); image; image = Traversal<HTMLImageElement>::next(*image)) { |
580 if (image->formOwner() == this) | 580 if (image->formOwner() == this) |
581 elements.append(image); | 581 elements.append(image); |
582 } | 582 } |
583 } | 583 } |
584 | 584 |
585 const Vector<HTMLImageElement*>& HTMLFormElement::imageElements() | 585 const Vector<HTMLImageElement*>& HTMLFormElement::imageElements() |
586 { | 586 { |
587 if (!m_imageElementsAreDirty) | 587 if (!m_imageElementsAreDirty) |
588 return m_imageElements; | 588 return m_imageElements; |
589 collectImageElements(m_hasElementsAssociatedByParser ? highestAncestor() : *
this, m_imageElements); | 589 collectImageElements(m_hasElementsAssociatedByParser ? highestAncestorOrSelf
() : *this, m_imageElements); |
590 m_imageElementsAreDirty = false; | 590 m_imageElementsAreDirty = false; |
591 return m_imageElements; | 591 return m_imageElements; |
592 } | 592 } |
593 | 593 |
594 String HTMLFormElement::name() const | 594 String HTMLFormElement::name() const |
595 { | 595 { |
596 return getNameAttribute(); | 596 return getNameAttribute(); |
597 } | 597 } |
598 | 598 |
599 bool HTMLFormElement::noValidate() const | 599 bool HTMLFormElement::noValidate() const |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 } | 778 } |
779 | 779 |
780 void HTMLFormElement::setDemoted(bool demoted) | 780 void HTMLFormElement::setDemoted(bool demoted) |
781 { | 781 { |
782 if (demoted) | 782 if (demoted) |
783 UseCounter::count(document(), UseCounter::DemotedFormElement); | 783 UseCounter::count(document(), UseCounter::DemotedFormElement); |
784 m_wasDemoted = demoted; | 784 m_wasDemoted = demoted; |
785 } | 785 } |
786 | 786 |
787 } // namespace | 787 } // namespace |
OLD | NEW |