| Index: Source/wtf/text/TextCodecReplacement.cpp
|
| diff --git a/Source/wtf/text/TextCodecReplacement.cpp b/Source/wtf/text/TextCodecReplacement.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ca9373abd77b70b99b9aca968be458fecab1ad36
|
| --- /dev/null
|
| +++ b/Source/wtf/text/TextCodecReplacement.cpp
|
| @@ -0,0 +1,54 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "config.h"
|
| +#include "wtf/text/TextCodecReplacement.h"
|
| +
|
| +#include "wtf/PassOwnPtr.h"
|
| +#include "wtf/text/WTFString.h"
|
| +#include "wtf/unicode/CharacterNames.h"
|
| +
|
| +namespace WTF {
|
| +
|
| +TextCodecReplacement::TextCodecReplacement()
|
| + : m_sentEOF(false)
|
| +{
|
| +}
|
| +
|
| +void TextCodecReplacement::registerEncodingNames(EncodingNameRegistrar registrar)
|
| +{
|
| + // FIXME: The 'replacement' label itself should not be referenceable by
|
| + // resources or script - it's a specification convenience - but much of
|
| + // the wtf/text API asserts that an encoding name is a label for itself.
|
| + // crbug.com/277037
|
| + registrar("replacement", "replacement");
|
| +
|
| + registrar("csiso2022kr", "replacement");
|
| + registrar("hz-gb-2312", "replacement");
|
| + registrar("iso-2022-cn", "replacement");
|
| + registrar("iso-2022-cn-ext", "replacement");
|
| + registrar("iso-2022-kr", "replacement");
|
| +}
|
| +
|
| +static PassOwnPtr<TextCodec> newStreamingTextDecoderReplacement(const TextEncoding&, const void*)
|
| +{
|
| + return adoptPtr(new TextCodecReplacement);
|
| +}
|
| +
|
| +void TextCodecReplacement::registerCodecs(TextCodecRegistrar registrar)
|
| +{
|
| + registrar("replacement", newStreamingTextDecoderReplacement, 0);
|
| +}
|
| +
|
| +String TextCodecReplacement::decode(const char*, size_t, FlushBehavior, bool, bool& sawError)
|
| +{
|
| + sawError = true;
|
| + if (m_sentEOF)
|
| + return String();
|
| +
|
| + m_sentEOF = true;
|
| + return String(&Unicode::replacementCharacter, 1);
|
| +}
|
| +
|
| +} // namespace WTF
|
|
|