Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

bug 79608, r=ftang, sr=vidur

for the embedding API: add get/set charset
  • Loading branch information...
commit 58699035e61ecbc6890f8075d32471cfcb423790 1 parent 8d5263d
bstell%netscape.com authored
Showing with 49 additions and 0 deletions.
  1. +46 −0 docshell/base/nsDocShell.cpp
  2. +3 −0  docshell/base/nsDocShell.h
View
46 docshell/base/nsDocShell.cpp
@@ -216,6 +216,7 @@ NS_INTERFACE_MAP_BEGIN(nsDocShell)
NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
NS_INTERFACE_MAP_ENTRY(nsIScrollable)
NS_INTERFACE_MAP_ENTRY(nsITextScroll)
+ NS_INTERFACE_MAP_ENTRY(nsIDocCharset)
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObjectOwner)
NS_INTERFACE_MAP_ENTRY(nsIRefreshURI)
@@ -1016,6 +1017,51 @@ nsDocShell::SetParentURIContentListener(nsIURIContentListener * 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
nsDocShell::GetDocumentCharsetInfo(nsIDocumentCharsetInfo **
aDocumentCharsetInfo)
{
View
3  docshell/base/nsDocShell.h
@@ -55,6 +55,7 @@
// Interfaces Needed
#include "nsIDocumentCharsetInfo.h"
+#include "nsIDocCharset.h"
#include "nsIGlobalHistory.h"
#include "nsIInterfaceRequestor.h"
#include "nsIPrompt.h"
@@ -151,6 +152,7 @@ class nsDocShell : public nsIDocShell,
public nsIBaseWindow,
public nsIScrollable,
public nsITextScroll,
+ public nsIDocCharset,
public nsIContentViewerContainer,
public nsIInterfaceRequestor,
public nsIScriptGlobalObjectOwner,
@@ -174,6 +176,7 @@ friend class nsDSURIContentListener;
NS_DECL_NSIBASEWINDOW
NS_DECL_NSISCROLLABLE
NS_DECL_NSITEXTSCROLL
+ NS_DECL_NSIDOCCHARSET
NS_DECL_NSIINTERFACEREQUESTOR
NS_DECL_NSISCRIPTGLOBALOBJECTOWNER
NS_DECL_NSIWEBPROGRESSLISTENER
Please sign in to comment.
Something went wrong with that request. Please try again.