mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-09 04:25:38 +00:00
[XForms] Fixed regression of upload, filename and mediatype. Bug 345865, r=doronr+allan
This commit is contained in:
parent
b311d9b102
commit
3de3debe4a
@ -378,12 +378,12 @@ nsXFormsUploadElement::HandleChildElements(nsILocalFile *aFile,
|
||||
nsAutoString filename;
|
||||
rv = aFile->GetLeafName(filename);
|
||||
if (!filename.IsEmpty()) {
|
||||
rv = mModel->SetNodeValue(filenameElem, filename, PR_FALSE,
|
||||
&filenameChanged);
|
||||
rv = nsXFormsUtils::SetSingleNodeBindingValue(filenameElem, filename,
|
||||
&filenameChanged);
|
||||
}
|
||||
} else {
|
||||
rv = mModel->SetNodeValue(filenameElem, EmptyString(),
|
||||
PR_FALSE, &filenameChanged);
|
||||
rv = nsXFormsUtils::SetSingleNodeBindingValue(filenameElem, EmptyString(),
|
||||
&filenameChanged);
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
@ -401,13 +401,12 @@ nsXFormsUploadElement::HandleChildElements(nsILocalFile *aFile,
|
||||
if (NS_FAILED(rv)) {
|
||||
contentType.AssignLiteral("application/octet-stream");
|
||||
}
|
||||
rv = mModel->SetNodeValue(mediatypeElem,
|
||||
NS_ConvertUTF8toUTF16(contentType),
|
||||
PR_FALSE, &mediatypechanged);
|
||||
rv = nsXFormsUtils::SetSingleNodeBindingValue(mediatypeElem,
|
||||
NS_ConvertUTF8toUTF16(contentType), &mediatypechanged);
|
||||
}
|
||||
} else {
|
||||
rv = mModel->SetNodeValue(mediatypeElem, EmptyString(),
|
||||
PR_FALSE, &mediatypechanged);
|
||||
rv = nsXFormsUtils::SetSingleNodeBindingValue(mediatypeElem,
|
||||
EmptyString(), &mediatypechanged);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2625,3 +2625,22 @@ nsXFormsUtils::GetDaysFromDateTime(const nsAString & aValue, PRInt32 * aDays)
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* static */ PRBool
|
||||
nsXFormsUtils::SetSingleNodeBindingValue(nsIDOMElement *aElement,
|
||||
const nsAString &aValue,
|
||||
PRBool *aChanged)
|
||||
{
|
||||
*aChanged = PR_FALSE;
|
||||
nsCOMPtr<nsIDOMNode> node;
|
||||
nsCOMPtr<nsIModelElementPrivate> model;
|
||||
if (GetSingleNodeBinding(aElement, getter_AddRefs(node),
|
||||
getter_AddRefs(model)))
|
||||
{
|
||||
nsresult rv = model->SetNodeValue(node, aValue, PR_FALSE, aChanged);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return PR_TRUE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
@ -318,6 +318,17 @@ public:
|
||||
static NS_HIDDEN_(PRBool)
|
||||
GetSingleNodeBindingValue(nsIDOMElement* aElement, nsString& aValue);
|
||||
|
||||
/**
|
||||
* Convenience method. Evaluates the single node binding expression for the
|
||||
* given xforms element and then sets the resulting single node to aValue.
|
||||
* This allows elements like xf:filename and xf:mediatype to function
|
||||
* properly without needing the overhead of being nsIXFormsControls.
|
||||
*
|
||||
* Returns PR_TRUE if the evaluation and node value setting both succeeded.
|
||||
*/
|
||||
static NS_HIDDEN_(PRBool)
|
||||
SetSingleNodeBindingValue(nsIDOMElement *aElement, const nsAString &aValue,
|
||||
PRBool *aChanged);
|
||||
/**
|
||||
* Dispatch an XForms event. aDefaultActionEnabled is returned indicating
|
||||
* if the default action of the dispatched event was enabled. aSrcElement
|
||||
|
Loading…
x
Reference in New Issue
Block a user