author | Andrea Marchesini <amarchesini@mozilla.com> |
Wed, 19 Jun 2013 10:24:37 -0400 | |
changeset 135634 | 192cecc0111e5a7c30fe2a0c83aed53d444dce91 |
parent 135633 | 798c709e591fd4000f80eb90e9d98a74fc7b1dc5 |
child 135635 | 259e68f8843dd7c9af1766cb6092434f276c2db6 |
push id | 24847 |
push user | kwierso@gmail.com |
push date | Wed, 19 Jun 2013 23:38:15 +0000 |
treeherder | mozilla-central@8ea92aeab783 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 841442 |
milestone | 24.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/content/base/public/nsINode.h +++ b/content/base/public/nsINode.h @@ -272,17 +272,17 @@ public: // Among the sub-classes that inherit (directly or indirectly) from nsINode, // measurement of the following members may be added later if DMD finds it is // worthwhile: // - nsGenericHTMLElement: mForm, mFieldSet // - nsGenericHTMLFrameElement: mFrameLoader (bug 672539) // - HTMLBodyElement: mContentStyleRule // - HTMLDataListElement: mOptions // - HTMLFieldSetElement: mElements, mDependentElements, mFirstLegend - // - nsHTMLFormElement: many! + // - HTMLFormElement: many! // - HTMLFrameSetElement: mRowSpecs, mColSpecs // - HTMLInputElement: mInputData, mFiles, mFileList, mStaticDocfileList // - nsHTMLMapElement: mAreas // - HTMLMediaElement: many! // - nsHTMLOutputElement: mDefaultValue, mTokenList // - nsHTMLRowElement: mCells // - nsHTMLSelectElement: mOptions, mRestoreState // - nsHTMLTableElement: mTBodies, mRows, mTableInheritedAttributes
--- a/content/base/src/nsFormData.cpp +++ b/content/base/src/nsFormData.cpp @@ -1,17 +1,17 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsFormData.h" #include "nsIVariant.h" #include "nsIInputStream.h" #include "nsIDOMFile.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozilla/dom/FormDataBinding.h" #include "nsContentUtils.h" using namespace mozilla; using namespace mozilla::dom; nsFormData::nsFormData(nsISupports* aOwner) : nsFormSubmission(NS_LITERAL_CSTRING("UTF-8"), nullptr) @@ -104,17 +104,17 @@ nsFormData::Append(const nsAString& aNam /* virtual */ JSObject* nsFormData::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aScope) { return FormDataBinding::Wrap(aCx, aScope, this); } /* static */ already_AddRefed<nsFormData> nsFormData::Constructor(const GlobalObject& aGlobal, - const Optional<nsHTMLFormElement*>& aFormElement, + const Optional<HTMLFormElement*>& aFormElement, ErrorResult& aRv) { nsRefPtr<nsFormData> formData = new nsFormData(aGlobal.Get()); if (aFormElement.WasPassed()) { MOZ_ASSERT(aFormElement.Value()); aRv = aFormElement.Value()->WalkFormElements(formData); } return formData.forget();
--- a/content/base/src/nsFormData.h +++ b/content/base/src/nsFormData.h @@ -9,23 +9,23 @@ #include "nsIDOMFormData.h" #include "nsIXMLHttpRequest.h" #include "nsFormSubmission.h" #include "nsWrapperCache.h" #include "nsTArray.h" #include "mozilla/ErrorResult.h" #include "mozilla/dom/BindingDeclarations.h" -class nsHTMLFormElement; class nsIDOMFile; namespace mozilla { class ErrorResult; namespace dom { +class HTMLFormElement; class GlobalObject; } // namespace dom } // namespace mozilla class nsFormData : public nsIDOMFormData, public nsIXHRSendable, public nsFormSubmission, public nsWrapperCache @@ -47,17 +47,17 @@ public: // WebIDL nsISupports* GetParentObject() const { return mOwner; } static already_AddRefed<nsFormData> Constructor(const mozilla::dom::GlobalObject& aGlobal, - const mozilla::dom::Optional<nsHTMLFormElement*>& aFormElement, + const mozilla::dom::Optional<mozilla::dom::HTMLFormElement*>& aFormElement, mozilla::ErrorResult& aRv); void Append(const nsAString& aName, const nsAString& aValue); void Append(const nsAString& aName, nsIDOMBlob* aBlob, const mozilla::dom::Optional<nsAString>& aFilename); // nsFormSubmission virtual nsresult GetEncodedSubmission(nsIURI* aURI, nsIInputStream** aPostDataStream) MOZ_OVERRIDE;
--- a/content/events/src/nsIMEStateManager.cpp +++ b/content/events/src/nsIMEStateManager.cpp @@ -26,17 +26,17 @@ #include "nsISelectionListener.h" #include "nsISelectionController.h" #include "nsIMutationObserver.h" #include "nsContentEventHandler.h" #include "nsIObserverService.h" #include "mozilla/Services.h" #include "nsIFormControl.h" #include "nsIForm.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozilla/Attributes.h" #include "nsEventDispatcher.h" #include "TextComposition.h" #include "mozilla/Preferences.h" #include "nsAsyncDOMEvent.h" using namespace mozilla; using namespace mozilla::widget; @@ -482,17 +482,17 @@ nsIMEStateManager::SetIMEState(const IME mozilla::dom::Element* formElement = control->GetFormElement(); nsCOMPtr<nsIForm> form; if (control) { // is this a form and does it have a default submit element? if ((form = do_QueryInterface(formElement)) && form->GetDefaultSubmitElement()) { willSubmit = true; // is this an html form and does it only have a single text input element? } else if (formElement && formElement->Tag() == nsGkAtoms::form && formElement->IsHTML() && - static_cast<nsHTMLFormElement*>(formElement)->HasSingleTextControl()) { + static_cast<dom::HTMLFormElement*>(formElement)->HasSingleTextControl()) { willSubmit = true; } } context.mActionHint.Assign(willSubmit ? control->GetType() == NS_FORM_INPUT_SEARCH ? NS_LITERAL_STRING("search") : NS_LITERAL_STRING("go") : formElement ? NS_LITERAL_STRING("next")
--- a/content/html/content/src/HTMLButtonElement.cpp +++ b/content/html/content/src/HTMLButtonElement.cpp @@ -24,17 +24,17 @@ #include "nsIDocument.h" #include "nsGUIEvent.h" #include "nsUnicharUtils.h" #include "nsLayoutUtils.h" #include "nsEventDispatcher.h" #include "nsPresState.h" #include "nsError.h" #include "nsFocusManager.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozAutoDocUpdate.h" #define NS_IN_SUBMIT_CLICK (1 << 0) #define NS_OUTER_ACTIVATE_EVENT (1 << 1) NS_IMPL_NS_NEW_HTML_ELEMENT_CHECK_PARSER(Button) namespace mozilla { @@ -366,17 +366,17 @@ HTMLButtonElement::PostHandleEvent(nsEve mForm->HasAttr(kNameSpaceID_None, nsGkAtoms::novalidate) || // We know the element is a submit control, if this check is moved, // make sure formnovalidate is used only if it's a submit control. HasAttr(kNameSpaceID_None, nsGkAtoms::formnovalidate) || mForm->CheckValidFormSubmission())) { // TODO: removing this code and have the submit event sent by the form // see bug 592124. // Hold a strong ref while dispatching - nsRefPtr<nsHTMLFormElement> form(mForm); + nsRefPtr<HTMLFormElement> form(mForm); presShell->HandleDOMEventWithTarget(mForm, &event, &status); aVisitor.mEventStatus = nsEventStatus_eConsumeNoDefault; } } } } else if ((aVisitor.mItemFlags & NS_IN_SUBMIT_CLICK) && mForm) { // Tell the form to flush a possible pending submission. // the reason is that the script returned false (the event was
--- a/content/html/content/src/HTMLFieldSetElement.h +++ b/content/html/content/src/HTMLFieldSetElement.h @@ -5,17 +5,17 @@ #ifndef mozilla_dom_HTMLFieldSetElement_h #define mozilla_dom_HTMLFieldSetElement_h #include "mozilla/Attributes.h" #include "nsGenericHTMLElement.h" #include "nsIDOMHTMLFieldSetElement.h" #include "nsIConstraintValidation.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozilla/dom/ValidityState.h" namespace mozilla { namespace dom { class HTMLFieldSetElement : public nsGenericHTMLFormElement, public nsIDOMHTMLFieldSetElement, public nsIConstraintValidation
rename from content/html/content/src/nsHTMLFormElement.cpp rename to content/html/content/src/HTMLFormElement.cpp --- a/content/html/content/src/nsHTMLFormElement.cpp +++ b/content/html/content/src/HTMLFormElement.cpp @@ -1,13 +1,14 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "nsHTMLFormElement.h" + +#include "mozilla/dom/HTMLFormElement.h" #include "nsIHTMLDocument.h" #include "nsEventStateManager.h" #include "nsEventStates.h" #include "nsGkAtoms.h" #include "nsStyleConsts.h" #include "nsPresContext.h" #include "nsIDocument.h" #include "nsIFormControlFrame.h" @@ -52,43 +53,63 @@ #include "nsIDOMHTMLButtonElement.h" #include "mozilla/dom/HTMLCollectionBinding.h" #include "mozilla/dom/BindingUtils.h" #include "nsSandboxFlags.h" // images #include "mozilla/dom/HTMLImageElement.h" -using namespace mozilla::dom; +DOMCI_NODE_DATA(HTMLFormElement, mozilla::dom::HTMLFormElement) + +// construction, destruction +nsGenericHTMLElement* +NS_NewHTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo, + mozilla::dom::FromParser aFromParser) +{ + mozilla::dom::HTMLFormElement* it = new mozilla::dom::HTMLFormElement(aNodeInfo); + + nsresult rv = it->Init(); + + if (NS_FAILED(rv)) { + delete it; + return nullptr; + } + + return it; +} + +namespace mozilla { +namespace dom { static const int NS_FORM_CONTROL_LIST_HASHTABLE_SIZE = 16; static const uint8_t NS_FORM_AUTOCOMPLETE_ON = 1; static const uint8_t NS_FORM_AUTOCOMPLETE_OFF = 0; static const nsAttrValue::EnumTable kFormAutocompleteTable[] = { { "on", NS_FORM_AUTOCOMPLETE_ON }, { "off", NS_FORM_AUTOCOMPLETE_OFF }, { 0 } }; // Default autocomplete value is 'on'. static const nsAttrValue::EnumTable* kFormDefaultAutocomplete = &kFormAutocompleteTable[0]; -// nsHTMLFormElement - -bool nsHTMLFormElement::gFirstFormSubmitted = false; -bool nsHTMLFormElement::gPasswordManagerInitialized = false; +// HTMLFormElement + +bool HTMLFormElement::gFirstFormSubmitted = false; +bool HTMLFormElement::gPasswordManagerInitialized = false; // nsFormControlList class nsFormControlList : public nsIHTMLCollection, public nsWrapperCache { public: - nsFormControlList(nsHTMLFormElement* aForm); + nsFormControlList(HTMLFormElement* aForm); virtual ~nsFormControlList(); nsresult Init(); void DropFormReference(); NS_DECL_CYCLE_COLLECTING_ISUPPORTS @@ -129,17 +150,17 @@ public: // nsWrapperCache virtual JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> scope) MOZ_OVERRIDE { return HTMLCollectionBinding::Wrap(cx, scope, this); } - nsHTMLFormElement* mForm; // WEAK - the form owns me + HTMLFormElement* mForm; // WEAK - the form owns me nsTArray<nsGenericHTMLFormElement*> mElements; // Holds WEAK references - bug 36639 // This array holds on to all form controls that are not contained // in mElements (form.elements in JS, see ShouldBeInFormControl()). // This is needed to properly clean up the bi-directional references // (both weak and strong) between the form and its form controls. @@ -204,36 +225,19 @@ ShouldBeInElements(nsIFormControl* aForm // form.elements array // // NS_FORM_INPUT_IMAGE // NS_FORM_LABEL return false; } -// nsHTMLFormElement implementation - -// construction, destruction -nsGenericHTMLElement* -NS_NewHTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo, - FromParser aFromParser) -{ - nsHTMLFormElement* it = new nsHTMLFormElement(aNodeInfo); - - nsresult rv = it->Init(); - - if (NS_FAILED(rv)) { - delete it; - return nullptr; - } - - return it; -} - -nsHTMLFormElement::nsHTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo) +// HTMLFormElement implementation + +HTMLFormElement::HTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo) : nsGenericHTMLElement(aNodeInfo), mGeneratingSubmit(false), mGeneratingReset(false), mIsSubmitting(false), mDeferSubmission(false), mNotifiedObservers(false), mNotifiedObserversResult(false), mSubmitPopupState(openAbused), @@ -245,27 +249,27 @@ nsHTMLFormElement::nsHTMLFormElement(alr mFirstSubmitNotInElements(nullptr), mInvalidElementsCount(0), mEverTriedInvalidSubmit(false) { mImageNameLookupTable.Init(NS_FORM_CONTROL_LIST_HASHTABLE_SIZE); mPastNameLookupTable.Init(NS_FORM_CONTROL_LIST_HASHTABLE_SIZE); } -nsHTMLFormElement::~nsHTMLFormElement() +HTMLFormElement::~HTMLFormElement() { if (mControls) { mControls->DropFormReference(); } Clear(); } nsresult -nsHTMLFormElement::Init() +HTMLFormElement::Init() { mControls = new nsFormControlList(this); if (!mControls) { return NS_ERROR_OUT_OF_MEMORY; } nsresult rv = mControls->Init(); @@ -291,64 +295,62 @@ ElementTraverser(const nsAString& key, n { nsCycleCollectionTraversalCallback *cb = static_cast<nsCycleCollectionTraversalCallback*>(userArg); cb->NoteXPCOMChild(element); return PL_DHASH_NEXT; } -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsHTMLFormElement, +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLFormElement, nsGenericHTMLElement) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mControls) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mImageNameLookupTable) NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPastNameLookupTable) tmp->mSelectedRadioButtons.EnumerateRead(ElementTraverser, &cb); NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END -NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsHTMLFormElement, +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLFormElement, nsGenericHTMLElement) tmp->Clear(); NS_IMPL_CYCLE_COLLECTION_UNLINK_END -NS_IMPL_ADDREF_INHERITED(nsHTMLFormElement, Element) -NS_IMPL_RELEASE_INHERITED(nsHTMLFormElement, Element) - - -DOMCI_NODE_DATA(HTMLFormElement, nsHTMLFormElement) - -// QueryInterface implementation for nsHTMLFormElement -NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsHTMLFormElement) +NS_IMPL_ADDREF_INHERITED(HTMLFormElement, Element) +NS_IMPL_RELEASE_INHERITED(HTMLFormElement, Element) + + +// QueryInterface implementation for HTMLFormElement +NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLFormElement) NS_HTML_CONTENT_INTERFACES(nsGenericHTMLElement) - NS_INTERFACE_TABLE_INHERITED4(nsHTMLFormElement, + NS_INTERFACE_TABLE_INHERITED4(HTMLFormElement, nsIDOMHTMLFormElement, nsIForm, nsIWebProgressListener, nsIRadioGroupContainer) NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(HTMLFormElement) NS_ELEMENT_INTERFACE_MAP_END // nsIDOMHTMLFormElement -NS_IMPL_ELEMENT_CLONE_WITH_INIT(nsHTMLFormElement) +NS_IMPL_ELEMENT_CLONE_WITH_INIT(HTMLFormElement) NS_IMETHODIMP -nsHTMLFormElement::GetElements(nsIDOMHTMLCollection** aElements) +HTMLFormElement::GetElements(nsIDOMHTMLCollection** aElements) { *aElements = mControls; NS_ADDREF(*aElements); return NS_OK; } nsresult -nsHTMLFormElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName, - nsIAtom* aPrefix, const nsAString& aValue, - bool aNotify) +HTMLFormElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName, + nsIAtom* aPrefix, const nsAString& aValue, + bool aNotify) { if ((aName == nsGkAtoms::action || aName == nsGkAtoms::target) && aNameSpaceID == kNameSpaceID_None) { if (mPendingSubmission) { // aha, there is a pending submission that means we're in // the script and we need to flush it. let's tell it // that the event was ignored to force the flush. // the second argument is not playing a role at all. @@ -360,18 +362,18 @@ nsHTMLFormElement::SetAttr(int32_t aName ForgetCurrentSubmission(); mNotifiedObservers = notifiedObservers; } return nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue, aNotify); } nsresult -nsHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName, - const nsAttrValue* aValue, bool aNotify) +HTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName, + const nsAttrValue* aValue, bool aNotify) { if (aName == nsGkAtoms::novalidate && aNameSpaceID == kNameSpaceID_None) { // Update all form elements states because they might be [no longer] // affected by :-moz-ui-valid or :-moz-ui-invalid. for (uint32_t i = 0, length = mControls->mElements.Length(); i < length; ++i) { mControls->mElements[i]->UpdateState(true); } @@ -380,30 +382,30 @@ nsHTMLFormElement::AfterSetAttr(int32_t i < length; ++i) { mControls->mNotInElements[i]->UpdateState(true); } } return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue, aNotify); } -NS_IMPL_STRING_ATTR(nsHTMLFormElement, AcceptCharset, acceptcharset) -NS_IMPL_ACTION_ATTR(nsHTMLFormElement, Action, action) -NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(nsHTMLFormElement, Autocomplete, autocomplete, +NS_IMPL_STRING_ATTR(HTMLFormElement, AcceptCharset, acceptcharset) +NS_IMPL_ACTION_ATTR(HTMLFormElement, Action, action) +NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(HTMLFormElement, Autocomplete, autocomplete, kFormDefaultAutocomplete->tag) -NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(nsHTMLFormElement, Enctype, enctype, +NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(HTMLFormElement, Enctype, enctype, kFormDefaultEnctype->tag) -NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(nsHTMLFormElement, Method, method, +NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(HTMLFormElement, Method, method, kFormDefaultMethod->tag) -NS_IMPL_BOOL_ATTR(nsHTMLFormElement, NoValidate, novalidate) -NS_IMPL_STRING_ATTR(nsHTMLFormElement, Name, name) -NS_IMPL_STRING_ATTR(nsHTMLFormElement, Target, target) +NS_IMPL_BOOL_ATTR(HTMLFormElement, NoValidate, novalidate) +NS_IMPL_STRING_ATTR(HTMLFormElement, Name, name) +NS_IMPL_STRING_ATTR(HTMLFormElement, Target, target) NS_IMETHODIMP -nsHTMLFormElement::Submit() +HTMLFormElement::Submit() { // Send the submit event nsresult rv = NS_OK; nsRefPtr<nsPresContext> presContext = GetPresContext(); if (mPendingSubmission) { // aha, we have a pending submission that was not flushed // (this happens when form.submit() is called twice) // we have to delete it and build a new one since values @@ -411,36 +413,36 @@ nsHTMLFormElement::Submit() mPendingSubmission = nullptr; } rv = DoSubmitOrReset(nullptr, NS_FORM_SUBMIT); return rv; } NS_IMETHODIMP -nsHTMLFormElement::Reset() +HTMLFormElement::Reset() { nsFormEvent event(true, NS_FORM_RESET); nsEventDispatcher::Dispatch(static_cast<nsIContent*>(this), nullptr, &event); return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::CheckValidity(bool* retVal) +HTMLFormElement::CheckValidity(bool* retVal) { *retVal = CheckFormValidity(nullptr); return NS_OK; } bool -nsHTMLFormElement::ParseAttribute(int32_t aNamespaceID, - nsIAtom* aAttribute, - const nsAString& aValue, - nsAttrValue& aResult) +HTMLFormElement::ParseAttribute(int32_t aNamespaceID, + nsIAtom* aAttribute, + const nsAString& aValue, + nsAttrValue& aResult) { if (aNamespaceID == kNameSpaceID_None) { if (aAttribute == nsGkAtoms::method) { return aResult.ParseEnumValue(aValue, kFormMethodTable, false); } if (aAttribute == nsGkAtoms::enctype) { return aResult.ParseEnumValue(aValue, kFormEnctypeTable, false); } @@ -449,19 +451,19 @@ nsHTMLFormElement::ParseAttribute(int32_ } } return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue, aResult); } nsresult -nsHTMLFormElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, - nsIContent* aBindingParent, - bool aCompileEventHandlers) +HTMLFormElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, + nsIContent* aBindingParent, + bool aCompileEventHandlers) { nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent, aBindingParent, aCompileEventHandlers); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(aDocument)); if (htmlDoc) { @@ -563,17 +565,17 @@ CollectOrphans(nsINode* aRemovalRoot, nsCOMPtr<nsIDOMHTMLFormElement> form = node->GetForm(); NS_ASSERTION(form == aThisForm, "How did that happen?"); } #endif /* DEBUG */ } } void -nsHTMLFormElement::UnbindFromTree(bool aDeep, bool aNullParent) +HTMLFormElement::UnbindFromTree(bool aDeep, bool aNullParent) { nsCOMPtr<nsIHTMLDocument> oldDocument = do_QueryInterface(GetCurrentDoc()); // Mark all of our controls as maybe being orphans MarkOrphans(mControls->mElements); MarkOrphans(mControls->mNotInElements); MarkOrphans(mImageElements); @@ -607,17 +609,17 @@ nsHTMLFormElement::UnbindFromTree(bool a if (oldDocument) { oldDocument->RemovedForm(); } ForgetCurrentSubmission(); } nsresult -nsHTMLFormElement::PreHandleEvent(nsEventChainPreVisitor& aVisitor) +HTMLFormElement::PreHandleEvent(nsEventChainPreVisitor& aVisitor) { aVisitor.mWantsWillHandleEvent = true; if (aVisitor.mEvent->originalTarget == static_cast<nsIContent*>(this)) { uint32_t msg = aVisitor.mEvent->message; if (msg == NS_FORM_SUBMIT) { if (mGeneratingSubmit) { aVisitor.mCanHandle = false; return NS_OK; @@ -636,32 +638,32 @@ nsHTMLFormElement::PreHandleEvent(nsEven } mGeneratingReset = true; } } return nsGenericHTMLElement::PreHandleEvent(aVisitor); } nsresult -nsHTMLFormElement::WillHandleEvent(nsEventChainPostVisitor& aVisitor) +HTMLFormElement::WillHandleEvent(nsEventChainPostVisitor& aVisitor) { // If this is the bubble stage and there is a nested form below us which // received a submit event we do *not* want to handle the submit event // for this form too. if ((aVisitor.mEvent->message == NS_FORM_SUBMIT || aVisitor.mEvent->message == NS_FORM_RESET) && aVisitor.mEvent->mFlags.mInBubblingPhase && aVisitor.mEvent->originalTarget != static_cast<nsIContent*>(this)) { aVisitor.mEvent->mFlags.mPropagationStopped = true; } return NS_OK; } nsresult -nsHTMLFormElement::PostHandleEvent(nsEventChainPostVisitor& aVisitor) +HTMLFormElement::PostHandleEvent(nsEventChainPostVisitor& aVisitor) { if (aVisitor.mEvent->originalTarget == static_cast<nsIContent*>(this)) { uint32_t msg = aVisitor.mEvent->message; if (msg == NS_FORM_SUBMIT) { // let the form know not to defer subsequent submissions mDeferSubmission = false; } @@ -698,18 +700,18 @@ nsHTMLFormElement::PostHandleEvent(nsEve else if (msg == NS_FORM_RESET) { mGeneratingReset = false; } } return NS_OK; } nsresult -nsHTMLFormElement::DoSubmitOrReset(nsEvent* aEvent, - int32_t aMessage) +HTMLFormElement::DoSubmitOrReset(nsEvent* aEvent, + int32_t aMessage) { // Make sure the presentation is up-to-date nsIDocument* doc = GetCurrentDoc(); if (doc) { doc->FlushPendingNotifications(Flush_ContentAndNotify); } // JBK Don't get form frames anymore - bug 34297 @@ -728,17 +730,17 @@ nsHTMLFormElement::DoSubmitOrReset(nsEve return DoSubmit(aEvent); } MOZ_ASSERT(false); return NS_OK; } nsresult -nsHTMLFormElement::DoReset() +HTMLFormElement::DoReset() { // JBK walk the elements[] array instead of form frame controls - bug 34297 uint32_t numElements = GetElementCount(); for (uint32_t elementX = 0; elementX < numElements; ++elementX) { // Hold strong ref in case the reset does something weird nsCOMPtr<nsIFormControl> controlNode = GetElementAt(elementX); if (controlNode) { controlNode->Reset(); @@ -750,17 +752,17 @@ nsHTMLFormElement::DoReset() #define NS_ENSURE_SUBMIT_SUCCESS(rv) \ if (NS_FAILED(rv)) { \ ForgetCurrentSubmission(); \ return rv; \ } nsresult -nsHTMLFormElement::DoSubmit(nsEvent* aEvent) +HTMLFormElement::DoSubmit(nsEvent* aEvent) { NS_ASSERTION(GetCurrentDoc(), "Should never get here without a current doc"); if (mIsSubmitting) { NS_WARNING("Preventing double form submission"); // XXX Should this return an error? return NS_OK; } @@ -804,18 +806,18 @@ nsHTMLFormElement::DoSubmit(nsEvent* aEv // // perform the submission // return SubmitSubmission(submission); } nsresult -nsHTMLFormElement::BuildSubmission(nsFormSubmission** aFormSubmission, - nsEvent* aEvent) +HTMLFormElement::BuildSubmission(nsFormSubmission** aFormSubmission, + nsEvent* aEvent) { NS_ASSERTION(!mPendingSubmission, "tried to build two submissions!"); // Get the originating frame (failure is non-fatal) nsGenericHTMLElement* originatingElement = nullptr; if (aEvent) { if (NS_FORM_EVENT == aEvent->eventStructType) { nsIContent* originator = ((nsFormEvent *)aEvent)->originator; @@ -842,17 +844,17 @@ nsHTMLFormElement::BuildSubmission(nsFor // rv = WalkFormElements(*aFormSubmission); NS_ENSURE_SUBMIT_SUCCESS(rv); return NS_OK; } nsresult -nsHTMLFormElement::SubmitSubmission(nsFormSubmission* aFormSubmission) +HTMLFormElement::SubmitSubmission(nsFormSubmission* aFormSubmission) { nsresult rv; nsIContent* originatingElement = aFormSubmission->GetOriginatingElement(); // // Get the action and target // nsCOMPtr<nsIURI> actionURI; @@ -976,19 +978,19 @@ nsHTMLFormElement::SubmitSubmission(nsFo } else { ForgetCurrentSubmission(); } return rv; } nsresult -nsHTMLFormElement::NotifySubmitObservers(nsIURI* aActionURL, - bool* aCancelSubmit, - bool aEarlyNotify) +HTMLFormElement::NotifySubmitObservers(nsIURI* aActionURL, + bool* aCancelSubmit, + bool aEarlyNotify) { // If this is the first form, bring alive the first form submit // category observers if (!gFirstFormSubmitted) { gFirstFormSubmitted = true; NS_CreateServicesFromCategory(NS_FIRST_FORMSUBMIT_CATEGORY, nullptr, NS_FIRST_FORMSUBMIT_CATEGORY); @@ -1035,17 +1037,17 @@ nsHTMLFormElement::NotifySubmitObservers } } return rv; } nsresult -nsHTMLFormElement::WalkFormElements(nsFormSubmission* aFormSubmission) +HTMLFormElement::WalkFormElements(nsFormSubmission* aFormSubmission) { nsTArray<nsGenericHTMLFormElement*> sortedControls; nsresult rv = mControls->GetSortedControls(sortedControls); NS_ENSURE_SUCCESS(rv, rv); uint32_t len = sortedControls.Length(); // Hold a reference to the elements so they can't be deleted while @@ -1068,25 +1070,25 @@ nsHTMLFormElement::WalkFormElements(nsFo } return NS_OK; } // nsIForm NS_IMETHODIMP_(uint32_t) -nsHTMLFormElement::GetElementCount() const +HTMLFormElement::GetElementCount() const { uint32_t count = 0; mControls->GetLength(&count); return count; } NS_IMETHODIMP_(nsIFormControl*) -nsHTMLFormElement::GetElementAt(int32_t aIndex) const +HTMLFormElement::GetElementAt(int32_t aIndex) const { return mControls->mElements.SafeElementAt(aIndex, nullptr); } /** * Compares the position of aControl1 and aControl2 in the document * @param aControl1 First control to compare. * @param aControl2 Second control to compare. @@ -1149,17 +1151,17 @@ AssertDocumentOrder(const nsTArray<nsGen aForm) < 0, "Form controls not ordered correctly"); } } } #endif void -nsHTMLFormElement::PostPasswordEvent() +HTMLFormElement::PostPasswordEvent() { // Don't fire another add event if we have a pending add event. if (mFormPasswordEvent.get()) { return; } nsRefPtr<FormPasswordEvent> event = new FormPasswordEvent(this, NS_LITERAL_STRING("DOMFormHasPassword")); @@ -1167,17 +1169,17 @@ nsHTMLFormElement::PostPasswordEvent() event->PostDOMEvent(); } // This function return true if the element, once appended, is the last one in // the array. template<typename ElementType> static bool AddElementToList(nsTArray<ElementType*>& aList, ElementType* aChild, - nsHTMLFormElement* aForm) + HTMLFormElement* aForm) { NS_ASSERTION(aList.IndexOf(aChild) == aList.NoIndex, "aChild already in aList"); uint32_t count = aList.Length(); ElementType* element; bool lastElement = false; @@ -1214,18 +1216,18 @@ AddElementToList(nsTArray<ElementType*>& // WEAK - don't addref aList.InsertElementAt(low, aChild); } return lastElement; } nsresult -nsHTMLFormElement::AddElement(nsGenericHTMLFormElement* aChild, - bool aUpdateValidity, bool aNotify) +HTMLFormElement::AddElement(nsGenericHTMLFormElement* aChild, + bool aUpdateValidity, bool aNotify) { // If an element has a @form, we can assume it *might* be able to not have // a parent and still be in the form. NS_ASSERTION(aChild->HasAttr(kNameSpaceID_None, nsGkAtoms::form) || aChild->GetParent(), "Form control should have a parent"); // Determine whether to add the new element to the elements or @@ -1319,26 +1321,26 @@ nsHTMLFormElement::AddElement(nsGenericH static_cast<HTMLInputElement*>(aChild); radio->AddedToRadioGroup(); } return NS_OK; } nsresult -nsHTMLFormElement::AddElementToTable(nsGenericHTMLFormElement* aChild, - const nsAString& aName) +HTMLFormElement::AddElementToTable(nsGenericHTMLFormElement* aChild, + const nsAString& aName) { return mControls->AddElementToTable(aChild, aName); } nsresult -nsHTMLFormElement::RemoveElement(nsGenericHTMLFormElement* aChild, - bool aUpdateValidity) +HTMLFormElement::RemoveElement(nsGenericHTMLFormElement* aChild, + bool aUpdateValidity) { // // Remove it from the radio group if it's a radio button // nsresult rv = NS_OK; if (aChild->GetType() == NS_FORM_INPUT_RADIO) { nsRefPtr<HTMLInputElement> radio = static_cast<HTMLInputElement*>(aChild); @@ -1396,17 +1398,17 @@ nsHTMLFormElement::RemoveElement(nsGener UpdateValidity(true); } } return rv; } void -nsHTMLFormElement::HandleDefaultSubmitRemoval() +HTMLFormElement::HandleDefaultSubmitRemoval() { if (mDefaultSubmitElement) { // Already got reset somehow; nothing else to do here return; } if (!mFirstSubmitNotInElements) { mDefaultSubmitElement = mFirstSubmitInElements; @@ -1485,32 +1487,32 @@ static PLDHashOperator RemovePastNames(const nsAString& aName, nsCOMPtr<nsISupports>& aData, void* aClosure) { return aClosure == aData ? PL_DHASH_REMOVE : PL_DHASH_NEXT; } nsresult -nsHTMLFormElement::RemoveElementFromTable(nsGenericHTMLFormElement* aElement, - const nsAString& aName, - RemoveElementReason aRemoveReason) +HTMLFormElement::RemoveElementFromTable(nsGenericHTMLFormElement* aElement, + const nsAString& aName, + RemoveElementReason aRemoveReason) { // If the element is being removed from the form, we have to remove it from // the past names map. if (aRemoveReason == ElementRemoved) { mPastNameLookupTable.Enumerate(RemovePastNames, aElement); } return mControls->RemoveElementFromTable(aElement, aName); } already_AddRefed<nsISupports> -nsHTMLFormElement::FindNamedItem(const nsAString& aName, - nsWrapperCache** aCache) +HTMLFormElement::FindNamedItem(const nsAString& aName, + nsWrapperCache** aCache) { nsCOMPtr<nsISupports> result = DoResolveName(aName, true); if (result) { // FIXME Get the wrapper cache from DoResolveName. *aCache = nullptr; AddToPastNamesMap(aName, result); return result.forget(); } @@ -1527,26 +1529,26 @@ nsHTMLFormElement::FindNamedItem(const n *aCache = nullptr; return result.forget(); } return nullptr; } already_AddRefed<nsISupports> -nsHTMLFormElement::DoResolveName(const nsAString& aName, - bool aFlushContent) +HTMLFormElement::DoResolveName(const nsAString& aName, + bool aFlushContent) { nsCOMPtr<nsISupports> result = mControls->NamedItemInternal(aName, aFlushContent); return result.forget(); } void -nsHTMLFormElement::OnSubmitClickBegin(nsIContent* aOriginatingElement) +HTMLFormElement::OnSubmitClickBegin(nsIContent* aOriginatingElement) { mDeferSubmission = true; // Prepare to run NotifySubmitObservers early before the // scripts on the page get to modify the form data, possibly // throwing off any password manager. (bug 257781) nsCOMPtr<nsIURI> actionURI; nsresult rv; @@ -1564,36 +1566,36 @@ nsHTMLFormElement::OnSubmitClickBegin(ns if (NS_SUCCEEDED(rv)) { mNotifiedObservers = true; mNotifiedObserversResult = cancelSubmit; } } } void -nsHTMLFormElement::OnSubmitClickEnd() +HTMLFormElement::OnSubmitClickEnd() { mDeferSubmission = false; } void -nsHTMLFormElement::FlushPendingSubmission() +HTMLFormElement::FlushPendingSubmission() { if (mPendingSubmission) { // Transfer owning reference so that the submissioin doesn't get deleted // if we reenter nsAutoPtr<nsFormSubmission> submission = mPendingSubmission; SubmitSubmission(submission); } } nsresult -nsHTMLFormElement::GetActionURL(nsIURI** aActionURL, - nsIContent* aOriginatingElement) +HTMLFormElement::GetActionURL(nsIURI** aActionURL, + nsIContent* aOriginatingElement) { nsresult rv = NS_OK; *aActionURL = nullptr; // // Grab the URL string // @@ -1688,27 +1690,27 @@ nsHTMLFormElement::GetActionURL(nsIURI** // *aActionURL = actionURL; NS_ADDREF(*aActionURL); return rv; } NS_IMETHODIMP_(nsIFormControl*) -nsHTMLFormElement::GetDefaultSubmitElement() const +HTMLFormElement::GetDefaultSubmitElement() const { NS_PRECONDITION(mDefaultSubmitElement == mFirstSubmitInElements || mDefaultSubmitElement == mFirstSubmitNotInElements, "What happened here?"); return mDefaultSubmitElement; } bool -nsHTMLFormElement::IsDefaultSubmitElement(const nsIFormControl* aControl) const +HTMLFormElement::IsDefaultSubmitElement(const nsIFormControl* aControl) const { NS_PRECONDITION(aControl, "Unexpected call"); if (aControl == mDefaultSubmitElement) { // Yes, it is return true; } @@ -1733,65 +1735,65 @@ nsHTMLFormElement::IsDefaultSubmitElemen nsIFormControl* defaultSubmit = CompareFormControlPosition(mFirstSubmitInElements, mFirstSubmitNotInElements, this) < 0 ? mFirstSubmitInElements : mFirstSubmitNotInElements; return aControl == defaultSubmit; } bool -nsHTMLFormElement::HasSingleTextControl() const +HTMLFormElement::HasSingleTextControl() const { // Input text controls are always in the elements list. uint32_t numTextControlsFound = 0; uint32_t length = mControls->mElements.Length(); for (uint32_t i = 0; i < length && numTextControlsFound < 2; ++i) { if (mControls->mElements[i]->IsSingleLineTextControl(false)) { numTextControlsFound++; } } return numTextControlsFound == 1; } NS_IMETHODIMP -nsHTMLFormElement::GetEncoding(nsAString& aEncoding) +HTMLFormElement::GetEncoding(nsAString& aEncoding) { return GetEnctype(aEncoding); } NS_IMETHODIMP -nsHTMLFormElement::SetEncoding(const nsAString& aEncoding) +HTMLFormElement::SetEncoding(const nsAString& aEncoding) { return SetEnctype(aEncoding); } NS_IMETHODIMP -nsHTMLFormElement::GetLength(int32_t* aLength) +HTMLFormElement::GetLength(int32_t* aLength) { uint32_t length; nsresult rv = mControls->GetLength(&length); *aLength = length; return rv; } void -nsHTMLFormElement::ForgetCurrentSubmission() +HTMLFormElement::ForgetCurrentSubmission() { mNotifiedObservers = false; mIsSubmitting = false; mSubmittingRequest = nullptr; nsCOMPtr<nsIWebProgress> webProgress = do_QueryReferent(mWebProgress); if (webProgress) { webProgress->RemoveProgressListener(this); } mWebProgress = nullptr; } bool -nsHTMLFormElement::CheckFormValidity(nsIMutableArray* aInvalidElements) const +HTMLFormElement::CheckFormValidity(nsIMutableArray* aInvalidElements) const { bool ret = true; nsTArray<nsGenericHTMLFormElement*> sortedControls; if (NS_FAILED(mControls->GetSortedControls(sortedControls))) { return false; } @@ -1828,17 +1830,17 @@ nsHTMLFormElement::CheckFormValidity(nsI for (uint32_t i = 0; i < len; ++i) { static_cast<nsGenericHTMLElement*>(sortedControls[i])->Release(); } return ret; } bool -nsHTMLFormElement::CheckValidFormSubmission() +HTMLFormElement::CheckValidFormSubmission() { /** * Check for form validity: do not submit a form if there are unhandled * invalid controls in the form. * This should not be done if the form has been submitted with .submit(). * * NOTE: for the moment, we are also checking that there is an observer for * NS_INVALIDFORMSUBMIT_SUBJECT so it will prevent blocking form submission @@ -1943,17 +1945,17 @@ nsHTMLFormElement::CheckValidFormSubmiss NS_WARNING("There is no observer for \"invalidformsubmit\". \ One should be implemented!"); } return true; } void -nsHTMLFormElement::UpdateValidity(bool aElementValidity) +HTMLFormElement::UpdateValidity(bool aElementValidity) { if (aElementValidity) { --mInvalidElementsCount; } else { ++mInvalidElementsCount; } NS_ASSERTION(mInvalidElementsCount >= 0, "Something went seriously wrong!"); @@ -1993,99 +1995,99 @@ nsHTMLFormElement::UpdateValidity(bool a } } UpdateState(true); } // nsIWebProgressListener NS_IMETHODIMP -nsHTMLFormElement::OnStateChange(nsIWebProgress* aWebProgress, - nsIRequest* aRequest, - uint32_t aStateFlags, - nsresult aStatus) +HTMLFormElement::OnStateChange(nsIWebProgress* aWebProgress, + nsIRequest* aRequest, + uint32_t aStateFlags, + nsresult aStatus) { // If STATE_STOP is never fired for any reason (redirect? Failed state // change?) the form element will leak. It will be kept around by the // nsIWebProgressListener (assuming it keeps a strong pointer). We will // consequently leak the request. if (aRequest == mSubmittingRequest && aStateFlags & nsIWebProgressListener::STATE_STOP) { ForgetCurrentSubmission(); } return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::OnProgressChange(nsIWebProgress* aWebProgress, - nsIRequest* aRequest, - int32_t aCurSelfProgress, - int32_t aMaxSelfProgress, - int32_t aCurTotalProgress, - int32_t aMaxTotalProgress) +HTMLFormElement::OnProgressChange(nsIWebProgress* aWebProgress, + nsIRequest* aRequest, + int32_t aCurSelfProgress, + int32_t aMaxSelfProgress, + int32_t aCurTotalProgress, + int32_t aMaxTotalProgress) { NS_NOTREACHED("notification excluded in AddProgressListener(...)"); return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::OnLocationChange(nsIWebProgress* aWebProgress, - nsIRequest* aRequest, - nsIURI* location, - uint32_t aFlags) +HTMLFormElement::OnLocationChange(nsIWebProgress* aWebProgress, + nsIRequest* aRequest, + nsIURI* location, + uint32_t aFlags) { NS_NOTREACHED("notification excluded in AddProgressListener(...)"); return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::OnStatusChange(nsIWebProgress* aWebProgress, - nsIRequest* aRequest, - nsresult aStatus, - const PRUnichar* aMessage) +HTMLFormElement::OnStatusChange(nsIWebProgress* aWebProgress, + nsIRequest* aRequest, + nsresult aStatus, + const PRUnichar* aMessage) { NS_NOTREACHED("notification excluded in AddProgressListener(...)"); return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::OnSecurityChange(nsIWebProgress* aWebProgress, - nsIRequest* aRequest, - uint32_t state) +HTMLFormElement::OnSecurityChange(nsIWebProgress* aWebProgress, + nsIRequest* aRequest, + uint32_t state) { NS_NOTREACHED("notification excluded in AddProgressListener(...)"); return NS_OK; } NS_IMETHODIMP_(int32_t) -nsHTMLFormElement::IndexOfControl(nsIFormControl* aControl) +HTMLFormElement::IndexOfControl(nsIFormControl* aControl) { int32_t index = 0; return mControls->IndexOfControl(aControl, &index) == NS_OK ? index : 0; } void -nsHTMLFormElement::SetCurrentRadioButton(const nsAString& aName, - nsIDOMHTMLInputElement* aRadio) +HTMLFormElement::SetCurrentRadioButton(const nsAString& aName, + nsIDOMHTMLInputElement* aRadio) { mSelectedRadioButtons.Put(aName, aRadio); } nsIDOMHTMLInputElement* -nsHTMLFormElement::GetCurrentRadioButton(const nsAString& aName) +HTMLFormElement::GetCurrentRadioButton(const nsAString& aName) { return mSelectedRadioButtons.GetWeak(aName); } NS_IMETHODIMP -nsHTMLFormElement::GetNextRadioButton(const nsAString& aName, - const bool aPrevious, - nsIDOMHTMLInputElement* aFocusedRadio, - nsIDOMHTMLInputElement** aRadioOut) +HTMLFormElement::GetNextRadioButton(const nsAString& aName, + const bool aPrevious, + nsIDOMHTMLInputElement* aFocusedRadio, + nsIDOMHTMLInputElement** aRadioOut) { // Return the radio button relative to the focused radio button. // If no radio is focused, get the radio relative to the selected one. *aRadioOut = nullptr; nsCOMPtr<nsIDOMHTMLInputElement> currentRadio; if (aFocusedRadio) { currentRadio = aFocusedRadio; @@ -2135,19 +2137,19 @@ nsHTMLFormElement::GetNextRadioButton(co radio->GetDisabled(&disabled); } while (disabled && radio != currentRadio); NS_IF_ADDREF(*aRadioOut = radio); return NS_OK; } NS_IMETHODIMP -nsHTMLFormElement::WalkRadioGroup(const nsAString& aName, - nsIRadioVisitor* aVisitor, - bool aFlushContent) +HTMLFormElement::WalkRadioGroup(const nsAString& aName, + nsIRadioVisitor* aVisitor, + bool aFlushContent) { if (aName.IsEmpty()) { // // XXX If the name is empty, it's not stored in the control list. There // *must* be a more efficient way to do this. // nsCOMPtr<nsIFormControl> control; uint32_t len = GetElementCount(); @@ -2195,31 +2197,31 @@ nsHTMLFormElement::WalkRadioGroup(const !aVisitor->Visit(formControl)) { break; } } return NS_OK; } void -nsHTMLFormElement::AddToRadioGroup(const nsAString& aName, - nsIFormControl* aRadio) +HTMLFormElement::AddToRadioGroup(const nsAString& aName, + nsIFormControl* aRadio) { nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio); NS_ASSERTION(element, "radio controls have to be content elements!"); if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) { mRequiredRadioButtonCounts.Put(aName, mRequiredRadioButtonCounts.Get(aName)+1); } } void -nsHTMLFormElement::RemoveFromRadioGroup(const nsAString& aName, - nsIFormControl* aRadio) +HTMLFormElement::RemoveFromRadioGroup(const nsAString& aName, + nsIFormControl* aRadio) { nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio); NS_ASSERTION(element, "radio controls have to be content elements!"); if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) { uint32_t requiredNb = mRequiredRadioButtonCounts.Get(aName); NS_ASSERTION(requiredNb >= 1, "At least one radio button has to be required!"); @@ -2228,24 +2230,24 @@ nsHTMLFormElement::RemoveFromRadioGroup( mRequiredRadioButtonCounts.Remove(aName); } else { mRequiredRadioButtonCounts.Put(aName, requiredNb-1); } } } uint32_t -nsHTMLFormElement::GetRequiredRadioCount(const nsAString& aName) const +HTMLFormElement::GetRequiredRadioCount(const nsAString& aName) const { return mRequiredRadioButtonCounts.Get(aName); } void -nsHTMLFormElement::RadioRequiredChanged(const nsAString& aName, - nsIFormControl* aRadio) +HTMLFormElement::RadioRequiredChanged(const nsAString& aName, + nsIFormControl* aRadio) { nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio); NS_ASSERTION(element, "radio controls have to be content elements!"); if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) { mRequiredRadioButtonCounts.Put(aName, mRequiredRadioButtonCounts.Get(aName)+1); } else { @@ -2256,57 +2258,57 @@ nsHTMLFormElement::RadioRequiredChanged( mRequiredRadioButtonCounts.Remove(aName); } else { mRequiredRadioButtonCounts.Put(aName, requiredNb-1); } } } bool -nsHTMLFormElement::GetValueMissingState(const nsAString& aName) const +HTMLFormElement::GetValueMissingState(const nsAString& aName) const { return mValueMissingRadioGroups.Get(aName); } void -nsHTMLFormElement::SetValueMissingState(const nsAString& aName, bool aValue) +HTMLFormElement::SetValueMissingState(const nsAString& aName, bool aValue) { mValueMissingRadioGroups.Put(aName, aValue); } nsEventStates -nsHTMLFormElement::IntrinsicState() const +HTMLFormElement::IntrinsicState() const { nsEventStates state = nsGenericHTMLElement::IntrinsicState(); if (mInvalidElementsCount) { state |= NS_EVENT_STATE_INVALID; } else { state |= NS_EVENT_STATE_VALID; } return state; } void -nsHTMLFormElement::Clear() +HTMLFormElement::Clear() { for (int32_t i = mImageElements.Length() - 1; i >= 0; i--) { mImageElements[i]->ClearForm(false); } mImageElements.Clear(); mImageNameLookupTable.Clear(); mPastNameLookupTable.Clear(); } //---------------------------------------------------------------------- // nsFormControlList implementation, this could go away if there were // a lightweight collection implementation somewhere -nsFormControlList::nsFormControlList(nsHTMLFormElement* aForm) : +nsFormControlList::nsFormControlList(HTMLFormElement* aForm) : mForm(aForm), // Initialize the elements list to have an initial capacity // of 8 to reduce allocations on small forms. mElements(8) { SetIsDOMBinding(); } @@ -2452,17 +2454,17 @@ nsFormControlList::NamedItemInternal(con } return mNameLookupTable.GetWeak(aName); } static nsresult AddElementToTableInternal( nsInterfaceHashtable<nsStringHashKey,nsISupports>& aTable, - nsIContent* aChild, const nsAString& aName, nsHTMLFormElement* aForm) + nsIContent* aChild, const nsAString& aName, HTMLFormElement* aForm) { nsCOMPtr<nsISupports> supports; aTable.Get(aName, getter_AddRefs(supports)); if (!supports) { // No entry found, add the element aTable.Put(aName, aChild); } else { @@ -2701,58 +2703,60 @@ nsFormControlList::GetSupportedNames(nsT FlushPendingNotifications(); // Just enumerate mNameLookupTable. This won't guarantee order, but // that's OK, because the HTML5 spec doesn't define an order for // this enumeration. mNameLookupTable.EnumerateRead(CollectNames, &aNames); } nsresult -nsHTMLFormElement::AddImageElement(HTMLImageElement* aChild) +HTMLFormElement::AddImageElement(HTMLImageElement* aChild) { AddElementToList(mImageElements, aChild, this); return NS_OK; } nsresult -nsHTMLFormElement::AddImageElementToTable(HTMLImageElement* aChild, - const nsAString& aName) +HTMLFormElement::AddImageElementToTable(HTMLImageElement* aChild, + const nsAString& aName) { return AddElementToTableInternal(mImageNameLookupTable, aChild, aName, this); } nsresult -nsHTMLFormElement::RemoveImageElement(HTMLImageElement* aChild) +HTMLFormElement::RemoveImageElement(HTMLImageElement* aChild) { uint32_t index = mImageElements.IndexOf(aChild); NS_ENSURE_STATE(index != mImageElements.NoIndex); mImageElements.RemoveElementAt(index); return NS_OK; } nsresult -nsHTMLFormElement::RemoveImageElementFromTable(HTMLImageElement* aElement, - const nsAString& aName, - RemoveElementReason aRemoveReason) +HTMLFormElement::RemoveImageElementFromTable(HTMLImageElement* aElement, + const nsAString& aName, + RemoveElementReason aRemoveReason) { // If the element is being removed from the form, we have to remove it from // the past names map. if (aRemoveReason == ElementRemoved) { mPastNameLookupTable.Enumerate(RemovePastNames, aElement); } return RemoveElementFromTableInternal(mImageNameLookupTable, aElement, aName); } void -nsHTMLFormElement::AddToPastNamesMap(const nsAString& aName, - nsISupports* aChild) +HTMLFormElement::AddToPastNamesMap(const nsAString& aName, + nsISupports* aChild) { // If candidates contains exactly one node. Add a mapping from name to the // node in candidates in the form element's past names map, replacing the // previous entry with the same name, if any. nsCOMPtr<nsIContent> node = do_QueryInterface(aChild); if (node) { mPastNameLookupTable.Put(aName, aChild); } } - + +} // namespace dom +} // namespace mozilla
rename from content/html/content/src/nsHTMLFormElement.h rename to content/html/content/src/HTMLFormElement.h --- a/content/html/content/src/nsHTMLFormElement.h +++ b/content/html/content/src/HTMLFormElement.h @@ -1,15 +1,15 @@ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef nsHTMLFormElement_h__ -#define nsHTMLFormElement_h__ +#ifndef mozilla_dom_HTMLFormElement_h +#define mozilla_dom_HTMLFormElement_h #include "mozilla/Attributes.h" #include "nsCOMPtr.h" #include "nsIForm.h" #include "nsIFormControl.h" #include "nsFormSubmission.h" #include "nsGenericHTMLElement.h" #include "nsIDOMHTMLFormElement.h" @@ -23,35 +23,39 @@ // Including 'windows.h' will #define GetClassInfo to something else. #ifdef XP_WIN #ifdef GetClassInfo #undef GetClassInfo #endif #endif -class nsFormControlList; class nsIMutableArray; class nsIURI; namespace mozilla { namespace dom { class HTMLImageElement; } } -class nsHTMLFormElement : public nsGenericHTMLElement, - public nsIDOMHTMLFormElement, - public nsIWebProgressListener, - public nsIForm, - public nsIRadioGroupContainer +namespace mozilla { +namespace dom { + +class nsFormControlList; + +class HTMLFormElement : public nsGenericHTMLElement, + public nsIDOMHTMLFormElement, + public nsIWebProgressListener, + public nsIForm, + public nsIRadioGroupContainer { public: - nsHTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo); - virtual ~nsHTMLFormElement(); + HTMLFormElement(already_AddRefed<nsINodeInfo> aNodeInfo); + virtual ~HTMLFormElement(); nsresult Init(); // nsISupports NS_DECL_ISUPPORTS_INHERITED // nsIDOMNode NS_FORWARD_NSIDOMNODE_TO_NSINODE @@ -122,17 +126,17 @@ public: /** * Forget all information about the current submission (and the fact that we * are currently submitting at all). */ void ForgetCurrentSubmission(); virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE; - NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsHTMLFormElement, + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLFormElement, nsGenericHTMLElement) /** * Remove an element from this form's list of elements * * @param aElement the element to remove * @param aUpdateValidity If true, updates the form validity. * @return NS_OK if the element was successfully removed. @@ -313,46 +317,46 @@ public: protected: void PostPasswordEvent(); void EventHandled() { mFormPasswordEvent = nullptr; } class FormPasswordEvent : public nsAsyncDOMEvent { public: - FormPasswordEvent(nsHTMLFormElement* aEventNode, + FormPasswordEvent(HTMLFormElement* aEventNode, const nsAString& aEventType) : nsAsyncDOMEvent(aEventNode, aEventType, true, true) {} NS_IMETHOD Run() MOZ_OVERRIDE { - static_cast<nsHTMLFormElement*>(mEventNode.get())->EventHandled(); + static_cast<HTMLFormElement*>(mEventNode.get())->EventHandled(); return nsAsyncDOMEvent::Run(); } }; nsRefPtr<FormPasswordEvent> mFormPasswordEvent; class RemoveElementRunnable; friend class RemoveElementRunnable; class RemoveElementRunnable : public nsRunnable { public: - RemoveElementRunnable(nsHTMLFormElement* aForm) + RemoveElementRunnable(HTMLFormElement* aForm) : mForm(aForm) {} NS_IMETHOD Run() MOZ_OVERRIDE { mForm->HandleDefaultSubmitRemoval(); return NS_OK; } private: - nsRefPtr<nsHTMLFormElement> mForm; + nsRefPtr<HTMLFormElement> mForm; }; nsresult DoSubmitOrReset(nsEvent* aEvent, int32_t aMessage); nsresult DoReset(); // Async callback to handle removal of our default submit void HandleDefaultSubmitRemoval(); @@ -514,9 +518,12 @@ protected: protected: /** Detection of first form to notify observers */ static bool gFirstFormSubmitted; /** Detection of first password input to initialize the password manager */ static bool gPasswordManagerInitialized; }; -#endif // nsHTMLFormElement_h__ +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_HTMLFormElement_h
--- a/content/html/content/src/HTMLImageElement.cpp +++ b/content/html/content/src/HTMLImageElement.cpp @@ -20,17 +20,17 @@ #include "nsNetUtil.h" #include "nsContentUtils.h" #include "nsIFrame.h" #include "nsNodeInfoManager.h" #include "nsGUIEvent.h" #include "nsContentPolicyUtils.h" #include "nsIDOMWindow.h" #include "nsFocusManager.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "imgIContainer.h" #include "imgILoader.h" #include "imgINotificationObserver.h" #include "imgRequestProxy.h" #include "nsILoadGroup.h" @@ -287,17 +287,17 @@ HTMLImageElement::BeforeSetAttr(int32_t if (aNameSpaceID == kNameSpaceID_None && mForm && (aName == nsGkAtoms::name || aName == nsGkAtoms::id)) { // remove the image from the hashtable as needed nsAutoString tmp; GetAttr(kNameSpaceID_None, aName, tmp); if (!tmp.IsEmpty()) { mForm->RemoveImageElementFromTable(this, tmp, - nsHTMLFormElement::AttributeUpdated); + HTMLFormElement::AttributeUpdated); } } return nsGenericHTMLElement::BeforeSetAttr(aNameSpaceID, aName, aValue, aNotify); } nsresult @@ -649,17 +649,17 @@ HTMLImageElement::GetForm() const void HTMLImageElement::SetForm(nsIDOMHTMLFormElement* aForm) { NS_PRECONDITION(aForm, "Don't pass null here"); NS_ASSERTION(!mForm, "We don't support switching from one non-null form to another."); - mForm = static_cast<nsHTMLFormElement*>(aForm); + mForm = static_cast<HTMLFormElement*>(aForm); } void HTMLImageElement::ClearForm(bool aRemoveFromForm) { NS_ASSERTION((mForm != nullptr) == HasFlag(ADDED_TO_FORM), "Form control should have had flag set correctly"); @@ -671,22 +671,22 @@ HTMLImageElement::ClearForm(bool aRemove nsAutoString nameVal, idVal; GetAttr(kNameSpaceID_None, nsGkAtoms::name, nameVal); GetAttr(kNameSpaceID_None, nsGkAtoms::id, idVal); mForm->RemoveImageElement(this); if (!nameVal.IsEmpty()) { mForm->RemoveImageElementFromTable(this, nameVal, - nsHTMLFormElement::ElementRemoved); + HTMLFormElement::ElementRemoved); } if (!idVal.IsEmpty()) { mForm->RemoveImageElementFromTable(this, idVal, - nsHTMLFormElement::ElementRemoved); + HTMLFormElement::ElementRemoved); } } UnsetFlags(ADDED_TO_FORM); mForm = nullptr; } } // namespace dom
--- a/content/html/content/src/HTMLImageElement.h +++ b/content/html/content/src/HTMLImageElement.h @@ -192,15 +192,15 @@ protected: const nsAttrValueOrString* aValue, bool aNotify) MOZ_OVERRIDE; virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName, const nsAttrValue* aValue, bool aNotify) MOZ_OVERRIDE; // This is a weak reference that this element and the HTMLFormElement // cooperate in maintaining. - nsHTMLFormElement* mForm; + HTMLFormElement* mForm; }; } // namespace dom } // namespace mozilla #endif /* mozilla_dom_HTMLImageElement_h */
--- a/content/html/content/src/HTMLInputElement.cpp +++ b/content/html/content/src/HTMLInputElement.cpp @@ -2319,17 +2319,17 @@ HTMLInputElement::MaybeSubmitForm(nsPres shell->HandleDOMEventWithTarget(submitContent, &event, &status); } else if (mForm->HasSingleTextControl() && (mForm->HasAttr(kNameSpaceID_None, nsGkAtoms::novalidate) || mForm->CheckValidFormSubmission())) { // TODO: removing this code and have the submit event sent by the form, // bug 592124. // If there's only one text control, just submit the form // Hold strong ref across the event - nsRefPtr<nsHTMLFormElement> form = mForm; + nsRefPtr<mozilla::dom::HTMLFormElement> form = mForm; nsFormEvent event(true, NS_FORM_SUBMIT); nsEventStatus status = nsEventStatus_eIgnore; shell->HandleDOMEventWithTarget(mForm, &event, &status); } return NS_OK; } @@ -3160,17 +3160,17 @@ HTMLInputElement::PostHandleEvent(nsEven // form, see bug 592124. if (presShell && (event.message != NS_FORM_SUBMIT || mForm->HasAttr(kNameSpaceID_None, nsGkAtoms::novalidate) || // We know the element is a submit control, if this check is moved, // make sure formnovalidate is used only if it's a submit control. HasAttr(kNameSpaceID_None, nsGkAtoms::formnovalidate) || mForm->CheckValidFormSubmission())) { // Hold a strong ref while dispatching - nsRefPtr<nsHTMLFormElement> form(mForm); + nsRefPtr<mozilla::dom::HTMLFormElement> form(mForm); presShell->HandleDOMEventWithTarget(mForm, &event, &status); aVisitor.mEventStatus = nsEventStatus_eConsumeNoDefault; } } break; default: break;
--- a/content/html/content/src/HTMLInputElement.h +++ b/content/html/content/src/HTMLInputElement.h @@ -12,17 +12,17 @@ #include "nsIDOMHTMLInputElement.h" #include "nsITextControlElement.h" #include "nsIPhonetic.h" #include "nsIDOMNSEditableElement.h" #include "nsTextEditorState.h" #include "nsCOMPtr.h" #include "nsIConstraintValidation.h" #include "nsDOMFile.h" -#include "nsHTMLFormElement.h" // for ShouldShowInvalidUI() +#include "mozilla/dom/HTMLFormElement.h" // for ShouldShowInvalidUI() #include "nsIFile.h" #include "nsIFilePicker.h" #include "nsIContentPrefService2.h" #include "mozilla/Decimal.h" class nsDOMFileList; class nsIFilePicker; class nsIRadioGroupContainer;
--- a/content/html/content/src/HTMLLegendElement.cpp +++ b/content/html/content/src/HTMLLegendElement.cpp @@ -159,22 +159,22 @@ void HTMLLegendElement::PerformAccesskey(bool aKeyCausesActivation, bool aIsTrustedEvent) { // just use the same behaviour as the focus method ErrorResult rv; Focus(rv); } -already_AddRefed<nsHTMLFormElement> +already_AddRefed<HTMLFormElement> HTMLLegendElement::GetForm() { Element* form = GetFormElement(); MOZ_ASSERT_IF(form, form->IsHTML(nsGkAtoms::form)); - nsRefPtr<nsHTMLFormElement> ret = static_cast<nsHTMLFormElement*>(form); + nsRefPtr<HTMLFormElement> ret = static_cast<HTMLFormElement*>(form); return ret.forget(); } JSObject* HTMLLegendElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aScope) { return HTMLLegendElementBinding::Wrap(aCx, aScope, this); }
--- a/content/html/content/src/HTMLLegendElement.h +++ b/content/html/content/src/HTMLLegendElement.h @@ -4,17 +4,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_HTMLLegendElement_h #define mozilla_dom_HTMLLegendElement_h #include "mozilla/Attributes.h" #include "nsIDOMHTMLLegendElement.h" #include "nsGenericHTMLElement.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" namespace mozilla { namespace dom { class HTMLLegendElement : public nsGenericHTMLElement, public nsIDOMHTMLLegendElement { public: @@ -80,17 +80,17 @@ public: } virtual nsIDOMNode* AsDOMNode() MOZ_OVERRIDE { return this; } /** * WebIDL Interface */ - already_AddRefed<nsHTMLFormElement> GetForm(); + already_AddRefed<HTMLFormElement> GetForm(); // The XPCOM GetAlign is OK for us void SetAlign(const nsAString& aAlign, ErrorResult& aError) { SetHTMLAttr(nsGkAtoms::align, aAlign, aError); } nsINode* GetParentObject() {
--- a/content/html/content/src/HTMLOptionElement.cpp +++ b/content/html/content/src/HTMLOptionElement.cpp @@ -74,17 +74,17 @@ NS_IMPL_ELEMENT_CLONE(HTMLOptionElement) NS_IMETHODIMP HTMLOptionElement::GetForm(nsIDOMHTMLFormElement** aForm) { NS_IF_ADDREF(*aForm = GetForm()); return NS_OK; } -nsHTMLFormElement* +mozilla::dom::HTMLFormElement* HTMLOptionElement::GetForm() { HTMLSelectElement* selectControl = GetSelect(); return selectControl ? selectControl->GetForm() : nullptr; } void HTMLOptionElement::SetSelectedInternal(bool aValue, bool aNotify)
--- a/content/html/content/src/HTMLOptionElement.h +++ b/content/html/content/src/HTMLOptionElement.h @@ -6,17 +6,17 @@ #ifndef mozilla_dom_HTMLOptionElement_h__ #define mozilla_dom_HTMLOptionElement_h__ #include "mozilla/Attributes.h" #include "nsGenericHTMLElement.h" #include "nsIDOMHTMLOptionElement.h" #include "nsIJSNativeInitializer.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" namespace mozilla { namespace dom { class HTMLSelectElement; class HTMLOptionElement : public nsGenericHTMLElement, public nsIDOMHTMLOptionElement @@ -86,17 +86,17 @@ public: return GetBoolAttr(nsGkAtoms::disabled); } void SetDisabled(bool aValue, ErrorResult& aRv) { SetHTMLBoolAttr(nsGkAtoms::disabled, aValue, aRv); } - nsHTMLFormElement* GetForm(); + HTMLFormElement* GetForm(); // The XPCOM GetLabel is OK for us void SetLabel(const nsAString& aLabel, ErrorResult& aError) { SetHTMLAttr(nsGkAtoms::label, aLabel, aError); } // The XPCOM DefaultSelected is OK for us
--- a/content/html/content/src/HTMLOutputElement.cpp +++ b/content/html/content/src/HTMLOutputElement.cpp @@ -5,17 +5,17 @@ #include "mozilla/dom/HTMLOutputElement.h" #include "mozilla/dom/HTMLOutputElementBinding.h" #include "nsFormSubmission.h" #include "nsDOMSettableTokenList.h" #include "nsEventStates.h" #include "mozAutoDocUpdate.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" NS_IMPL_NS_NEW_HTML_ELEMENT(Output) namespace mozilla { namespace dom { HTMLOutputElement::HTMLOutputElement(already_AddRefed<nsINodeInfo> aNodeInfo) : nsGenericHTMLFormElement(aNodeInfo)
--- a/content/html/content/src/HTMLSelectElement.h +++ b/content/html/content/src/HTMLSelectElement.h @@ -11,17 +11,17 @@ #include "nsIConstraintValidation.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/HTMLOptionsCollection.h" #include "mozilla/ErrorResult.h" #include "nsCheapSets.h" #include "nsCOMPtr.h" #include "nsError.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" class nsIDOMHTMLOptionElement; class nsISelectControlFrame; class nsPresState; namespace mozilla { namespace dom { @@ -145,17 +145,17 @@ public: bool Disabled() const { return GetBoolAttr(nsGkAtoms::disabled); } void SetDisabled(bool aVal, ErrorResult& aRv) { SetHTMLBoolAttr(nsGkAtoms::disabled, aVal, aRv); } - nsHTMLFormElement* GetForm() const + HTMLFormElement* GetForm() const { return nsGenericHTMLFormElement::GetForm(); } bool Multiple() const { return GetBoolAttr(nsGkAtoms::multiple); } void SetMultiple(bool aVal, ErrorResult& aRv)
--- a/content/html/content/src/HTMLTextAreaElement.h +++ b/content/html/content/src/HTMLTextAreaElement.h @@ -11,17 +11,17 @@ #include "nsIDOMHTMLTextAreaElement.h" #include "nsITextControlElement.h" #include "nsIDOMNSEditableElement.h" #include "nsCOMPtr.h" #include "nsGenericHTMLElement.h" #include "nsEventStates.h" #include "nsStubMutationObserver.h" #include "nsIConstraintValidation.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "nsGkAtoms.h" #include "nsTextEditorState.h" class nsFormSubmission; class nsIControllers; class nsIDocument; class nsPresContext;
--- a/content/html/content/src/moz.build +++ b/content/html/content/src/moz.build @@ -19,16 +19,17 @@ EXPORTS.mozilla.dom += [ 'HTMLBRElement.h', 'HTMLBodyElement.h', 'HTMLButtonElement.h', 'HTMLDataElement.h', 'HTMLDataListElement.h', 'HTMLDivElement.h', 'HTMLFieldSetElement.h', 'HTMLFontElement.h', + 'HTMLFormElement.h', 'HTMLFrameElement.h', 'HTMLFrameSetElement.h', 'HTMLHRElement.h', 'HTMLHeadingElement.h', 'HTMLIFrameElement.h', 'HTMLImageElement.h', 'HTMLInputElement.h', 'HTMLLIElement.h', @@ -142,14 +143,14 @@ CPP_SOURCES += [ 'UndoManager.cpp', 'ValidityState.cpp', 'nsClientRect.cpp', 'nsDOMStringMap.cpp', 'nsFormSubmission.cpp', 'nsGenericHTMLElement.cpp', 'nsGenericHTMLFrameElement.cpp', 'nsHTMLDNSPrefetch.cpp', - 'nsHTMLFormElement.cpp', + 'HTMLFormElement.cpp', 'nsIConstraintValidation.cpp', 'nsRadioVisitor.cpp', 'nsTextEditorState.cpp', ]
--- a/content/html/content/src/nsGenericHTMLElement.cpp +++ b/content/html/content/src/nsGenericHTMLElement.cpp @@ -59,17 +59,17 @@ #include "nsGkAtoms.h" #include "nsEventStateManager.h" #include "nsIDOMEvent.h" #include "nsDOMCSSDeclaration.h" #include "nsITextControlFrame.h" #include "nsIForm.h" #include "nsIFormControl.h" #include "nsIDOMHTMLFormElement.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "nsFocusManager.h" #include "nsAttrValueOrString.h" #include "nsMutationEvent.h" #include "nsDOMStringMap.h" #include "nsIEditor.h" #include "nsIEditorIMESupport.h" @@ -646,18 +646,18 @@ nsGenericHTMLElement::UnbindFromTree(boo if (htmlDocument) { htmlDocument->ChangeContentEditableCount(this, -1); } } nsStyledElement::UnbindFromTree(aDeep, aNullParent); } -nsHTMLFormElement* -nsGenericHTMLElement::FindAncestorForm(nsHTMLFormElement* aCurrentForm) +HTMLFormElement* +nsGenericHTMLElement::FindAncestorForm(HTMLFormElement* aCurrentForm) { NS_ASSERTION(!HasAttr(kNameSpaceID_None, nsGkAtoms::form), "FindAncestorForm should not be called if @form is set!"); // Make sure we don't end up finding a form that's anonymous from // our point of view. nsIContent* bindingParent = GetBindingParent(); @@ -672,17 +672,17 @@ nsGenericHTMLElement::FindAncestorForm(n // anonymous. Check for this the hard way. for (nsIContent* child = this; child != content; child = child->GetParent()) { NS_ASSERTION(child->GetParent()->IndexOf(child) != -1, "Walked too far?"); } } #endif - return static_cast<nsHTMLFormElement*>(content); + return static_cast<HTMLFormElement*>(content); } nsIContent *prevContent = content; content = prevContent->GetParent(); if (!content && aCurrentForm) { // We got to the root of the subtree we're in, and we're being removed // from the DOM (the only time we get into this method with a non-null @@ -2153,17 +2153,17 @@ nsGenericHTMLFormElement::SaveSubtreeSta void nsGenericHTMLFormElement::SetForm(nsIDOMHTMLFormElement* aForm) { NS_PRECONDITION(aForm, "Don't pass null here"); NS_ASSERTION(!mForm, "We don't support switching from one non-null form to another."); // keep a *weak* ref to the form here - mForm = static_cast<nsHTMLFormElement*>(aForm); + mForm = static_cast<HTMLFormElement*>(aForm); } void nsGenericHTMLFormElement::ClearForm(bool aRemoveFromForm) { NS_ASSERTION((mForm != nullptr) == HasFlag(ADDED_TO_FORM), "Form control should have had flag set correctly"); @@ -2175,22 +2175,22 @@ nsGenericHTMLFormElement::ClearForm(bool nsAutoString nameVal, idVal; GetAttr(kNameSpaceID_None, nsGkAtoms::name, nameVal); GetAttr(kNameSpaceID_None, nsGkAtoms::id, idVal); mForm->RemoveElement(this, true); if (!nameVal.IsEmpty()) { mForm->RemoveElementFromTable(this, nameVal, - nsHTMLFormElement::ElementRemoved); + HTMLFormElement::ElementRemoved); } if (!idVal.IsEmpty()) { mForm->RemoveElementFromTable(this, idVal, - nsHTMLFormElement::ElementRemoved); + HTMLFormElement::ElementRemoved); } } UnsetFlags(ADDED_TO_FORM); mForm = nullptr; } Element* @@ -2312,33 +2312,33 @@ nsGenericHTMLFormElement::BeforeSetAttr( // remove the control from the hashtable as needed if (mForm && (aName == nsGkAtoms::name || aName == nsGkAtoms::id)) { GetAttr(kNameSpaceID_None, aName, tmp); if (!tmp.IsEmpty()) { mForm->RemoveElementFromTable(this, tmp, - nsHTMLFormElement::AttributeUpdated); + HTMLFormElement::AttributeUpdated); } } if (mForm && aName == nsGkAtoms::type) { GetAttr(kNameSpaceID_None, nsGkAtoms::name, tmp); if (!tmp.IsEmpty()) { mForm->RemoveElementFromTable(this, tmp, - nsHTMLFormElement::AttributeUpdated); + HTMLFormElement::AttributeUpdated); } GetAttr(kNameSpaceID_None, nsGkAtoms::id, tmp); if (!tmp.IsEmpty()) { mForm->RemoveElementFromTable(this, tmp, - nsHTMLFormElement::AttributeUpdated); + HTMLFormElement::AttributeUpdated); } mForm->RemoveElement(this, false); // Removing the element from the form can make it not be the default // control anymore. Go ahead and notify on that change, though we might // end up readding and becoming the default control again in // AfterSetAttr. @@ -2650,17 +2650,17 @@ nsGenericHTMLFormElement::UpdateFormOwne "aFormIdElement shouldn't be set if aBindToTree is true!"); bool needStateUpdate = false; if (!aBindToTree) { needStateUpdate = mForm && mForm->IsDefaultSubmitElement(this); ClearForm(true); } - nsHTMLFormElement *oldForm = mForm; + HTMLFormElement *oldForm = mForm; if (!mForm) { // If @form is set, we have to use that to find the form. nsAutoString formId; if (GetAttr(kNameSpaceID_None, nsGkAtoms::form, formId)) { if (!formId.IsEmpty()) { Element* element = nullptr; @@ -2673,17 +2673,17 @@ nsGenericHTMLFormElement::UpdateFormOwne NS_ASSERTION(GetCurrentDoc(), "The element should be in a document " "when UpdateFormOwner is called!"); NS_ASSERTION(!GetCurrentDoc() || element == GetCurrentDoc()->GetElementById(formId), "element should be equals to the current element " "associated with the id in @form!"); if (element && element->IsHTML(nsGkAtoms::form)) { - mForm = static_cast<nsHTMLFormElement*>(element); + mForm = static_cast<HTMLFormElement*>(element); } } } else { // We now have a parent, so we may have picked up an ancestor form. Search // for it. Note that if mForm is already set we don't want to do this, // because that means someone (probably the content sink) has already set // it to the right value. Also note that even if being bound here didn't // change our parent, we still need to search, since our parent chain
--- a/content/html/content/src/nsGenericHTMLElement.h +++ b/content/html/content/src/nsGenericHTMLElement.h @@ -28,23 +28,23 @@ class nsIDOMCSSStyleDeclaration; class nsIURI; class nsIFormControlFrame; class nsIForm; class nsPresState; class nsILayoutHistoryState; class nsIEditor; struct nsRect; struct nsSize; -class nsHTMLFormElement; class nsIDOMHTMLMenuElement; class nsIDOMHTMLCollection; class nsDOMSettableTokenList; namespace mozilla { namespace dom{ +class HTMLFormElement; class HTMLPropertiesCollection; class HTMLMenuElement; } } typedef nsMappedAttributeElement nsGenericHTMLElementBase; /** @@ -661,17 +661,18 @@ public: * Find an ancestor of this content node which is a form (could be null) * @param aCurrentForm the current form for this node. If this is * non-null, and no ancestor form is found, and the current form is in * a connected subtree with the node, the current form will be * returned. This is needed to handle cases when HTML elements have a * current form that they're not descendants of. * @note This method should not be called if the element has a form attribute. */ - nsHTMLFormElement* FindAncestorForm(nsHTMLFormElement* aCurrentForm = nullptr); + mozilla::dom::HTMLFormElement* + FindAncestorForm(mozilla::dom::HTMLFormElement* aCurrentForm = nullptr); virtual void RecompileScriptEventListeners() MOZ_OVERRIDE; /** * See if the document being tested has nav-quirks mode enabled. * @param doc the document */ static bool InNavQuirksMode(nsIDocument* aDoc); @@ -1082,17 +1083,17 @@ public: nsINode* GetParentObject() const; virtual bool IsNodeOfType(uint32_t aFlags) const MOZ_OVERRIDE; virtual void SaveSubtreeState() MOZ_OVERRIDE; // nsIFormControl virtual mozilla::dom::Element* GetFormElement() MOZ_OVERRIDE; - nsHTMLFormElement* GetForm() const + mozilla::dom::HTMLFormElement* GetForm() const { return mForm; } virtual void SetForm(nsIDOMHTMLFormElement* aForm) MOZ_OVERRIDE; virtual void ClearForm(bool aRemoveFromForm) MOZ_OVERRIDE; nsresult GetForm(nsIDOMHTMLFormElement** aForm); @@ -1216,17 +1217,17 @@ protected: eActiveWindow }; // Get our focus state. If this returns eInactiveWindow, it will set this // element as the focused element for that window. FocusTristate FocusState(); /** The form that contains this control */ - nsHTMLFormElement* mForm; + mozilla::dom::HTMLFormElement* mForm; /* This is a pointer to our closest fieldset parent if any */ mozilla::dom::HTMLFieldSetElement* mFieldSet; }; //---------------------------------------------------------------------- /**
--- a/content/html/content/src/nsIConstraintValidation.cpp +++ b/content/html/content/src/nsIConstraintValidation.cpp @@ -2,17 +2,17 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsIConstraintValidation.h" #include "nsAString.h" #include "nsGenericHTMLElement.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozilla/dom/ValidityState.h" #include "nsIFormControl.h" #include "nsContentUtils.h" const uint16_t nsIConstraintValidation::sContentSpecifiedMaxLengthMessage = 256; nsIConstraintValidation::nsIConstraintValidation() : mValidityBitField(0) @@ -131,18 +131,18 @@ nsIConstraintValidation::SetValidityStat mValidityBitField &= ~aState; } // Inform the form element if our validity has changed. if (previousValidity != IsValid() && IsCandidateForConstraintValidation()) { nsCOMPtr<nsIFormControl> formCtrl = do_QueryInterface(this); NS_ASSERTION(formCtrl, "This interface should be used by form elements!"); - nsHTMLFormElement* form = - static_cast<nsHTMLFormElement*>(formCtrl->GetFormElement()); + mozilla::dom::HTMLFormElement* form = + static_cast<mozilla::dom::HTMLFormElement*>(formCtrl->GetFormElement()); if (form) { form->UpdateValidity(IsValid()); } } } void nsIConstraintValidation::SetCustomValidity(const nsAString& aError) @@ -159,18 +159,18 @@ nsIConstraintValidation::SetBarredFromCo mBarredFromConstraintValidation = aBarred; // Inform the form element if our status regarding constraint validation // is going to change. if (!IsValid() && previousBarred != mBarredFromConstraintValidation) { nsCOMPtr<nsIFormControl> formCtrl = do_QueryInterface(this); NS_ASSERTION(formCtrl, "This interface should be used by form elements!"); - nsHTMLFormElement* form = - static_cast<nsHTMLFormElement*>(formCtrl->GetFormElement()); + mozilla::dom::HTMLFormElement* form = + static_cast<mozilla::dom::HTMLFormElement*>(formCtrl->GetFormElement()); if (form) { // If the element is going to be barred from constraint validation, // we can inform the form that we are now valid. // Otherwise, we are now invalid. form->UpdateValidity(aBarred); } } }
--- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -12144,17 +12144,17 @@ nsDocShell::OnLinkClickSync(nsIContent * } if (!IsOKToLoadURI(aURI)) { return NS_OK; } // XXX When the linking node was HTMLFormElement, it is synchronous event. // That is, the caller of this method is not |OnLinkClickEvent::Run()| - // but |nsHTMLFormElement::SubmitSubmission(...)|. + // but |HTMLFormElement::SubmitSubmission(...)|. if (nsGkAtoms::form == aContent->Tag() && ShouldBlockLoadingForBackButton()) { return NS_OK; } if (aContent->IsEditable()) { return NS_OK; }
--- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -521,17 +521,17 @@ static nsDOMClassInfoData sClassInfoData #undef MOZ_GENERATED_EVENT_LIST NS_DEFINE_CLASSINFO_DATA(DeviceAcceleration, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(DeviceRotationRate, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) // HTML element classes - NS_DEFINE_CLASSINFO_DATA(HTMLFormElement, nsHTMLFormElementSH, + NS_DEFINE_CLASSINFO_DATA(HTMLFormElement, HTMLFormElementSH, ELEMENT_SCRIPTABLE_FLAGS | nsIXPCScriptable::WANT_GETPROPERTY | nsIXPCScriptable::WANT_NEWENUMERATE) // CSS classes NS_DEFINE_CLASSINFO_DATA(CSSStyleRule, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(CSSCharsetRule, nsDOMGenericSH, @@ -5886,63 +5886,63 @@ nsHTMLDocumentSH::CallToGetPropMapper(JS return ::JS_GetUCProperty(cx, self, chars, length, vp); } // HTMLFormElement helper NS_IMETHODIMP -nsHTMLFormElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper, - JSContext *cx, JSObject *aObj, jsid aId, - uint32_t flags, JSObject **objp, - bool *_retval) +HTMLFormElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper, + JSContext *cx, JSObject *aObj, jsid aId, + uint32_t flags, JSObject **objp, + bool *_retval) { JS::Rooted<JSObject*> obj(cx, aObj); JS::Rooted<jsid> id(cx, aId); // For native wrappers, do not resolve random names on form if ((!(JSRESOLVE_ASSIGNING & flags)) && JSID_IS_STRING(id) && (!ObjectIsNativeWrapper(cx, obj) || xpc::WrapperFactory::XrayWrapperNotShadowing(obj, id))) { nsCOMPtr<nsIForm> form(do_QueryWrappedNative(wrapper, obj)); nsDependentJSString name(id); nsWrapperCache* cache; nsCOMPtr<nsISupports> result = - static_cast<nsHTMLFormElement*>(form.get())->FindNamedItem(name, &cache); + static_cast<HTMLFormElement*>(form.get())->FindNamedItem(name, &cache); if (result) { *_retval = ::JS_DefinePropertyById(cx, obj, id, JSVAL_VOID, nullptr, nullptr, JSPROP_ENUMERATE); *objp = obj; return *_retval ? NS_OK : NS_ERROR_FAILURE; } } return nsElementSH::NewResolve(wrapper, cx, obj, id, flags, objp, _retval); } NS_IMETHODIMP -nsHTMLFormElementSH::GetProperty(nsIXPConnectWrappedNative *wrapper, - JSContext *cx, JSObject *aObj, jsid aId, - jsval *vp, bool *_retval) +HTMLFormElementSH::GetProperty(nsIXPConnectWrappedNative *wrapper, + JSContext *cx, JSObject *aObj, jsid aId, + jsval *vp, bool *_retval) { JS::Rooted<JSObject*> obj(cx, aObj); JS::Rooted<jsid> id(cx, aId); nsCOMPtr<nsIForm> form(do_QueryWrappedNative(wrapper, obj)); if (JSID_IS_STRING(id)) { // For native wrappers, do not get random names on form nsDependentJSString name(id); nsWrapperCache* cache; nsCOMPtr<nsISupports> result = - static_cast<nsHTMLFormElement*>(form.get())->FindNamedItem(name, &cache); + static_cast<HTMLFormElement*>(form.get())->FindNamedItem(name, &cache); if (result) { // Wrap result, result can be either an element or a list of // elements nsresult rv = WrapNative(cx, obj, result, cache, true, vp); return NS_FAILED(rv) ? rv : NS_SUCCESS_I_DID_SOMETHING; } } else { @@ -5960,20 +5960,20 @@ nsHTMLFormElementSH::GetProperty(nsIXPCo } } } return NS_OK; } NS_IMETHODIMP -nsHTMLFormElementSH::NewEnumerate(nsIXPConnectWrappedNative *wrapper, - JSContext *cx, JSObject *obj, - uint32_t enum_op, jsval *statep, - jsid *idp, bool *_retval) +HTMLFormElementSH::NewEnumerate(nsIXPConnectWrappedNative *wrapper, + JSContext *cx, JSObject *obj, + uint32_t enum_op, jsval *statep, + jsid *idp, bool *_retval) { switch (enum_op) { case JSENUMERATE_INIT: case JSENUMERATE_INIT_ALL: { nsCOMPtr<nsIForm> form(do_QueryWrappedNative(wrapper, obj)); if (!form) {
--- a/dom/base/nsDOMClassInfo.h +++ b/dom/base/nsDOMClassInfo.h @@ -607,24 +607,24 @@ public: unsigned flags, JS::MutableHandle<JSObject*> objp); static void ReleaseDocument(JSFreeOp *fop, JSObject *obj); static JSBool CallToGetPropMapper(JSContext *cx, unsigned argc, jsval *vp); }; // HTMLFormElement helper -class nsHTMLFormElementSH : public nsElementSH +class HTMLFormElementSH : public nsElementSH { protected: - nsHTMLFormElementSH(nsDOMClassInfoData* aData) : nsElementSH(aData) + HTMLFormElementSH(nsDOMClassInfoData* aData) : nsElementSH(aData) { } - virtual ~nsHTMLFormElementSH() + virtual ~HTMLFormElementSH() { } public: NS_IMETHOD NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, jsid id, uint32_t flags, JSObject **objp, bool *_retval) MOZ_OVERRIDE; NS_IMETHOD GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, @@ -633,17 +633,17 @@ public: NS_IMETHOD NewEnumerate(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, uint32_t enum_op, jsval *statep, jsid *idp, bool *_retval) MOZ_OVERRIDE; static nsIClassInfo *doCreate(nsDOMClassInfoData* aData) { - return new nsHTMLFormElementSH(aData); + return new HTMLFormElementSH(aData); } }; // Plugin helper class nsPluginSH : public nsNamedArraySH {
--- a/dom/bindings/Bindings.conf +++ b/dom/bindings/Bindings.conf @@ -1601,38 +1601,31 @@ def addExternalIface(iface, nativeType=N } if not nativeType is None: domInterface['nativeType'] = nativeType if not headerFile is None: domInterface['headerFile'] = headerFile domInterface['notflattened'] = notflattened DOMInterfaces[iface] = domInterface -# If you add one of these, you need to make sure nsDOMQS.h has the relevant -# macros added for it -def addExternalHTMLElement(element): - nativeElement = 'ns' + element - addExternalIface(element, nativeType=nativeElement, - headerFile=nativeElement + '.h') - -addExternalHTMLElement('HTMLFormElement') addExternalIface('ActivityOptions', nativeType='nsIDOMMozActivityOptions', headerFile='nsIDOMActivityOptions.h') addExternalIface('Counter') addExternalIface('CSSRule') addExternalIface('DeviceAcceleration', headerFile='nsIDOMDeviceMotionEvent.h', notflattened=True) addExternalIface('DeviceRotationRate', headerFile='nsIDOMDeviceMotionEvent.h', notflattened=True) addExternalIface('mozIDOMApplication', nativeType='mozIDOMApplication', headerFile='nsIDOMApplicationRegistry.h') addExternalIface('CSSRuleList') addExternalIface('DOMStringList') addExternalIface('RTCDataChannel', nativeType='nsIDOMDataChannel') addExternalIface('File') addExternalIface('FileCallback', nativeType='nsIFileCallback', headerFile='nsIDOMHTMLCanvasElement.h') addExternalIface('HitRegionOptions', nativeType='nsISupports') +addExternalIface('HTMLFormElement', nativeType='mozilla::dom::HTMLFormElement') addExternalIface('IDBOpenDBRequest', nativeType='nsIIDBOpenDBRequest') addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver') addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True) addExternalIface('LockedFile') addExternalIface('MediaList') addExternalIface('MenuBuilder', nativeType='nsIMenuBuilder', notflattened=True) addExternalIface('MozBoxObject', nativeType='nsIBoxObject') addExternalIface('MozControllers', nativeType='nsIControllers')
--- a/js/xpconnect/src/nsDOMQS.h +++ b/js/xpconnect/src/nsDOMQS.h @@ -3,17 +3,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef nsDOMQS_h__ #define nsDOMQS_h__ #include "nsDOMClassInfoID.h" #include "nsGenericHTMLElement.h" #include "mozilla/dom/HTMLCanvasElement.h" -#include "nsHTMLFormElement.h" +#include "mozilla/dom/HTMLFormElement.h" #include "mozilla/dom/HTMLImageElement.h" #include "mozilla/dom/HTMLOptionElement.h" #include "HTMLOptGroupElement.h" #include "mozilla/dom/HTMLVideoElement.h" #include "nsHTMLDocument.h" #include "nsICSSDeclaration.h" #include "nsSVGElement.h" #include "nsDOMEvent.h" @@ -226,17 +226,17 @@ UnwrapArg<_clazz>(JSContext *cx, jsval v { \ return xpc_qsUnwrapArg<_clazz>(cx, v, ppArg, ppArgRef, vp); \ } \ \ } /* namespace dom */ \ } /* namespace mozilla */ DEFINE_UNWRAP_CAST_HTML(canvas, mozilla::dom::HTMLCanvasElement) -DEFINE_UNWRAP_CAST_HTML(form, nsHTMLFormElement) +DEFINE_UNWRAP_CAST_HTML(form, mozilla::dom::HTMLFormElement) DEFINE_UNWRAP_CAST_HTML(img, mozilla::dom::HTMLImageElement) DEFINE_UNWRAP_CAST_HTML(optgroup, mozilla::dom::HTMLOptGroupElement) DEFINE_UNWRAP_CAST_HTML(option, mozilla::dom::HTMLOptionElement) DEFINE_UNWRAP_CAST_HTML(video, mozilla::dom::HTMLVideoElement) inline nsISupports* ToSupports(nsContentList *p) {
--- a/services/sync/modules/engines/forms.js +++ b/services/sync/modules/engines/forms.js @@ -262,17 +262,17 @@ FormTracker.prototype = { _enabled: false, observe: function observe(subject, topic, data) { switch (topic) { case "weave:engine:start-tracking": if (!this._enabled) { Svc.Obs.add("form-notifier", this); Svc.Obs.add("satchel-storage-changed", this); - // nsHTMLFormElement doesn't use the normal observer/observe + // HTMLFormElement doesn't use the normal observer/observe // pattern and looks up nsIFormSubmitObservers to .notify() // them so add manually to observers Cc["@mozilla.org/observer-service;1"] .getService(Ci.nsIObserverService) .addObserver(this, "earlyformsubmit", true); this._enabled = true; } break;