Bug 1414518 - introduce pref mailnews.headers.extraAddonHeaders to emit extra headers to currentHeaderData. r=jorgk
This commit is contained in:
Родитель
7b0a8b589a
Коммит
e9bd8b2c83
|
@ -50,6 +50,11 @@ pref("mailnews.filters.confirm_delete", true);
|
|||
// space-delimited list of extra headers to show in msg header display area.
|
||||
pref("mailnews.headers.extraExpandedHeaders", "");
|
||||
|
||||
// Space-delimited list of extra headers that will be pushed to
|
||||
// currentHeaderData for processing in add-ons (without being displayed).
|
||||
// Use a value of "*" to get all headers (other wildcards not supported).
|
||||
pref("mailnews.headers.extraAddonHeaders", "");
|
||||
|
||||
// default sort order settings (when creating new folder views)
|
||||
// sort_order is an int value reflecting nsMsgViewSortOrder values
|
||||
// as defined in nsIMsgDBView.idl (ascending = 1, descending = 2)
|
||||
|
|
|
@ -168,18 +168,36 @@ nsresult nsMimeHtmlDisplayEmitter::BroadcastHeaders(nsIMsgHeaderSink * aHeaderSi
|
|||
|
||||
nsCString extraExpandedHeaders;
|
||||
nsTArray<nsCString> extraExpandedHeadersArray;
|
||||
nsCString extraAddonHeaders;
|
||||
nsTArray<nsCString> extraAddonHeadersArray;
|
||||
nsAutoCString convertedDateString;
|
||||
bool pushAllHeaders = false;
|
||||
bool checkExtraHeaders = false;
|
||||
bool checkAddonHeaders = false;
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIPrefBranch> pPrefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
|
||||
if (pPrefBranch)
|
||||
{
|
||||
pPrefBranch->GetCharPref("mailnews.headers.extraExpandedHeaders", extraExpandedHeaders);
|
||||
// todo - should make this upper case
|
||||
if (!extraExpandedHeaders.IsEmpty())
|
||||
{
|
||||
ToLowerCase(extraExpandedHeaders);
|
||||
ParseString(extraExpandedHeaders, ' ', extraExpandedHeadersArray);
|
||||
checkExtraHeaders = true;
|
||||
}
|
||||
|
||||
pPrefBranch->GetCharPref("mailnews.headers.extraAddonHeaders", extraAddonHeaders);
|
||||
if (!extraAddonHeaders.IsEmpty())
|
||||
{
|
||||
// Push all headers if extraAddonHeaders is "*".
|
||||
if (extraAddonHeaders.EqualsLiteral("*")) {
|
||||
pushAllHeaders = true;
|
||||
} else {
|
||||
ToLowerCase(extraAddonHeaders);
|
||||
ParseString(extraAddonHeaders, ' ', extraAddonHeadersArray);
|
||||
checkAddonHeaders = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,38 +213,46 @@ nsresult nsMimeHtmlDisplayEmitter::BroadcastHeaders(nsIMsgHeaderSink * aHeaderSi
|
|||
{
|
||||
bool skip = true;
|
||||
const char * headerName = headerInfo->name;
|
||||
// Accept the following:
|
||||
if (!PL_strcasecmp("to", headerName) ||
|
||||
!PL_strcasecmp("from", headerName) ||
|
||||
!PL_strcasecmp("cc", headerName) ||
|
||||
!PL_strcasecmp("newsgroups", headerName) ||
|
||||
!PL_strcasecmp("bcc", headerName) ||
|
||||
!PL_strcasecmp("followup-to", headerName) ||
|
||||
!PL_strcasecmp("reply-to", headerName) ||
|
||||
!PL_strcasecmp("subject", headerName) ||
|
||||
!PL_strcasecmp("organization", headerName) ||
|
||||
!PL_strcasecmp("user-agent", headerName) ||
|
||||
!PL_strcasecmp("content-base", headerName) ||
|
||||
!PL_strcasecmp("sender", headerName) ||
|
||||
!PL_strcasecmp("date", headerName) ||
|
||||
!PL_strcasecmp("x-mailer", headerName) ||
|
||||
!PL_strcasecmp("content-type", headerName) ||
|
||||
!PL_strcasecmp("message-id", headerName) ||
|
||||
!PL_strcasecmp("x-newsreader", headerName) ||
|
||||
!PL_strcasecmp("x-mimeole", headerName) ||
|
||||
!PL_strcasecmp("references", headerName) ||
|
||||
!PL_strcasecmp("in-reply-to", headerName) ||
|
||||
!PL_strcasecmp("list-post", headerName) ||
|
||||
!PL_strcasecmp("delivered-to", headerName)) {
|
||||
if (pushAllHeaders) {
|
||||
skip = false;
|
||||
} else if (extraExpandedHeadersArray.Length() > 0) {
|
||||
// Make headerStr lower case because IndexOf is case-sensitive.
|
||||
|
||||
// Accept the following:
|
||||
} else if (!PL_strcasecmp("to", headerName) ||
|
||||
!PL_strcasecmp("from", headerName) ||
|
||||
!PL_strcasecmp("cc", headerName) ||
|
||||
!PL_strcasecmp("newsgroups", headerName) ||
|
||||
!PL_strcasecmp("bcc", headerName) ||
|
||||
!PL_strcasecmp("followup-to", headerName) ||
|
||||
!PL_strcasecmp("reply-to", headerName) ||
|
||||
!PL_strcasecmp("subject", headerName) ||
|
||||
!PL_strcasecmp("organization", headerName) ||
|
||||
!PL_strcasecmp("user-agent", headerName) ||
|
||||
!PL_strcasecmp("content-base", headerName) ||
|
||||
!PL_strcasecmp("sender", headerName) ||
|
||||
!PL_strcasecmp("date", headerName) ||
|
||||
!PL_strcasecmp("x-mailer", headerName) ||
|
||||
!PL_strcasecmp("content-type", headerName) ||
|
||||
!PL_strcasecmp("message-id", headerName) ||
|
||||
!PL_strcasecmp("x-newsreader", headerName) ||
|
||||
!PL_strcasecmp("x-mimeole", headerName) ||
|
||||
!PL_strcasecmp("references", headerName) ||
|
||||
!PL_strcasecmp("in-reply-to", headerName) ||
|
||||
!PL_strcasecmp("list-post", headerName) ||
|
||||
!PL_strcasecmp("delivered-to", headerName)) {
|
||||
skip = false;
|
||||
|
||||
} else if (checkExtraHeaders || checkAddonHeaders) {
|
||||
// Make headerStr lowercase because extraExpandedHeaders/extraAddonHeadersArray
|
||||
// was made lowercase above.
|
||||
nsDependentCString headerStr(headerInfo->name);
|
||||
ToLowerCase(headerStr);
|
||||
// Accept if it's an "extra" header.
|
||||
if (extraExpandedHeadersArray.Contains(headerStr))
|
||||
if (checkExtraHeaders && extraExpandedHeadersArray.Contains(headerStr))
|
||||
skip = false;
|
||||
if (checkAddonHeaders && extraAddonHeadersArray.Contains(headerStr))
|
||||
skip = false;
|
||||
}
|
||||
|
||||
if (skip)
|
||||
continue;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче