| Index: base/strings/utf_offset_string_conversions.cc
|
| diff --git a/base/strings/utf_offset_string_conversions.cc b/base/strings/utf_offset_string_conversions.cc
|
| index 731175f97367cd7cf6f14b14c4e05af920626556..e8688ffbbe5e304db4448d58234bf16ad433f7ba 100644
|
| --- a/base/strings/utf_offset_string_conversions.cc
|
| +++ b/base/strings/utf_offset_string_conversions.cc
|
| @@ -37,7 +37,7 @@ void OffsetAdjuster::AdjustOffset(const Adjustments& adjustments,
|
| size_t* offset) {
|
| if (*offset == string16::npos)
|
| return;
|
| - size_t adjustment = 0;
|
| + int adjustment = 0;
|
| for (Adjustments::const_iterator i = adjustments.begin();
|
| i != adjustments.end(); ++i) {
|
| if (*offset <= i->original_offset)
|
| @@ -52,6 +52,37 @@ void OffsetAdjuster::AdjustOffset(const Adjustments& adjustments,
|
| }
|
|
|
| // static
|
| +void OffsetAdjuster::UnadjustOffsets(
|
| + const Adjustments& adjustments,
|
| + std::vector<size_t>* offsets_for_unadjustment) {
|
| + if (!offsets_for_unadjustment || adjustments.empty())
|
| + return;
|
| + for (std::vector<size_t>::iterator i(offsets_for_unadjustment->begin());
|
| + i != offsets_for_unadjustment->end(); ++i)
|
| + UnadjustOffset(adjustments, &(*i));
|
| +}
|
| +
|
| +// static
|
| +void OffsetAdjuster::UnadjustOffset(const Adjustments& adjustments,
|
| + size_t* offset) {
|
| + if (*offset == string16::npos)
|
| + return;
|
| + int adjustment = 0;
|
| + for (Adjustments::const_iterator i = adjustments.begin();
|
| + i != adjustments.end(); ++i) {
|
| + if (*offset + adjustment <= i->original_offset)
|
| + break;
|
| + adjustment += (i->original_length - i->output_length);
|
| + if ((*offset + adjustment) <
|
| + (i->original_offset + i->original_length)) {
|
| + *offset = string16::npos;
|
| + return;
|
| + }
|
| + }
|
| + *offset += adjustment;
|
| +}
|
| +
|
| +// static
|
| void OffsetAdjuster::MergeSequentialAdjustments(
|
| const Adjustments& first_adjustments,
|
| Adjustments* adjustments_on_adjusted_string) {
|
|
|