Bug 458685 - encode mime functions in nsIMimeConverter fail when scripted; r+sr=neil
This commit is contained in:
Родитель
c97d482cd3
Коммит
005698f1b7
|
@ -245,7 +245,7 @@ char * nsMsgI18NEncodeMimePartIIStr(const char *header, PRBool structured, const
|
|||
nsresult res;
|
||||
nsCOMPtr<nsIMimeConverter> converter = do_GetService(NS_MIME_CONVERTER_CONTRACTID, &res);
|
||||
if (NS_SUCCEEDED(res) && nsnull != converter)
|
||||
res = converter->EncodeMimePartIIStr_UTF8(header, structured, charset,
|
||||
res = converter->EncodeMimePartIIStr_UTF8(nsDependentCString(header), structured, charset,
|
||||
fieldnamelen, nsIMimeConverter::MIME_ENCODED_WORD_SIZE, &encodedString);
|
||||
|
||||
return NS_SUCCEEDED(res) ? encodedString : nsnull;
|
||||
|
|
|
@ -655,7 +655,7 @@ PRBool NS_MsgStripRE(const char **stringP, PRUint32 *lengthP, char **modifiedSub
|
|||
char charset[nsIMimeConverter::MAX_CHARSET_NAME_LENGTH] = "";
|
||||
if (nsIMimeConverter::MAX_CHARSET_NAME_LENGTH >= (p2 - p1))
|
||||
strncpy(charset, p1, p2 - p1);
|
||||
rv = mimeConverter->EncodeMimePartIIStr_UTF8(s, PR_FALSE, charset,
|
||||
rv = mimeConverter->EncodeMimePartIIStr_UTF8(nsDependentCString(s), PR_FALSE, charset,
|
||||
sizeof("Subject:"), nsIMimeConverter::MIME_ENCODED_WORD_SIZE,
|
||||
modifiedSubject);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
|
|
|
@ -94,11 +94,11 @@ interface nsIMimeConverter : nsISupports {
|
|||
*
|
||||
* @return The encoded buffer (as a C string).
|
||||
*/
|
||||
string encodeMimePartIIStr_UTF8(in string header,
|
||||
in boolean structured,
|
||||
in string mailCharset,
|
||||
in long fieldnamelen,
|
||||
in long encodedWordSize);
|
||||
string encodeMimePartIIStr_UTF8(in AUTF8String header,
|
||||
in boolean structured,
|
||||
in string mailCharset,
|
||||
in long fieldnamelen,
|
||||
in long encodedWordSize);
|
||||
|
||||
/**
|
||||
* Decode a MIME header to UTF-8 if conversion is required. Marked as
|
||||
|
|
|
@ -116,19 +116,21 @@ nsMimeConverter::EncodeMimePartIIStr(const char *header,
|
|||
nsAutoString tempUnicodeString;
|
||||
nsresult rv = ConvertToUnicode(mailCharset, header, tempUnicodeString);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = EncodeMimePartIIStr_UTF8(NS_ConvertUTF16toUTF8(tempUnicodeString).get(), structured, mailCharset, fieldnamelen, encodedWordSize, encodedString);
|
||||
rv = EncodeMimePartIIStr_UTF8(NS_ConvertUTF16toUTF8(tempUnicodeString), structured, mailCharset, fieldnamelen, encodedWordSize, encodedString);
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMimeConverter::EncodeMimePartIIStr_UTF8(const char *header,
|
||||
PRBool structured,
|
||||
const char *mailCharset,
|
||||
PRInt32 fieldnamelen,
|
||||
PRInt32 encodedWordSize,
|
||||
char **encodedString)
|
||||
nsMimeConverter::EncodeMimePartIIStr_UTF8(const nsACString &header,
|
||||
PRBool structured,
|
||||
const char *mailCharset,
|
||||
PRInt32 fieldnamelen,
|
||||
PRInt32 encodedWordSize,
|
||||
char **encodedString)
|
||||
{
|
||||
char *retString = MIME_EncodeMimePartIIStr(header, structured, mailCharset, fieldnamelen, encodedWordSize);
|
||||
char *retString = MIME_EncodeMimePartIIStr(PromiseFlatCString(header).get(),
|
||||
structured, mailCharset,
|
||||
fieldnamelen, encodedWordSize);
|
||||
if (retString == NULL)
|
||||
return NS_ERROR_FAILURE;
|
||||
else
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Kent James <kent@caspia.com>.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
// This tests minimal mime encoding fixed in bug 458685
|
||||
|
||||
var converter = Components.classes["@mozilla.org/messenger/mimeconverter;1"]
|
||||
.getService(Components.interfaces.nsIMimeConverter);
|
||||
|
||||
function run_test() {
|
||||
var i;
|
||||
|
||||
var checks =
|
||||
[
|
||||
["", ""],
|
||||
["\u0436", "=?UTF-8?B?0LY=?="], //CYRILLIC SMALL LETTER ZHE
|
||||
["IamASCII", "IamASCII"],
|
||||
];
|
||||
|
||||
for (i = 0; i < checks.length; ++i)
|
||||
{
|
||||
do_check_eq(
|
||||
converter.encodeMimePartIIStr_UTF8(checks[i][0], false, "UTF-8", 0, 72),
|
||||
checks[i][1]);
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче