| Index: third_party/WebKit/Source/core/editing/iterators/TextBufferBase.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/iterators/TextBufferBase.cpp b/third_party/WebKit/Source/core/editing/iterators/TextBufferBase.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2a79a5c97c82a579c2a998dc21687b3ed7438e9e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/core/editing/iterators/TextBufferBase.cpp
|
| @@ -0,0 +1,42 @@
|
| +// Copyright 2016 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 "core/editing/iterators/TextBufferBase.h"
|
| +
|
| +namespace blink {
|
| +
|
| +TextBufferBase::TextBufferBase()
|
| +{
|
| + m_buffer.resize(capacity());
|
| +}
|
| +
|
| +void TextBufferBase::shiftData(size_t)
|
| +{
|
| +}
|
| +
|
| +void TextBufferBase::pushCharacters(UChar ch, size_t length)
|
| +{
|
| + if (length == 0)
|
| + return;
|
| + std::fill_n(ensureDestination(length), length, ch);
|
| +}
|
| +
|
| +UChar* TextBufferBase::ensureDestination(size_t length)
|
| +{
|
| + if (m_size + length > capacity())
|
| + grow(m_size + length);
|
| + UChar* ans = calcDestination(length);
|
| + m_size += length;
|
| + return ans;
|
| +}
|
| +
|
| +void TextBufferBase::grow(size_t demand)
|
| +{
|
| + size_t oldCapacity = capacity();
|
| + m_buffer.resize(demand);
|
| + m_buffer.resize(capacity());
|
| + shiftData(oldCapacity);
|
| +}
|
| +
|
| +} // namespace blink
|
|
|