Bug 546528 part 2: Create nsEncodingFormSubmission to allow nsFormSubmission subclasses to not have an encoder. r=benjamn

This commit is contained in:
Jonas Sicking 2010-02-24 21:58:17 -08:00
Родитель 16e88faeb6
Коммит c6c56bb0f3
2 изменённых файлов: 34 добавлений и 21 удалений

Просмотреть файл

@ -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();