summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/rtt/impl/RttChatMessage.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/rtt/impl/RttChatMessage.java')
-rw-r--r--java/com/android/incallui/rtt/impl/RttChatMessage.java25
1 files changed, 12 insertions, 13 deletions
diff --git a/java/com/android/incallui/rtt/impl/RttChatMessage.java b/java/com/android/incallui/rtt/impl/RttChatMessage.java
index fe30364b8..6c852cf92 100644
--- a/java/com/android/incallui/rtt/impl/RttChatMessage.java
+++ b/java/com/android/incallui/rtt/impl/RttChatMessage.java
@@ -18,7 +18,6 @@ package com.android.incallui.rtt.impl;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.text.TextWatcher;
import com.android.incallui.rtt.protocol.Constants;
import com.google.common.base.Splitter;
import java.util.ArrayList;
@@ -59,10 +58,7 @@ final class RttChatMessage {
}
/**
- * Generates delta change to a text.
- *
- * <p>This is used to track text change of input. See more details in {@link
- * TextWatcher#onTextChanged}
+ * Computes delta change of two string.
*
* <p>e.g. "hello world" -> "hello" : "\b\b\b\b\b\b"
*
@@ -72,16 +68,19 @@ final class RttChatMessage {
*
* <p>"hello world" -> "hello new world" : "\b\b\b\b\bnew world"
*/
- static String getChangedString(CharSequence s, int start, int before, int count) {
+ static String computeChangedString(String oldMessage, String newMesssage) {
StringBuilder modify = new StringBuilder();
- char c = '\b';
- int oldLength = s.length() - count + before;
- for (int i = 0; i < oldLength - start; i++) {
- modify.append(c);
+ int indexChangeStart = 0;
+ while (indexChangeStart < oldMessage.length()
+ && indexChangeStart < newMesssage.length()
+ && oldMessage.charAt(indexChangeStart) == newMesssage.charAt(indexChangeStart)) {
+ indexChangeStart++;
+ }
+ for (int i = indexChangeStart; i < oldMessage.length(); i++) {
+ modify.append('\b');
}
- modify.append(s, start, start + count);
- if (start + count < s.length()) {
- modify.append(s, start + count, s.length());
+ for (int i = indexChangeStart; i < newMesssage.length(); i++) {
+ modify.append(newMesssage.charAt(i));
}
return modify.toString();
}