Skip to content

Commit

Permalink
bug 79608, r=ftang, sr=vidur
Browse files Browse the repository at this point in the history
for the embedding API: add get/set charset
  • Loading branch information
bstell%netscape.com committed May 17, 2001
1 parent 8d5263d commit 5869903
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
46 changes: 46 additions & 0 deletions docshell/base/nsDocShell.cpp
Expand Up @@ -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)
Expand Down Expand Up @@ -1015,6 +1016,51 @@ nsDocShell::SetParentURIContentListener(nsIURIContentListener * 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
nsDocShell::GetDocumentCharsetInfo(nsIDocumentCharsetInfo **
aDocumentCharsetInfo)
Expand Down
3 changes: 3 additions & 0 deletions docshell/base/nsDocShell.h
Expand Up @@ -55,6 +55,7 @@

// Interfaces Needed
#include "nsIDocumentCharsetInfo.h"
#include "nsIDocCharset.h"
#include "nsIGlobalHistory.h"
#include "nsIInterfaceRequestor.h"
#include "nsIPrompt.h"
Expand Down Expand Up @@ -151,6 +152,7 @@ class nsDocShell : public nsIDocShell,
public nsIBaseWindow,
public nsIScrollable,
public nsITextScroll,
public nsIDocCharset,
public nsIContentViewerContainer,
public nsIInterfaceRequestor,
public nsIScriptGlobalObjectOwner,
Expand All @@ -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
Expand Down

0 comments on commit 5869903

Please sign in to comment.