bug 79608, r=ftang, sr=vidur
for the embedding API: add get/set charset
This commit is contained in:
@@ -216,6 +216,7 @@ NS_INTERFACE_MAP_BEGIN(nsDocShell)
|
|||||||
NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
|
NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIScrollable)
|
NS_INTERFACE_MAP_ENTRY(nsIScrollable)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsITextScroll)
|
NS_INTERFACE_MAP_ENTRY(nsITextScroll)
|
||||||
|
NS_INTERFACE_MAP_ENTRY(nsIDocCharset)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
|
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObjectOwner)
|
NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObjectOwner)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIRefreshURI)
|
NS_INTERFACE_MAP_ENTRY(nsIRefreshURI)
|
||||||
@@ -1015,6 +1016,51 @@ nsDocShell::SetParentURIContentListener(nsIURIContentListener * aParent)
|
|||||||
return mContentListener->SetParentContentListener(aParent);
|
return mContentListener->SetParentContentListener(aParent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsDocShell::GetCharset(PRUnichar** aCharset)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aCharset);
|
||||||
|
*aCharset = nsnull;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIPresShell> presShell;
|
||||||
|
nsCOMPtr<nsIDocument> doc;
|
||||||
|
GetPresShell(getter_AddRefs(presShell));
|
||||||
|
NS_ENSURE_TRUE(presShell, NS_ERROR_FAILURE);
|
||||||
|
presShell->GetDocument(getter_AddRefs(doc));
|
||||||
|
NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE);
|
||||||
|
nsAutoString charset;
|
||||||
|
NS_ENSURE_SUCCESS(doc->GetDocumentCharacterSet(charset), NS_ERROR_FAILURE);
|
||||||
|
*aCharset = charset.ToNewUnicode();
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsDocShell::SetCharset(const PRUnichar* aCharset)
|
||||||
|
{
|
||||||
|
// set the default charset
|
||||||
|
nsCOMPtr<nsIContentViewer> viewer;
|
||||||
|
GetContentViewer(getter_AddRefs(viewer));
|
||||||
|
if (viewer) {
|
||||||
|
nsCOMPtr<nsIMarkupDocumentViewer> muDV(do_QueryInterface(viewer));
|
||||||
|
if (muDV) {
|
||||||
|
NS_ENSURE_SUCCESS(muDV->SetDefaultCharacterSet(aCharset),
|
||||||
|
NS_ERROR_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the charset override
|
||||||
|
nsCOMPtr<nsIDocumentCharsetInfo> dcInfo;
|
||||||
|
GetDocumentCharsetInfo(getter_AddRefs(dcInfo));
|
||||||
|
if (dcInfo) {
|
||||||
|
nsCOMPtr<nsIAtom> csAtom;
|
||||||
|
csAtom = dont_AddRef(NS_NewAtom(aCharset));
|
||||||
|
dcInfo->SetForcedCharset(csAtom);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsDocShell::GetDocumentCharsetInfo(nsIDocumentCharsetInfo **
|
nsDocShell::GetDocumentCharsetInfo(nsIDocumentCharsetInfo **
|
||||||
aDocumentCharsetInfo)
|
aDocumentCharsetInfo)
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
|
|
||||||
// Interfaces Needed
|
// Interfaces Needed
|
||||||
#include "nsIDocumentCharsetInfo.h"
|
#include "nsIDocumentCharsetInfo.h"
|
||||||
|
#include "nsIDocCharset.h"
|
||||||
#include "nsIGlobalHistory.h"
|
#include "nsIGlobalHistory.h"
|
||||||
#include "nsIInterfaceRequestor.h"
|
#include "nsIInterfaceRequestor.h"
|
||||||
#include "nsIPrompt.h"
|
#include "nsIPrompt.h"
|
||||||
@@ -151,6 +152,7 @@ class nsDocShell : public nsIDocShell,
|
|||||||
public nsIBaseWindow,
|
public nsIBaseWindow,
|
||||||
public nsIScrollable,
|
public nsIScrollable,
|
||||||
public nsITextScroll,
|
public nsITextScroll,
|
||||||
|
public nsIDocCharset,
|
||||||
public nsIContentViewerContainer,
|
public nsIContentViewerContainer,
|
||||||
public nsIInterfaceRequestor,
|
public nsIInterfaceRequestor,
|
||||||
public nsIScriptGlobalObjectOwner,
|
public nsIScriptGlobalObjectOwner,
|
||||||
@@ -174,6 +176,7 @@ public:
|
|||||||
NS_DECL_NSIBASEWINDOW
|
NS_DECL_NSIBASEWINDOW
|
||||||
NS_DECL_NSISCROLLABLE
|
NS_DECL_NSISCROLLABLE
|
||||||
NS_DECL_NSITEXTSCROLL
|
NS_DECL_NSITEXTSCROLL
|
||||||
|
NS_DECL_NSIDOCCHARSET
|
||||||
NS_DECL_NSIINTERFACEREQUESTOR
|
NS_DECL_NSIINTERFACEREQUESTOR
|
||||||
NS_DECL_NSISCRIPTGLOBALOBJECTOWNER
|
NS_DECL_NSISCRIPTGLOBALOBJECTOWNER
|
||||||
NS_DECL_NSIWEBPROGRESSLISTENER
|
NS_DECL_NSIWEBPROGRESSLISTENER
|
||||||
|
|||||||
Reference in New Issue
Block a user