author | Kyle Huey <khuey@kylehuey.com> |
Thu, 22 Aug 2013 22:17:10 -0700 | |
changeset 144011 | 27ba8b41c4586bb0ea66d5293c4934b090a0387e |
parent 144010 | 3d866e6ca83a609ac1e1435a4fcdecb4899c97d3 |
child 144012 | e1bd096607b10774545fe10fc7a4bfcd963b9690 |
push id | 32843 |
push user | khuey@mozilla.com |
push date | Fri, 23 Aug 2013 05:18:28 +0000 |
treeherder | mozilla-inbound@3ab03b70a92c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | emk |
bugs | 903772 |
milestone | 26.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/encoding/TextEncoder.cpp | file | annotate | diff | comparison | revisions | |
dom/encoding/TextEncoder.h | file | annotate | diff | comparison | revisions | |
dom/encoding/TextEncoderBase.h | file | annotate | diff | comparison | revisions | |
dom/encoding/moz.build | file | annotate | diff | comparison | revisions |
--- a/dom/encoding/TextEncoder.cpp +++ b/dom/encoding/TextEncoder.cpp @@ -7,17 +7,17 @@ #include "nsContentUtils.h" #include "nsICharsetConverterManager.h" #include "nsServiceManagerUtils.h" namespace mozilla { namespace dom { void -TextEncoderBase::Init(const nsAString& aEncoding, ErrorResult& aRv) +TextEncoder::Init(const nsAString& aEncoding, ErrorResult& aRv) { nsAutoString label(aEncoding); EncodingUtils::TrimSpaceCharacters(label); // Let encoding be the result of getting an encoding from label. // If encoding is failure, or is none of utf-8, utf-16, and utf-16be, // throw a TypeError. if (!EncodingUtils::FindEncodingForLabel(label, mEncoding)) { @@ -43,21 +43,21 @@ TextEncoderBase::Init(const nsAString& a ccm->GetUnicodeEncoderRaw(mEncoding.get(), getter_AddRefs(mEncoder)); if (!mEncoder) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } } JSObject* -TextEncoderBase::Encode(JSContext* aCx, - JS::Handle<JSObject*> aObj, - const nsAString& aString, - const bool aStream, - ErrorResult& aRv) +TextEncoder::Encode(JSContext* aCx, + JS::Handle<JSObject*> aObj, + const nsAString& aString, + const bool aStream, + ErrorResult& aRv) { // Run the steps of the encoding algorithm. int32_t srcLen = aString.Length(); int32_t maxLen; const PRUnichar* data = PromiseFlatString(aString).get(); nsresult rv = mEncoder->GetMaxLength(data, srcLen, &maxLen); if (NS_FAILED(rv)) { aRv.Throw(rv); @@ -97,16 +97,16 @@ TextEncoderBase::Encode(JSContext* aCx, if (NS_FAILED(rv)) { aRv.Throw(rv); } return outView; } void -TextEncoderBase::GetEncoding(nsAString& aEncoding) +TextEncoder::GetEncoding(nsAString& aEncoding) { CopyASCIItoUTF16(mEncoding, aEncoding); nsContentUtils::ASCIIToLower(aEncoding); } } // dom } // mozilla
--- a/dom/encoding/TextEncoder.h +++ b/dom/encoding/TextEncoder.h @@ -1,24 +1,26 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_textencoder_h_ #define mozilla_dom_textencoder_h_ #include "mozilla/dom/NonRefcountedDOMObject.h" -#include "mozilla/dom/TextEncoderBase.h" #include "mozilla/dom/TextEncoderBinding.h" +#include "mozilla/dom/TypedArray.h" +#include "nsIUnicodeEncoder.h" namespace mozilla { +class ErrorResult; + namespace dom { -class TextEncoder MOZ_FINAL - : public NonRefcountedDOMObject, public TextEncoderBase +class TextEncoder MOZ_FINAL : public NonRefcountedDOMObject { public: // The WebIDL constructor. static TextEncoder* Constructor(const GlobalObject& aGlobal, const nsAString& aEncoding, ErrorResult& aRv) @@ -51,18 +53,68 @@ public: return nullptr; } JSObject* Encode(JSContext* aCx, JS::Handle<JSObject*> aObj, const nsAString& aString, const TextEncodeOptions& aOptions, ErrorResult& aRv) { - return TextEncoderBase::Encode(aCx, aObj, aString, aOptions.mStream, aRv); + return TextEncoder::Encode(aCx, aObj, aString, aOptions.mStream, aRv); + } + +protected: + + /** + * Validates provided encoding and throws an exception if invalid encoding. + * If no encoding is provided then mEncoding is default initialised to "utf-8". + * + * @param aEncoding Optional encoding (case insensitive) provided. + * (valid values are "utf-8", "utf-16", "utf-16be") + * Default value is "utf-8" if no encoding is provided. + * @return aRv EncodingError exception else null. + */ + void Init(const nsAString& aEncoding, ErrorResult& aRv); + +public: + /** + * Return the encoding name. + * + * @param aEncoding, current encoding. + */ + void GetEncoding(nsAString& aEncoding); + + /** + * Encodes incoming utf-16 code units/ DOM string to the requested encoding. + * + * @param aCx Javascript context. + * @param aObj the wrapper of the TextEncoder + * @param aString utf-16 code units to be encoded. + * @param aOptions Streaming option. Initialised by default to false. + * If the streaming option is false, then the encoding + * algorithm state will get reset. If set to true then + * the previous encoding is reused/continued. + * @return JSObject* The Uint8Array wrapped in a JS object. + */ + JSObject* Encode(JSContext* aCx, + JS::Handle<JSObject*> aObj, + const nsAString& aString, + const bool aStream, + ErrorResult& aRv); + +protected: + JSObject* + CreateUint8Array(JSContext* aCx, JS::Handle<JSObject*> aObj, + char* aBuf, uint32_t aLen) const + { + return Uint8Array::Create(aCx, aObj, aLen, + reinterpret_cast<uint8_t*>(aBuf)); } private: + nsCString mEncoding; + nsCOMPtr<nsIUnicodeEncoder> mEncoder; }; } // dom } // mozilla #endif // mozilla_dom_textencoder_h_
deleted file mode 100644 --- a/dom/encoding/TextEncoderBase.h +++ /dev/null @@ -1,81 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_dom_textencoderbase_h_ -#define mozilla_dom_textencoderbase_h_ - -#include "mozilla/dom/BindingUtils.h" -#include "mozilla/dom/TypedArray.h" -#include "nsIUnicodeEncoder.h" - -namespace mozilla { -class ErrorResult; - -namespace dom { - -class TextEncoderBase -{ -protected: - TextEncoderBase() - {} - - virtual - ~TextEncoderBase() - {} - - /** - * Validates provided encoding and throws an exception if invalid encoding. - * If no encoding is provided then mEncoding is default initialised to "utf-8". - * - * @param aEncoding Optional encoding (case insensitive) provided. - * (valid values are "utf-8", "utf-16", "utf-16be") - * Default value is "utf-8" if no encoding is provided. - * @return aRv EncodingError exception else null. - */ - void Init(const nsAString& aEncoding, ErrorResult& aRv); - -public: - /** - * Return the encoding name. - * - * @param aEncoding, current encoding. - */ - void GetEncoding(nsAString& aEncoding); - - /** - * Encodes incoming utf-16 code units/ DOM string to the requested encoding. - * - * @param aCx Javascript context. - * @param aObj the wrapper of the TextEncoder - * @param aString utf-16 code units to be encoded. - * @param aOptions Streaming option. Initialised by default to false. - * If the streaming option is false, then the encoding - * algorithm state will get reset. If set to true then - * the previous encoding is reused/continued. - * @return JSObject* The Uint8Array wrapped in a JS object. - */ - JSObject* Encode(JSContext* aCx, - JS::Handle<JSObject*> aObj, - const nsAString& aString, - const bool aStream, - ErrorResult& aRv); - -protected: - JSObject* - CreateUint8Array(JSContext* aCx, JS::Handle<JSObject*> aObj, - char* aBuf, uint32_t aLen) const - { - return Uint8Array::Create(aCx, aObj, aLen, - reinterpret_cast<uint8_t*>(aBuf)); - } - -private: - nsCString mEncoding; - nsCOMPtr<nsIUnicodeEncoder> mEncoder; -}; - -} // dom -} // mozilla - -#endif // mozilla_dom_textencoderbase_h_