summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/text/line_ending.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/text/line_ending.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/text/line_ending.cc72
1 files changed, 9 insertions, 63 deletions
diff --git a/chromium/third_party/blink/renderer/platform/text/line_ending.cc b/chromium/third_party/blink/renderer/platform/text/line_ending.cc
index 9182cbd34a6..442f62d6fd8 100644
--- a/chromium/third_party/blink/renderer/platform/text/line_ending.cc
+++ b/chromium/third_party/blink/renderer/platform/text/line_ending.cc
@@ -41,55 +41,6 @@
namespace blink {
namespace {
-class OutputBuffer {
- STACK_ALLOCATED();
- DISALLOW_COPY_AND_ASSIGN(OutputBuffer);
-
- public:
- OutputBuffer() = default;
- virtual char* Allocate(size_t) = 0;
- virtual void Copy(const CString&) = 0;
- virtual ~OutputBuffer() = default;
-};
-
-class CStringBuffer final : public OutputBuffer {
- public:
- CStringBuffer(CString& buffer) : buffer_(buffer) {}
- ~CStringBuffer() override = default;
-
- char* Allocate(size_t size) override {
- char* ptr;
- buffer_ = CString::CreateUninitialized(size, ptr);
- return ptr;
- }
-
- void Copy(const CString& source) override { buffer_ = source; }
-
- const CString& Buffer() const { return buffer_; }
-
- private:
- CString buffer_;
-};
-
-class VectorCharAppendBuffer final : public OutputBuffer {
- public:
- VectorCharAppendBuffer(Vector<char>& buffer) : buffer_(buffer) {}
- ~VectorCharAppendBuffer() override = default;
-
- char* Allocate(size_t size) override {
- size_t old_size = buffer_.size();
- buffer_.Grow(old_size + size);
- return buffer_.data() + old_size;
- }
-
- void Copy(const CString& source) override {
- buffer_.Append(source.data(), source.length());
- }
-
- private:
- Vector<char>& buffer_;
-};
-
template <typename CharType>
size_t RequiredSizeForCRLF(const CharType* data, size_t length) {
size_t new_len = 0;
@@ -137,19 +88,24 @@ void NormalizeToCRLF(const CharType* src, size_t src_length, CharType* q) {
}
}
+#if defined(OS_WIN)
void InternalNormalizeLineEndingsToCRLF(const CString& from,
- OutputBuffer& buffer) {
+ Vector<char>& buffer) {
size_t new_len = RequiredSizeForCRLF(from.data(), from.length());
if (new_len < from.length())
return;
if (new_len == from.length()) {
- buffer.Copy(from);
+ buffer.Append(from.data(), from.length());
return;
}
- NormalizeToCRLF(from.data(), from.length(), buffer.Allocate(new_len));
+ size_t old_buffer_size = buffer.size();
+ buffer.Grow(old_buffer_size + new_len);
+ char* write_position = buffer.data() + old_buffer_size;
+ NormalizeToCRLF(from.data(), from.length(), write_position);
}
+#endif // defined(OS_WIN)
} // namespace
@@ -202,15 +158,6 @@ void NormalizeLineEndingsToLF(const CString& from, Vector<char>& result) {
}
}
-CString NormalizeLineEndingsToCRLF(const CString& from) {
- if (!from.length())
- return from;
- CString result;
- CStringBuffer buffer(result);
- InternalNormalizeLineEndingsToCRLF(from, buffer);
- return buffer.Buffer();
-}
-
String NormalizeLineEndingsToCRLF(const String& src) {
size_t length = src.length();
if (length == 0)
@@ -233,8 +180,7 @@ String NormalizeLineEndingsToCRLF(const String& src) {
void NormalizeLineEndingsToNative(const CString& from, Vector<char>& result) {
#if defined(OS_WIN)
- VectorCharAppendBuffer buffer(result);
- InternalNormalizeLineEndingsToCRLF(from, buffer);
+ InternalNormalizeLineEndingsToCRLF(from, result);
#else
NormalizeLineEndingsToLF(from, result);
#endif