Bug 1528496 - Correctly fix Bug 1023285 and utf8 addressing header display for jsmime.

Tag #1273
This commit is contained in:
Matt A. Tobin 2019-11-11 01:08:45 -05:00 • committed by Roy Tam
commit 8a8393dbc4
6 changed files with 50 additions and 18 deletions

View file

@ -31,6 +31,11 @@ nsCOMArray<msgIAddressObject> DecodedHeader(const nsAString &aHeader);
nsCOMArray<msgIAddressObject> EncodedHeader(const nsACString &aHeader,
const char *aCharset = nullptr);
/**
* Same deal, but we're starting with an nsAString.
*/
nsCOMArray<msgIAddressObject> EncodedHeaderW(const nsAString &aHeader);
namespace detail {
void DoConversion(const nsTArray<nsString> &aUTF16, nsTArray<nsCString> &aUTF8);
};

View file

@ -97,6 +97,18 @@ interface nsIMsgHeaderParser : nsISupports {
out msgIAddressObject addresses);
/**
* Parse an address-based header that has not yet been 2047-decoded and does not
* contain raw octets but instead wide (UTF-16) characters.
*
* @param aEncodedHeader The RFC 2047-encoded header to parse.
* @return An array corresponding to the header description.
*/
void parseEncodedHeaderW(in AString aEncodedHeader,
[optional] out unsigned long length,
[retval, array, size_is(length)]
out msgIAddressObject addresses);
/**
* Parse an address-based header that has been 2047-decoded.
*
* The result of this method is an array of objects described in the above
@ -178,9 +190,6 @@ interface nsIMsgHeaderParser : nsISupports {
* "Bond, James <agent007@mi5.invalid>" would produce one address object,
* while the string "webmaster@nowhere.invalid, child@nowhere.invalid" would
* produce two address objects.
*
* Note that the input string is RFC 2231 and RFC 2047 decoded but no UTF-8
* decoding takes place.
*/
void makeFromDisplayAddress(in AString aDisplayAddresses,
[optional] out unsigned long count,