mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 854090 - Move nsHTMLFormElementSH::FindNamedItem to nsHTMLFormElement; r=khuey
This commit is contained in:
parent
e38aa0d743
commit
0d51d547b4
@ -20,8 +20,8 @@ class nsIURI;
|
|||||||
|
|
||||||
// IID for the nsIForm interface
|
// IID for the nsIForm interface
|
||||||
#define NS_IFORM_IID \
|
#define NS_IFORM_IID \
|
||||||
{ 0x27f1ff6c, 0xeb78, 0x405b, \
|
{ 0x5e8464c8, 0x015d, 0x4cf9, \
|
||||||
{ 0xa6, 0xeb, 0xf0, 0xce, 0xa8, 0x30, 0x85, 0x58 } }
|
{ 0x92, 0xc9, 0xa6, 0xb3, 0x30, 0x8f, 0x60, 0x9d } }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface provides some methods that can be used to access the
|
* This interface provides some methods that can be used to access the
|
||||||
@ -50,17 +50,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
NS_IMETHOD_(uint32_t) GetElementCount() const = 0;
|
NS_IMETHOD_(uint32_t) GetElementCount() const = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolve a name in the scope of the form object, this means find
|
|
||||||
* form controls in this form with the correct value in the name
|
|
||||||
* attribute.
|
|
||||||
*
|
|
||||||
* @param aElement the element to remove
|
|
||||||
* @param aName the name or id of the element to remove
|
|
||||||
* @return NS_OK if the element was successfully removed.
|
|
||||||
*/
|
|
||||||
NS_IMETHOD_(already_AddRefed<nsISupports>) ResolveName(const nsAString& aName) = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the index of the given control within form.elements.
|
* Get the index of the given control within form.elements.
|
||||||
* @param aControl the control to find the index of
|
* @param aControl the control to find the index of
|
||||||
|
@ -1364,10 +1364,24 @@ nsHTMLFormElement::RemoveElementFromTable(nsGenericHTMLFormElement* aElement,
|
|||||||
return mControls->RemoveElementFromTable(aElement, aName);
|
return mControls->RemoveElementFromTable(aElement, aName);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP_(already_AddRefed<nsISupports>)
|
already_AddRefed<nsISupports>
|
||||||
nsHTMLFormElement::ResolveName(const nsAString& aName)
|
nsHTMLFormElement::FindNamedItem(const nsAString& aName,
|
||||||
|
nsWrapperCache** aCache)
|
||||||
{
|
{
|
||||||
return DoResolveName(aName, true);
|
nsCOMPtr<nsISupports> result = DoResolveName(aName, true);
|
||||||
|
if (result) {
|
||||||
|
// FIXME Get the wrapper cache from DoResolveName.
|
||||||
|
*aCache = nullptr;
|
||||||
|
return result.forget();
|
||||||
|
}
|
||||||
|
|
||||||
|
nsCOMPtr<nsIHTMLDocument> htmlDoc = do_QueryInterface(GetCurrentDoc());
|
||||||
|
if (!htmlDoc) {
|
||||||
|
*aCache = nullptr;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return htmlDoc->ResolveName(aName, this, aCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<nsISupports>
|
already_AddRefed<nsISupports>
|
||||||
@ -1933,7 +1947,7 @@ nsHTMLFormElement::GetNextRadioButton(const nsAString& aName,
|
|||||||
mSelectedRadioButtons.Get(aName, getter_AddRefs(currentRadio));
|
mSelectedRadioButtons.Get(aName, getter_AddRefs(currentRadio));
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsISupports> itemWithName = ResolveName(aName);
|
nsCOMPtr<nsISupports> itemWithName = DoResolveName(aName, true);
|
||||||
nsCOMPtr<nsINodeList> radioGroup(do_QueryInterface(itemWithName));
|
nsCOMPtr<nsINodeList> radioGroup(do_QueryInterface(itemWithName));
|
||||||
|
|
||||||
if (!radioGroup) {
|
if (!radioGroup) {
|
||||||
|
@ -57,7 +57,6 @@ public:
|
|||||||
// nsIForm
|
// nsIForm
|
||||||
NS_IMETHOD_(nsIFormControl*) GetElementAt(int32_t aIndex) const;
|
NS_IMETHOD_(nsIFormControl*) GetElementAt(int32_t aIndex) const;
|
||||||
NS_IMETHOD_(uint32_t) GetElementCount() const;
|
NS_IMETHOD_(uint32_t) GetElementCount() const;
|
||||||
NS_IMETHOD_(already_AddRefed<nsISupports>) ResolveName(const nsAString& aName);
|
|
||||||
NS_IMETHOD_(int32_t) IndexOfControl(nsIFormControl* aControl);
|
NS_IMETHOD_(int32_t) IndexOfControl(nsIFormControl* aControl);
|
||||||
NS_IMETHOD_(nsIFormControl*) GetDefaultSubmitElement() const;
|
NS_IMETHOD_(nsIFormControl*) GetDefaultSubmitElement() const;
|
||||||
|
|
||||||
@ -240,6 +239,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool HasEverTriedInvalidSubmit() const { return mEverTriedInvalidSubmit; }
|
bool HasEverTriedInvalidSubmit() const { return mEverTriedInvalidSubmit; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements form[name]. Returns form controls in this form with the correct
|
||||||
|
* value of the name attribute.
|
||||||
|
*/
|
||||||
|
already_AddRefed<nsISupports>
|
||||||
|
FindNamedItem(const nsAString& aName, nsWrapperCache** aCache);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void PostPasswordEvent();
|
void PostPasswordEvent();
|
||||||
void EventHandled() { mFormPasswordEvent = nullptr; }
|
void EventHandled() { mFormPasswordEvent = nullptr; }
|
||||||
@ -325,7 +331,8 @@ protected:
|
|||||||
bool aEarlyNotify);
|
bool aEarlyNotify);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Just like ResolveName(), but takes an arg for whether to flush
|
* Find form controls in this form with the correct value in the name
|
||||||
|
* attribute.
|
||||||
*/
|
*/
|
||||||
already_AddRefed<nsISupports> DoResolveName(const nsAString& aName, bool aFlushContent);
|
already_AddRefed<nsISupports> DoResolveName(const nsAString& aName, bool aFlushContent);
|
||||||
|
|
||||||
|
@ -7171,32 +7171,6 @@ nsHTMLDocumentSH::GetProperty(nsIXPConnectWrappedNative *wrapper,
|
|||||||
|
|
||||||
// HTMLFormElement helper
|
// HTMLFormElement helper
|
||||||
|
|
||||||
// static
|
|
||||||
nsresult
|
|
||||||
nsHTMLFormElementSH::FindNamedItem(nsIForm *aForm, jsid id,
|
|
||||||
nsISupports **aResult,
|
|
||||||
nsWrapperCache **aCache)
|
|
||||||
{
|
|
||||||
nsDependentJSString name(id);
|
|
||||||
|
|
||||||
*aResult = aForm->ResolveName(name).get();
|
|
||||||
// FIXME Get the wrapper cache from nsIForm::ResolveName
|
|
||||||
*aCache = nullptr;
|
|
||||||
|
|
||||||
if (!*aResult) {
|
|
||||||
nsCOMPtr<nsIContent> content(do_QueryInterface(aForm));
|
|
||||||
|
|
||||||
nsCOMPtr<nsIHTMLDocument> html_doc =
|
|
||||||
do_QueryInterface(content->GetDocument());
|
|
||||||
|
|
||||||
if (html_doc && content) {
|
|
||||||
*aResult = html_doc->ResolveName(name, content, aCache).get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsHTMLFormElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper,
|
nsHTMLFormElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper,
|
||||||
JSContext *cx, JSObject *obj, jsid id,
|
JSContext *cx, JSObject *obj, jsid id,
|
||||||
@ -7208,10 +7182,11 @@ nsHTMLFormElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper,
|
|||||||
(!ObjectIsNativeWrapper(cx, obj) ||
|
(!ObjectIsNativeWrapper(cx, obj) ||
|
||||||
xpc::WrapperFactory::XrayWrapperNotShadowing(obj, id))) {
|
xpc::WrapperFactory::XrayWrapperNotShadowing(obj, id))) {
|
||||||
nsCOMPtr<nsIForm> form(do_QueryWrappedNative(wrapper, obj));
|
nsCOMPtr<nsIForm> form(do_QueryWrappedNative(wrapper, obj));
|
||||||
nsCOMPtr<nsISupports> result;
|
|
||||||
nsWrapperCache *cache;
|
|
||||||
|
|
||||||
FindNamedItem(form, id, getter_AddRefs(result), &cache);
|
nsDependentJSString name(id);
|
||||||
|
nsWrapperCache* cache;
|
||||||
|
nsCOMPtr<nsISupports> result =
|
||||||
|
static_cast<nsHTMLFormElement*>(form.get())->FindNamedItem(name, &cache);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
JSAutoRequest ar(cx);
|
JSAutoRequest ar(cx);
|
||||||
@ -7237,10 +7212,10 @@ nsHTMLFormElementSH::GetProperty(nsIXPConnectWrappedNative *wrapper,
|
|||||||
|
|
||||||
if (JSID_IS_STRING(id)) {
|
if (JSID_IS_STRING(id)) {
|
||||||
// For native wrappers, do not get random names on form
|
// For native wrappers, do not get random names on form
|
||||||
nsCOMPtr<nsISupports> result;
|
nsDependentJSString name(id);
|
||||||
nsWrapperCache *cache;
|
nsWrapperCache* cache;
|
||||||
|
nsCOMPtr<nsISupports> result =
|
||||||
FindNamedItem(form, id, getter_AddRefs(result), &cache);
|
static_cast<nsHTMLFormElement*>(form.get())->FindNamedItem(name, &cache);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
// Wrap result, result can be either an element or a list of
|
// Wrap result, result can be either an element or a list of
|
||||||
|
@ -713,9 +713,6 @@ protected:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static nsresult FindNamedItem(nsIForm *aForm, jsid id,
|
|
||||||
nsISupports **aResult, nsWrapperCache **aCache);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NS_IMETHOD NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
NS_IMETHOD NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
||||||
JSObject *obj, jsid id, uint32_t flags,
|
JSObject *obj, jsid id, uint32_t flags,
|
||||||
|
Loading…
Reference in New Issue
Block a user