1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "nsSaveAsCharset.h"
8 #include "mozilla/dom/EncodingUtils.h"
9
10 //
11 // nsISupports methods
12 //
NS_IMPL_ISUPPORTS(nsSaveAsCharset,nsISaveAsCharset)13 NS_IMPL_ISUPPORTS(nsSaveAsCharset, nsISaveAsCharset)
14
15 //
16 // nsSaveAsCharset
17 //
18 nsSaveAsCharset::nsSaveAsCharset()
19 {
20 }
21
~nsSaveAsCharset()22 nsSaveAsCharset::~nsSaveAsCharset()
23 {
24 }
25
26 NS_IMETHODIMP
Init(const nsACString & aCharset,uint32_t aIgnored,uint32_t aAlsoIgnored)27 nsSaveAsCharset::Init(const nsACString& aCharset, uint32_t aIgnored, uint32_t aAlsoIgnored)
28 {
29 nsAutoCString encoding;
30 if (!mozilla::dom::EncodingUtils::FindEncodingForLabelNoReplacement(aCharset, encoding)) {
31 return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
32 }
33 mEncoder = new nsNCRFallbackEncoderWrapper(encoding);
34 mCharset.Assign(encoding);
35 return NS_OK;
36 }
37
38 NS_IMETHODIMP
Convert(const nsAString & aIn,nsACString & aOut)39 nsSaveAsCharset::Convert(const nsAString& aIn, nsACString& aOut)
40 {
41 if (!mEncoder) {
42 return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
43 }
44
45 if (!mEncoder->Encode(aIn, aOut)) {
46 return NS_ERROR_OUT_OF_MEMORY;
47 }
48 return NS_OK;
49 }
50
51 NS_IMETHODIMP
GetCharset(nsACString & aCharset)52 nsSaveAsCharset::GetCharset(nsACString& aCharset)
53 {
54 aCharset.Assign(mCharset);
55 return NS_OK;
56 }
57