Commit 94e553dd authored by tkent@chromium.org's avatar tkent@chromium.org

Oilpan: Prepare to move FormAssociatedElement to Oilpan heap, part 2.

Replace FormAssociatedElement raw pointers with Member<>.

- Make FormAttributeTargetObserver GarbageCollectedFinalized in order to make
  FormAttributeTargetObserver::m_element traceable.
- Define a typedef for
  WillBeHeapVector<RawPtrWillBeMember<FormAssociatedElement>>. The raw name is
  long and the type is used in many places.

BUG=357163

Review URL: https://codereview.chromium.org/270823004

git-svn-id: svn://svn.chromium.org/blink/trunk@173723 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1d40fe81
...@@ -36,16 +36,18 @@ namespace WebCore { ...@@ -36,16 +36,18 @@ namespace WebCore {
using namespace HTMLNames; using namespace HTMLNames;
class FormAttributeTargetObserver : public IdTargetObserver { // FIXME: Oilpan: IdTargetObserver should be on-heap.
WTF_MAKE_FAST_ALLOCATED; class FormAttributeTargetObserver : public NoBaseWillBeGarbageCollectedFinalized<FormAttributeTargetObserver>, public IdTargetObserver {
WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
public: public:
static PassOwnPtr<FormAttributeTargetObserver> create(const AtomicString& id, FormAssociatedElement*); static PassOwnPtrWillBeRawPtr<FormAttributeTargetObserver> create(const AtomicString& id, FormAssociatedElement*);
void trace(Visitor* visitor) { visitor->trace(m_element); }
virtual void idTargetChanged() OVERRIDE; virtual void idTargetChanged() OVERRIDE;
private: private:
FormAttributeTargetObserver(const AtomicString& id, FormAssociatedElement*); FormAttributeTargetObserver(const AtomicString& id, FormAssociatedElement*);
FormAssociatedElement* m_element; RawPtrWillBeMember<FormAssociatedElement> m_element;
}; };
FormAssociatedElement::FormAssociatedElement() FormAssociatedElement::FormAssociatedElement()
...@@ -60,6 +62,7 @@ FormAssociatedElement::~FormAssociatedElement() ...@@ -60,6 +62,7 @@ FormAssociatedElement::~FormAssociatedElement()
void FormAssociatedElement::trace(Visitor* visitor) void FormAssociatedElement::trace(Visitor* visitor)
{ {
visitor->trace(m_formAttributeTargetObserver);
visitor->trace(m_form); visitor->trace(m_form);
visitor->trace(m_validityState); visitor->trace(m_validityState);
} }
...@@ -267,7 +270,7 @@ void FormAssociatedElement::setCustomValidity(const String& error) ...@@ -267,7 +270,7 @@ void FormAssociatedElement::setCustomValidity(const String& error)
m_customValidationMessage = error; m_customValidationMessage = error;
} }
void FormAssociatedElement::setFormAttributeTargetObserver(PassOwnPtr<FormAttributeTargetObserver> newObserver) void FormAssociatedElement::setFormAttributeTargetObserver(PassOwnPtrWillBeRawPtr<FormAttributeTargetObserver> newObserver)
{ {
if (m_formAttributeTargetObserver) if (m_formAttributeTargetObserver)
m_formAttributeTargetObserver->unregister(); m_formAttributeTargetObserver->unregister();
...@@ -324,9 +327,9 @@ HTMLElement& toHTMLElement(FormAssociatedElement& associatedElement) ...@@ -324,9 +327,9 @@ HTMLElement& toHTMLElement(FormAssociatedElement& associatedElement)
return const_cast<HTMLElement&>(toHTMLElement(static_cast<const FormAssociatedElement&>(associatedElement))); return const_cast<HTMLElement&>(toHTMLElement(static_cast<const FormAssociatedElement&>(associatedElement)));
} }
PassOwnPtr<FormAttributeTargetObserver> FormAttributeTargetObserver::create(const AtomicString& id, FormAssociatedElement* element) PassOwnPtrWillBeRawPtr<FormAttributeTargetObserver> FormAttributeTargetObserver::create(const AtomicString& id, FormAssociatedElement* element)
{ {
return adoptPtr(new FormAttributeTargetObserver(id, element)); return adoptPtrWillBeNoop(new FormAttributeTargetObserver(id, element));
} }
FormAttributeTargetObserver::FormAttributeTargetObserver(const AtomicString& id, FormAssociatedElement* element) FormAttributeTargetObserver::FormAttributeTargetObserver(const AtomicString& id, FormAssociatedElement* element)
......
...@@ -90,6 +90,8 @@ public: ...@@ -90,6 +90,8 @@ public:
void formAttributeTargetChanged(); void formAttributeTargetChanged();
typedef WillBeHeapVector<RawPtrWillBeMember<FormAssociatedElement> > List;
protected: protected:
FormAssociatedElement(); FormAssociatedElement();
...@@ -118,10 +120,10 @@ private: ...@@ -118,10 +120,10 @@ private:
virtual void derefFormAssociatedElement() = 0; virtual void derefFormAssociatedElement() = 0;
#endif #endif
void setFormAttributeTargetObserver(PassOwnPtr<FormAttributeTargetObserver>); void setFormAttributeTargetObserver(PassOwnPtrWillBeRawPtr<FormAttributeTargetObserver>);
void resetFormAttributeTargetObserver(); void resetFormAttributeTargetObserver();
OwnPtr<FormAttributeTargetObserver> m_formAttributeTargetObserver; OwnPtrWillBeMember<FormAttributeTargetObserver> m_formAttributeTargetObserver;
#if ENABLE(OILPAN) #if ENABLE(OILPAN)
Member<HTMLFormElement> m_form; Member<HTMLFormElement> m_form;
#else #else
......
...@@ -49,6 +49,14 @@ PassRefPtrWillBeRawPtr<HTMLFieldSetElement> HTMLFieldSetElement::create(Document ...@@ -49,6 +49,14 @@ PassRefPtrWillBeRawPtr<HTMLFieldSetElement> HTMLFieldSetElement::create(Document
return adoptRefWillBeRefCountedGarbageCollected(new HTMLFieldSetElement(document, form)); return adoptRefWillBeRefCountedGarbageCollected(new HTMLFieldSetElement(document, form));
} }
void HTMLFieldSetElement::trace(Visitor* visitor)
{
#if ENABLE(OILPAN)
visitor->trace(m_associatedElements);
#endif
HTMLFormControlElement::trace(visitor);
}
void HTMLFieldSetElement::invalidateDisabledStateUnder(Element& base) void HTMLFieldSetElement::invalidateDisabledStateUnder(Element& base)
{ {
for (Element* element = ElementTraversal::firstWithin(base); element; element = ElementTraversal::next(*element, &base)) { for (Element* element = ElementTraversal::firstWithin(base); element; element = ElementTraversal::next(*element, &base)) {
...@@ -120,7 +128,7 @@ void HTMLFieldSetElement::refreshElementsIfNeeded() const ...@@ -120,7 +128,7 @@ void HTMLFieldSetElement::refreshElementsIfNeeded() const
} }
} }
const Vector<FormAssociatedElement*>& HTMLFieldSetElement::associatedElements() const const FormAssociatedElement::List& HTMLFieldSetElement::associatedElements() const
{ {
refreshElementsIfNeeded(); refreshElementsIfNeeded();
return m_associatedElements; return m_associatedElements;
......
...@@ -34,11 +34,12 @@ class HTMLCollection; ...@@ -34,11 +34,12 @@ class HTMLCollection;
class HTMLFieldSetElement FINAL : public HTMLFormControlElement { class HTMLFieldSetElement FINAL : public HTMLFormControlElement {
public: public:
static PassRefPtrWillBeRawPtr<HTMLFieldSetElement> create(Document&, HTMLFormElement*); static PassRefPtrWillBeRawPtr<HTMLFieldSetElement> create(Document&, HTMLFormElement*);
virtual void trace(Visitor*) OVERRIDE;
HTMLLegendElement* legend() const; HTMLLegendElement* legend() const;
PassRefPtr<HTMLCollection> elements(); PassRefPtr<HTMLCollection> elements();
const Vector<FormAssociatedElement*>& associatedElements() const; const FormAssociatedElement::List& associatedElements() const;
protected: protected:
virtual void disabledAttributeChanged() OVERRIDE; virtual void disabledAttributeChanged() OVERRIDE;
...@@ -57,7 +58,7 @@ private: ...@@ -57,7 +58,7 @@ private:
static void invalidateDisabledStateUnder(Element&); static void invalidateDisabledStateUnder(Element&);
void refreshElementsIfNeeded() const; void refreshElementsIfNeeded() const;
mutable Vector<FormAssociatedElement*> m_associatedElements; mutable FormAssociatedElement::List m_associatedElements;
// When dom tree is modified, we have to refresh the m_associatedElements array. // When dom tree is modified, we have to refresh the m_associatedElements array.
mutable uint64_t m_documentVersion; mutable uint64_t m_documentVersion;
}; };
......
...@@ -56,7 +56,7 @@ HTMLFormControlsCollection::~HTMLFormControlsCollection() ...@@ -56,7 +56,7 @@ HTMLFormControlsCollection::~HTMLFormControlsCollection()
{ {
} }
const Vector<FormAssociatedElement*>& HTMLFormControlsCollection::formControlElements() const const FormAssociatedElement::List& HTMLFormControlsCollection::formControlElements() const
{ {
ASSERT(isHTMLFormElement(ownerNode()) || isHTMLFieldSetElement(ownerNode())); ASSERT(isHTMLFormElement(ownerNode()) || isHTMLFieldSetElement(ownerNode()));
if (isHTMLFormElement(ownerNode())) if (isHTMLFormElement(ownerNode()))
...@@ -69,7 +69,7 @@ const Vector<HTMLImageElement*>& HTMLFormControlsCollection::formImageElements() ...@@ -69,7 +69,7 @@ const Vector<HTMLImageElement*>& HTMLFormControlsCollection::formImageElements()
return toHTMLFormElement(ownerNode()).imageElements(); return toHTMLFormElement(ownerNode()).imageElements();
} }
static unsigned findFormAssociatedElement(const Vector<FormAssociatedElement*>& associatedElements, Element* element) static unsigned findFormAssociatedElement(const FormAssociatedElement::List& associatedElements, Element* element)
{ {
unsigned i = 0; unsigned i = 0;
for (; i < associatedElements.size(); ++i) { for (; i < associatedElements.size(); ++i) {
...@@ -82,7 +82,7 @@ static unsigned findFormAssociatedElement(const Vector<FormAssociatedElement*>& ...@@ -82,7 +82,7 @@ static unsigned findFormAssociatedElement(const Vector<FormAssociatedElement*>&
Element* HTMLFormControlsCollection::virtualItemAfter(Element* previous) const Element* HTMLFormControlsCollection::virtualItemAfter(Element* previous) const
{ {
const Vector<FormAssociatedElement*>& associatedElements = formControlElements(); const FormAssociatedElement::List& associatedElements = formControlElements();
unsigned offset; unsigned offset;
if (!previous) if (!previous)
offset = 0; offset = 0;
...@@ -109,7 +109,7 @@ void HTMLFormControlsCollection::invalidateCache(Document* oldDocument) const ...@@ -109,7 +109,7 @@ void HTMLFormControlsCollection::invalidateCache(Document* oldDocument) const
m_cachedElementOffsetInArray = 0; m_cachedElementOffsetInArray = 0;
} }
static HTMLElement* firstNamedItem(const Vector<FormAssociatedElement*>& elementsArray, static HTMLElement* firstNamedItem(const FormAssociatedElement::List& elementsArray,
const Vector<HTMLImageElement*>* imageElementsArray, const QualifiedName& attrName, const String& name) const Vector<HTMLImageElement*>* imageElementsArray, const QualifiedName& attrName, const String& name)
{ {
ASSERT(attrName == idAttr || attrName == nameAttr); ASSERT(attrName == idAttr || attrName == nameAttr);
...@@ -156,7 +156,7 @@ void HTMLFormControlsCollection::updateIdNameCache() const ...@@ -156,7 +156,7 @@ void HTMLFormControlsCollection::updateIdNameCache() const
OwnPtr<NamedItemCache> cache = NamedItemCache::create(); OwnPtr<NamedItemCache> cache = NamedItemCache::create();
HashSet<StringImpl*> foundInputElements; HashSet<StringImpl*> foundInputElements;
const Vector<FormAssociatedElement*>& elementsArray = formControlElements(); const FormAssociatedElement::List& elementsArray = formControlElements();
for (unsigned i = 0; i < elementsArray.size(); ++i) { for (unsigned i = 0; i < elementsArray.size(); ++i) {
FormAssociatedElement* associatedElement = elementsArray[i]; FormAssociatedElement* associatedElement = elementsArray[i];
......
...@@ -24,12 +24,12 @@ ...@@ -24,12 +24,12 @@
#ifndef HTMLFormControlsCollection_h #ifndef HTMLFormControlsCollection_h
#define HTMLFormControlsCollection_h #define HTMLFormControlsCollection_h
#include "core/html/FormAssociatedElement.h"
#include "core/html/HTMLCollection.h" #include "core/html/HTMLCollection.h"
#include "core/html/RadioNodeList.h" #include "core/html/RadioNodeList.h"
namespace WebCore { namespace WebCore {
class FormAssociatedElement;
class HTMLElement; class HTMLElement;
class HTMLImageElement; class HTMLImageElement;
class QualifiedName; class QualifiedName;
...@@ -52,7 +52,7 @@ private: ...@@ -52,7 +52,7 @@ private:
virtual void updateIdNameCache() const OVERRIDE; virtual void updateIdNameCache() const OVERRIDE;
virtual void supportedPropertyNames(Vector<String>& names) OVERRIDE; virtual void supportedPropertyNames(Vector<String>& names) OVERRIDE;
const Vector<FormAssociatedElement*>& formControlElements() const; const FormAssociatedElement::List& formControlElements() const;
const Vector<HTMLImageElement*>& formImageElements() const; const Vector<HTMLImageElement*>& formImageElements() const;
virtual Element* virtualItemAfter(Element*) const OVERRIDE; virtual Element* virtualItemAfter(Element*) const OVERRIDE;
virtual void invalidateCache(Document* oldDocument = 0) const OVERRIDE; virtual void invalidateCache(Document* oldDocument = 0) const OVERRIDE;
......
...@@ -91,6 +91,14 @@ HTMLFormElement::~HTMLFormElement() ...@@ -91,6 +91,14 @@ HTMLFormElement::~HTMLFormElement()
#endif #endif
} }
void HTMLFormElement::trace(Visitor* visitor)
{
#if ENABLE(OILPAN)
visitor->trace(m_associatedElements);
#endif
HTMLElement::trace(visitor);
}
bool HTMLFormElement::rendererIsNeeded(const RenderStyle& style) bool HTMLFormElement::rendererIsNeeded(const RenderStyle& style)
{ {
if (!m_wasDemoted) if (!m_wasDemoted)
...@@ -129,7 +137,7 @@ Node::InsertionNotificationRequest HTMLFormElement::insertedInto(ContainerNode* ...@@ -129,7 +137,7 @@ Node::InsertionNotificationRequest HTMLFormElement::insertedInto(ContainerNode*
} }
template<class T> template<class T>
void notifyFormRemovedFromTree(const Vector<T*>& elements, Node& root) void notifyFormRemovedFromTree(const T& elements, Node& root)
{ {
size_t size = elements.size(); size_t size = elements.size();
for (size_t i = 0; i < size; ++i) for (size_t i = 0; i < size; ++i)
...@@ -144,10 +152,10 @@ void HTMLFormElement::removedFrom(ContainerNode* insertionPoint) ...@@ -144,10 +152,10 @@ void HTMLFormElement::removedFrom(ContainerNode* insertionPoint)
if (m_hasElementsAssociatedByParser) { if (m_hasElementsAssociatedByParser) {
Node& root = highestAncestorOrSelf(); Node& root = highestAncestorOrSelf();
if (!m_associatedElementsAreDirty) { if (!m_associatedElementsAreDirty) {
Vector<FormAssociatedElement*> elements(associatedElements()); FormAssociatedElement::List elements(associatedElements());
notifyFormRemovedFromTree(elements, root); notifyFormRemovedFromTree(elements, root);
} else { } else {
Vector<FormAssociatedElement*> elements; FormAssociatedElement::List elements;
collectAssociatedElements(insertionPoint->highestAncestorOrSelf(), elements); collectAssociatedElements(insertionPoint->highestAncestorOrSelf(), elements);
notifyFormRemovedFromTree(elements, root); notifyFormRemovedFromTree(elements, root);
collectAssociatedElements(root, elements); collectAssociatedElements(root, elements);
...@@ -183,7 +191,7 @@ void HTMLFormElement::handleLocalEvents(Event* event) ...@@ -183,7 +191,7 @@ void HTMLFormElement::handleLocalEvents(Event* event)
unsigned HTMLFormElement::length() const unsigned HTMLFormElement::length() const
{ {
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
unsigned len = 0; unsigned len = 0;
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
if (elements[i]->isEnumeratable()) if (elements[i]->isEnumeratable())
...@@ -201,7 +209,7 @@ void HTMLFormElement::submitImplicitly(Event* event, bool fromImplicitSubmission ...@@ -201,7 +209,7 @@ void HTMLFormElement::submitImplicitly(Event* event, bool fromImplicitSubmission
{ {
int submissionTriggerCount = 0; int submissionTriggerCount = 0;
bool seenDefaultButton = false; bool seenDefaultButton = false;
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
FormAssociatedElement* formAssociatedElement = elements[i]; FormAssociatedElement* formAssociatedElement = elements[i];
if (!formAssociatedElement->isFormControlElement()) if (!formAssociatedElement->isFormControlElement())
...@@ -245,7 +253,7 @@ bool HTMLFormElement::validateInteractively(Event* event) ...@@ -245,7 +253,7 @@ bool HTMLFormElement::validateInteractively(Event* event)
if (submitElement && submitElement->formNoValidate()) if (submitElement && submitElement->formNoValidate())
return true; return true;
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
if (elements[i]->isFormControlElement()) if (elements[i]->isFormControlElement())
toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage(); toHTMLFormControlElement(elements[i])->hideVisibleValidationMessage();
...@@ -338,7 +346,7 @@ void HTMLFormElement::submit(Event* event, bool activateSubmitButton, bool proce ...@@ -338,7 +346,7 @@ void HTMLFormElement::submit(Event* event, bool activateSubmitButton, bool proce
RefPtrWillBeRawPtr<HTMLFormControlElement> firstSuccessfulSubmitButton = nullptr; RefPtrWillBeRawPtr<HTMLFormControlElement> firstSuccessfulSubmitButton = nullptr;
bool needButtonActivation = activateSubmitButton; // do we need to activate a submit button? bool needButtonActivation = activateSubmitButton; // do we need to activate a submit button?
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
FormAssociatedElement* associatedElement = elements[i]; FormAssociatedElement* associatedElement = elements[i];
if (!associatedElement->isFormControlElement()) if (!associatedElement->isFormControlElement())
...@@ -416,7 +424,7 @@ void HTMLFormElement::reset() ...@@ -416,7 +424,7 @@ void HTMLFormElement::reset()
return; return;
} }
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
if (elements[i]->isFormControlElement()) if (elements[i]->isFormControlElement())
toHTMLFormControlElement(elements[i])->reset(); toHTMLFormControlElement(elements[i])->reset();
...@@ -536,7 +544,7 @@ PassRefPtr<HTMLCollection> HTMLFormElement::elements() ...@@ -536,7 +544,7 @@ PassRefPtr<HTMLCollection> HTMLFormElement::elements()
return ensureCachedHTMLCollection(FormControls); return ensureCachedHTMLCollection(FormControls);
} }
void HTMLFormElement::collectAssociatedElements(Node& root, Vector<FormAssociatedElement*>& elements) const void HTMLFormElement::collectAssociatedElements(Node& root, FormAssociatedElement::List& elements) const
{ {
elements.clear(); elements.clear();
for (HTMLElement* element = Traversal<HTMLElement>::firstWithin(root); element; element = Traversal<HTMLElement>::next(*element)) { for (HTMLElement* element = Traversal<HTMLElement>::firstWithin(root); element; element = Traversal<HTMLElement>::next(*element)) {
...@@ -554,7 +562,7 @@ void HTMLFormElement::collectAssociatedElements(Node& root, Vector<FormAssociate ...@@ -554,7 +562,7 @@ void HTMLFormElement::collectAssociatedElements(Node& root, Vector<FormAssociate
// This function should be const conceptually. However we update some fields // This function should be const conceptually. However we update some fields
// because of lazy evaluation. // because of lazy evaluation.
const Vector<FormAssociatedElement*>& HTMLFormElement::associatedElements() const const FormAssociatedElement::List& HTMLFormElement::associatedElements() const
{ {
if (!m_associatedElementsAreDirty) if (!m_associatedElementsAreDirty)
return m_associatedElements; return m_associatedElements;
...@@ -628,7 +636,7 @@ bool HTMLFormElement::wasUserSubmitted() const ...@@ -628,7 +636,7 @@ bool HTMLFormElement::wasUserSubmitted() const
HTMLFormControlElement* HTMLFormElement::defaultButton() const HTMLFormControlElement* HTMLFormElement::defaultButton() const
{ {
const Vector<FormAssociatedElement*>& elements = associatedElements(); const FormAssociatedElement::List& elements = associatedElements();
for (unsigned i = 0; i < elements.size(); ++i) { for (unsigned i = 0; i < elements.size(); ++i) {
if (!elements[i]->isFormControlElement()) if (!elements[i]->isFormControlElement())
continue; continue;
...@@ -650,7 +658,7 @@ bool HTMLFormElement::checkInvalidControlsAndCollectUnhandled(WillBeHeapVector<R ...@@ -650,7 +658,7 @@ bool HTMLFormElement::checkInvalidControlsAndCollectUnhandled(WillBeHeapVector<R
RefPtr<HTMLFormElement> protector(this); RefPtr<HTMLFormElement> protector(this);
// Copy associatedElements because event handlers called from // Copy associatedElements because event handlers called from
// HTMLFormControlElement::checkValidity() might change associatedElements. // HTMLFormControlElement::checkValidity() might change associatedElements.
const Vector<FormAssociatedElement*>& associatedElements = this->associatedElements(); const FormAssociatedElement::List& associatedElements = this->associatedElements();
WillBeHeapVector<RefPtrWillBeMember<FormAssociatedElement> > elements; WillBeHeapVector<RefPtrWillBeMember<FormAssociatedElement> > elements;
elements.reserveCapacity(associatedElements.size()); elements.reserveCapacity(associatedElements.size());
for (unsigned i = 0; i < associatedElements.size(); ++i) for (unsigned i = 0; i < associatedElements.size(); ++i)
......
...@@ -49,6 +49,7 @@ class HTMLFormElement FINAL : public HTMLElement { ...@@ -49,6 +49,7 @@ class HTMLFormElement FINAL : public HTMLElement {
public: public:
static PassRefPtrWillBeRawPtr<HTMLFormElement> create(Document&); static PassRefPtrWillBeRawPtr<HTMLFormElement> create(Document&);
virtual ~HTMLFormElement(); virtual ~HTMLFormElement();
virtual void trace(Visitor*) OVERRIDE;
PassRefPtr<HTMLCollection> elements(); PassRefPtr<HTMLCollection> elements();
void getNamedElements(const AtomicString&, Vector<RefPtr<Element> >&); void getNamedElements(const AtomicString&, Vector<RefPtr<Element> >&);
...@@ -110,7 +111,7 @@ public: ...@@ -110,7 +111,7 @@ public:
RadioButtonGroupScope& radioButtonGroupScope() { return m_radioButtonGroupScope; } RadioButtonGroupScope& radioButtonGroupScope() { return m_radioButtonGroupScope; }
const Vector<FormAssociatedElement*>& associatedElements() const; const FormAssociatedElement::List& associatedElements() const;
const Vector<HTMLImageElement*>& imageElements(); const Vector<HTMLImageElement*>& imageElements();
void anonymousNamedGetter(const AtomicString& name, bool&, RefPtr<RadioNodeList>&, bool&, RefPtr<Element>&); void anonymousNamedGetter(const AtomicString& name, bool&, RefPtr<RadioNodeList>&, bool&, RefPtr<Element>&);
...@@ -138,7 +139,7 @@ private: ...@@ -138,7 +139,7 @@ private:
void scheduleFormSubmission(PassRefPtr<FormSubmission>); void scheduleFormSubmission(PassRefPtr<FormSubmission>);
void collectAssociatedElements(Node& root, Vector<FormAssociatedElement*>&) const; void collectAssociatedElements(Node& root, FormAssociatedElement::List&) const;
void collectImageElements(Node& root, Vector<HTMLImageElement*>&); void collectImageElements(Node& root, Vector<HTMLImageElement*>&);
// Returns true if the submission should proceed. // Returns true if the submission should proceed.
...@@ -161,8 +162,7 @@ private: ...@@ -161,8 +162,7 @@ private:
RadioButtonGroupScope m_radioButtonGroupScope; RadioButtonGroupScope m_radioButtonGroupScope;
// Do not access m_associatedElements directly. Use associatedElements() instead. // Do not access m_associatedElements directly. Use associatedElements() instead.
// FIXME: Oilpan: m_associatedElements should be HeapVector<Member<>>. FormAssociatedElement::List m_associatedElements;
Vector<FormAssociatedElement*> m_associatedElements;
// Do not access m_imageElements directly. Use imageElements() instead. // Do not access m_imageElements directly. Use imageElements() instead.
Vector<HTMLImageElement*> m_imageElements; Vector<HTMLImageElement*> m_imageElements;
WeakPtrFactory<HTMLFormElement> m_weakPtrFactory; WeakPtrFactory<HTMLFormElement> m_weakPtrFactory;
......
...@@ -310,7 +310,7 @@ static inline void recordFormStructure(const HTMLFormElement& form, StringBuilde ...@@ -310,7 +310,7 @@ static inline void recordFormStructure(const HTMLFormElement& form, StringBuilde
{ {
// 2 is enough to distinguish forms in webkit.org/b/91209#c0 // 2 is enough to distinguish forms in webkit.org/b/91209#c0
const size_t namedControlsToBeRecorded = 2; const size_t namedControlsToBeRecorded = 2;
const Vector<FormAssociatedElement*>& controls = form.associatedElements(); const FormAssociatedElement::List& controls = form.associatedElements();
builder.append(" ["); builder.append(" [");
for (size_t i = 0, namedControls = 0; i < controls.size() && namedControls < namedControlsToBeRecorded; ++i) { for (size_t i = 0, namedControls = 0; i < controls.size() && namedControls < namedControlsToBeRecorded; ++i) {
if (!controls[i]->isFormControlElementWithState()) if (!controls[i]->isFormControlElementWithState())
...@@ -521,7 +521,7 @@ void FormController::restoreControlStateFor(HTMLFormControlElementWithState& con ...@@ -521,7 +521,7 @@ void FormController::restoreControlStateFor(HTMLFormControlElementWithState& con
void FormController::restoreControlStateIn(HTMLFormElement& form) void FormController::restoreControlStateIn(HTMLFormElement& form)
{ {
const Vector<FormAssociatedElement*>& elements = form.associatedElements(); const FormAssociatedElement::List& elements = form.associatedElements();
for (size_t i = 0; i < elements.size(); ++i) { for (size_t i = 0; i < elements.size(); ++i) {
if (!elements[i]->isFormControlElementWithState()) if (!elements[i]->isFormControlElementWithState())
continue; continue;
......
...@@ -98,8 +98,8 @@ void WebFormElement::getFormControlElements(WebVector<WebFormControlElement>& re ...@@ -98,8 +98,8 @@ void WebFormElement::getFormControlElements(WebVector<WebFormControlElement>& re
const HTMLFormElement* form = constUnwrap<HTMLFormElement>(); const HTMLFormElement* form = constUnwrap<HTMLFormElement>();
Vector<WebFormControlElement> formControlElements; Vector<WebFormControlElement> formControlElements;
const Vector<FormAssociatedElement*>& associatedElements = form->associatedElements(); const FormAssociatedElement::List& associatedElements = form->associatedElements();
for (Vector<FormAssociatedElement*>::const_iterator it = associatedElements.begin(); it != associatedElements.end(); ++it) { for (FormAssociatedElement::List::const_iterator it = associatedElements.begin(); it != associatedElements.end(); ++it) {
if ((*it)->isFormControlElement()) if ((*it)->isFormControlElement())
formControlElements.append(toHTMLFormControlElement(*it)); formControlElements.append(toHTMLFormControlElement(*it));
} }
......
...@@ -80,8 +80,8 @@ bool IsHTTPFormSubmit(const HTMLFormElement* form) ...@@ -80,8 +80,8 @@ bool IsHTTPFormSubmit(const HTMLFormElement* form)
HTMLFormControlElement* GetButtonToActivate(HTMLFormElement* form) HTMLFormControlElement* GetButtonToActivate(HTMLFormElement* form)
{ {
HTMLFormControlElement* firstSubmitButton = 0; HTMLFormControlElement* firstSubmitButton = 0;
const Vector<FormAssociatedElement*>& element = form->associatedElements(); const FormAssociatedElement::List& element = form->associatedElements();
for (Vector<FormAssociatedElement*>::const_iterator i(element.begin()); i != element.end(); ++i) { for (FormAssociatedElement::List::const_iterator i(element.begin()); i != element.end(); ++i) {
if (!(*i)->isFormControlElement()) if (!(*i)->isFormControlElement())
continue; continue;
HTMLFormControlElement* control = toHTMLFormControlElement(*i); HTMLFormControlElement* control = toHTMLFormControlElement(*i);
...@@ -155,8 +155,8 @@ bool IsInDefaultState(HTMLFormControlElement* formElement) ...@@ -155,8 +155,8 @@ bool IsInDefaultState(HTMLFormControlElement* formElement)
HTMLInputElement* findSuitableSearchInputElement(const HTMLFormElement* form) HTMLInputElement* findSuitableSearchInputElement(const HTMLFormElement* form)
{ {
HTMLInputElement* textElement = 0; HTMLInputElement* textElement = 0;
const Vector<FormAssociatedElement*>& element = form->associatedElements(); const FormAssociatedElement::List& element = form->associatedElements();
for (Vector<FormAssociatedElement*>::const_iterator i(element.begin()); i != element.end(); ++i) { for (FormAssociatedElement::List::const_iterator i(element.begin()); i != element.end(); ++i) {
if (!(*i)->isFormControlElement()) if (!(*i)->isFormControlElement())
continue; continue;
...@@ -198,8 +198,8 @@ bool buildSearchString(const HTMLFormElement* form, Vector<char>* encodedString, ...@@ -198,8 +198,8 @@ bool buildSearchString(const HTMLFormElement* form, Vector<char>* encodedString,
{ {
bool isElementFound = false; bool isElementFound = false;
Vector<FormAssociatedElement*> elements = form->associatedElements(); const FormAssociatedElement::List& elements = form->associatedElements();
for (Vector<FormAssociatedElement*>::const_iterator i(elements.begin()); i != elements.end(); ++i) { for (FormAssociatedElement::List::const_iterator i(elements.begin()); i != elements.end(); ++i) {
if (!(*i)->isFormControlElement()) if (!(*i)->isFormControlElement())
continue; continue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment