зеркало из https://github.com/mozilla/gecko-dev.git
Bug 546528 part 2: Create nsEncodingFormSubmission to allow nsFormSubmission subclasses to not have an encoder. r=benjamn
This commit is contained in:
Родитель
16e88faeb6
Коммит
c6c56bb0f3
|
@ -56,10 +56,13 @@ class nsISaveAsCharset;
|
|||
* Class for form submissions; encompasses the function to call to submit as
|
||||
* well as the form submission name/value pairs
|
||||
*/
|
||||
class nsFormSubmission {
|
||||
|
||||
class nsFormSubmission
|
||||
{
|
||||
public:
|
||||
virtual ~nsFormSubmission();
|
||||
virtual ~nsFormSubmission()
|
||||
{
|
||||
MOZ_COUNT_DTOR(nsFormSubmission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit a name/value pair
|
||||
|
@ -103,7 +106,22 @@ protected:
|
|||
*
|
||||
* @param aCharset the charset of the form as a string
|
||||
*/
|
||||
nsFormSubmission(const nsACString& aCharset);
|
||||
nsFormSubmission(const nsACString& aCharset)
|
||||
: mCharset(aCharset)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsFormSubmission);
|
||||
}
|
||||
|
||||
// The name of the encoder charset
|
||||
nsCString mCharset;
|
||||
};
|
||||
|
||||
class nsEncodingFormSubmission : public nsFormSubmission
|
||||
{
|
||||
public:
|
||||
nsEncodingFormSubmission(const nsACString& aCharset);
|
||||
|
||||
virtual ~nsEncodingFormSubmission();
|
||||
|
||||
/**
|
||||
* Encode a Unicode string to bytes using the encoder (or just copy the input
|
||||
|
@ -114,13 +132,11 @@ protected:
|
|||
*/
|
||||
nsresult EncodeVal(const nsAString& aStr, nsACString& aResult);
|
||||
|
||||
// The name of the encoder charset
|
||||
nsCString mCharset;
|
||||
private:
|
||||
// The encoder that will encode Unicode names and values
|
||||
nsCOMPtr<nsISaveAsCharset> mEncoder;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get a submission object based on attributes in the form (ENCTYPE and METHOD)
|
||||
*
|
||||
|
@ -130,5 +146,4 @@ protected:
|
|||
nsresult GetSubmissionFromForm(nsGenericHTMLElement* aForm,
|
||||
nsFormSubmission** aFormSubmission);
|
||||
|
||||
|
||||
#endif /* nsIFormSubmission_h___ */
|
||||
|
|
|
@ -89,7 +89,7 @@ SendJSWarning(nsIDocument* aDocument,
|
|||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class nsFSURLEncoded : public nsFormSubmission
|
||||
class nsFSURLEncoded : public nsEncodingFormSubmission
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
@ -100,7 +100,7 @@ public:
|
|||
nsFSURLEncoded(const nsACString& aCharset,
|
||||
PRInt32 aMethod,
|
||||
nsIDocument* aDocument)
|
||||
: nsFormSubmission(aCharset),
|
||||
: nsEncodingFormSubmission(aCharset),
|
||||
mMethod(aMethod),
|
||||
mDocument(aDocument),
|
||||
mWarnedFileControl(PR_FALSE)
|
||||
|
@ -383,13 +383,14 @@ nsFSURLEncoded::URLEncode(const nsAString& aStr, nsCString& aEncoded)
|
|||
* Handle multipart/form-data encoding, which does files as well as normal
|
||||
* inputs. This always does POST.
|
||||
*/
|
||||
class nsFSMultipartFormData : public nsFormSubmission
|
||||
class nsFSMultipartFormData : public nsEncodingFormSubmission
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @param aCharset the charset of the form as a string
|
||||
*/
|
||||
nsFSMultipartFormData(const nsACString& aCharset);
|
||||
~nsFSMultipartFormData();
|
||||
|
||||
virtual nsresult AddNameValuePair(const nsAString& aName,
|
||||
const nsAString& aValue);
|
||||
|
@ -431,7 +432,7 @@ private:
|
|||
};
|
||||
|
||||
nsFSMultipartFormData::nsFSMultipartFormData(const nsACString& aCharset)
|
||||
: nsFormSubmission(aCharset)
|
||||
: nsEncodingFormSubmission(aCharset)
|
||||
{
|
||||
mPostDataStream =
|
||||
do_CreateInstance("@mozilla.org/io/multiplex-input-stream;1");
|
||||
|
@ -611,11 +612,11 @@ nsFSMultipartFormData::AddPostDataStream()
|
|||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class nsFSTextPlain : public nsFormSubmission
|
||||
class nsFSTextPlain : public nsEncodingFormSubmission
|
||||
{
|
||||
public:
|
||||
nsFSTextPlain(const nsACString& aCharset)
|
||||
: nsFormSubmission(aCharset)
|
||||
: nsEncodingFormSubmission(aCharset)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -710,11 +711,9 @@ nsFSTextPlain::GetEncodedSubmission(nsIURI* aURI,
|
|||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
nsFormSubmission::nsFormSubmission(const nsACString& aCharset)
|
||||
: mCharset(aCharset)
|
||||
nsEncodingFormSubmission::nsEncodingFormSubmission(const nsACString& aCharset)
|
||||
: nsFormSubmission(aCharset)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsFormSubmission);
|
||||
|
||||
nsCAutoString charset(aCharset);
|
||||
// canonical name is passed so that we just have to check against
|
||||
// *our* canonical names listed in charsetaliases.properties
|
||||
|
@ -742,14 +741,13 @@ nsFormSubmission::nsFormSubmission(const nsACString& aCharset)
|
|||
}
|
||||
}
|
||||
|
||||
nsFormSubmission::~nsFormSubmission()
|
||||
nsEncodingFormSubmission::~nsEncodingFormSubmission()
|
||||
{
|
||||
MOZ_COUNT_DTOR(nsFormSubmission);
|
||||
}
|
||||
|
||||
// i18n helper routines
|
||||
nsresult
|
||||
nsFormSubmission::EncodeVal(const nsAString& aStr, nsACString& aOut)
|
||||
nsEncodingFormSubmission::EncodeVal(const nsAString& aStr, nsACString& aOut)
|
||||
{
|
||||
if (mEncoder) {
|
||||
aOut.Truncate();
|
||||
|
|
Загрузка…
Ссылка в новой задаче