Bug #31058 --> get the folder charset from the url if it supports nsImsgI18NUrl and use this charset as the default charset for the current
message we are trying to display. git-svn-id: svn://10.0.0.236/trunk@69846 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -47,6 +47,7 @@
|
||||
#include "nsIScriptSecurityManager.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "mozITXTToHTMLConv.h"
|
||||
#include "nsIMsgMailNewsUrl.h"
|
||||
|
||||
#define PREF_MAIL_DISPLAY_GLYPH "mail.display_glyph"
|
||||
#define PREF_MAIL_DISPLAY_STRUCT "mail.display_struct"
|
||||
@@ -115,6 +116,17 @@ bridge_new_new_uri(void *bridgeStream, nsIURI *aURI)
|
||||
struct mime_stream_data *msd = (struct mime_stream_data *)session->data_object;
|
||||
if (msd)
|
||||
{
|
||||
// set the default charset to be the folder charset if we have one associated with
|
||||
// this url...
|
||||
nsCOMPtr<nsIMsgI18NUrl> i18nUrl (do_QueryInterface(aURI));
|
||||
if (i18nUrl)
|
||||
{
|
||||
nsXPIDLString uniCharset;
|
||||
i18nUrl->GetFolderCharset(getter_Copies(uniCharset));
|
||||
nsAutoString charset(uniCharset);
|
||||
if (!charset.IsEmpty())
|
||||
msd->options->default_charset = charset.ToNewCString();
|
||||
}
|
||||
char *urlString;
|
||||
if (NS_SUCCEEDED(aURI->GetSpec(&urlString)))
|
||||
{
|
||||
@@ -498,8 +510,7 @@ NS_IMETHODIMP nsStreamConverter::Init(nsIURI *aURI, nsIStreamListener * aOutList
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
|
||||
SetStreamURI(aURI);
|
||||
|
||||
// now we want to create a pipe which we'll use for converting the data...
|
||||
nsCOMPtr<nsIPipeObserver> pipeObserver = do_QueryInterface(mEmitter);
|
||||
rv = NS_NewPipe(getter_AddRefs(mInputStream), getter_AddRefs(mOutputStream),
|
||||
@@ -557,6 +568,8 @@ NS_IMETHODIMP nsStreamConverter::Init(nsIURI *aURI, nsIStreamListener * aOutList
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
else
|
||||
{
|
||||
SetStreamURI(aURI);
|
||||
|
||||
//Do we need to setup an Mime Stream Converter Listener?
|
||||
if (mMimeStreamConverterListener)
|
||||
bridge_set_mime_stream_converter_listener((nsMIMESession *)mBridgeStream, mMimeStreamConverterListener);
|
||||
@@ -766,6 +779,10 @@ nsStreamConverter::OnStartRequest(nsIChannel * aChannel, nsISupports *ctxt)
|
||||
printf("nsStreamConverter::OnStartRequest()\n");
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_mscott
|
||||
mConvertContentTime = PR_IntervalNow();
|
||||
#endif
|
||||
|
||||
// forward the start rquest to any listeners
|
||||
if (mOutListener)
|
||||
mOutListener->OnStartRequest(mOutgoingChannel, ctxt);
|
||||
@@ -832,6 +849,12 @@ nsStreamConverter::OnStopRequest(nsIChannel * aChannel, nsISupports *ctxt, nsres
|
||||
// Make sure to do necessary cleanup!
|
||||
InternalCleanup();
|
||||
|
||||
#ifdef DEBUG_mscott
|
||||
// print out the mime timing information BEFORE we flush to layout
|
||||
// otherwise we'll be including layout information.
|
||||
printf("Time Spent in mime: %d ms\n", PR_IntervalToMilliseconds(PR_IntervalNow() - mConvertContentTime));
|
||||
#endif
|
||||
|
||||
// forward on top request to any listeners
|
||||
if (mOutListener)
|
||||
mOutListener->OnStopRequest(mOutgoingChannel, ctxt, status, errorMsg);
|
||||
|
||||
@@ -88,6 +88,9 @@ private:
|
||||
nsIMimeStreamConverterListener* mMimeStreamConverterListener;
|
||||
PRBool mForwardInline;
|
||||
nsCOMPtr<nsIMsgIdentity> mIdentity;
|
||||
#ifdef DEBUG_mscott
|
||||
PRTime mConvertContentTime;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* nsStreamConverter_h_ */
|
||||
|
||||
Reference in New Issue
Block a user