From 93d27d0a5db53bc7cb7b03c58889667887d5816b Mon Sep 17 00:00:00 2001 From: wangqi Date: Fri, 9 Mar 2018 10:14:47 -0800 Subject: Save RTT chat history during the call. Thus putting call into background won't lose the history. This is only stored in memory by making RttChatMessage Parcelable and saved along with fragment's life cycle. Bug: 67596257 Test: manual PiperOrigin-RevId: 188500104 Change-Id: I11e8e55f0475defd9c3b9a8cc10db4186392ddd8 --- .../android/incallui/rtt/impl/RttChatMessage.java | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'java/com/android/incallui/rtt/impl/RttChatMessage.java') diff --git a/java/com/android/incallui/rtt/impl/RttChatMessage.java b/java/com/android/incallui/rtt/impl/RttChatMessage.java index 6c852cf92..fd83fb82f 100644 --- a/java/com/android/incallui/rtt/impl/RttChatMessage.java +++ b/java/com/android/incallui/rtt/impl/RttChatMessage.java @@ -16,6 +16,8 @@ package com.android.incallui.rtt.impl; +import android.os.Parcel; +import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.incallui.rtt.protocol.Constants; @@ -25,7 +27,7 @@ import java.util.Iterator; import java.util.List; /** Message class that holds one RTT chat content. */ -final class RttChatMessage { +final class RttChatMessage implements Parcelable { private static final Splitter SPLITTER = Splitter.on(Constants.BUBBLE_BREAKER); @@ -119,4 +121,41 @@ final class RttChatMessage { return messageList; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(getContent()); + boolean[] values = new boolean[2]; + values[0] = isRemote; + values[1] = isFinished; + dest.writeBooleanArray(values); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public RttChatMessage createFromParcel(Parcel in) { + return new RttChatMessage(in); + } + + @Override + public RttChatMessage[] newArray(int size) { + return new RttChatMessage[size]; + } + }; + + private RttChatMessage(Parcel in) { + content.append(in.readString()); + boolean[] values = new boolean[2]; + in.readBooleanArray(values); + isRemote = values[0]; + isFinished = values[1]; + } + + RttChatMessage() {} } -- cgit v1.2.3