Merge "Create new RcsMessageQueryResultParcelable"
am: 6af6e3a4f6
Change-Id: Id86442efa84f9c2ed49dc362f4a17466851dacfe
diff --git a/telephony/java/android/telephony/ims/RcsMessageQueryResult.java b/telephony/java/android/telephony/ims/RcsMessageQueryResult.java
index 5df929b..aa551c1 100644
--- a/telephony/java/android/telephony/ims/RcsMessageQueryResult.java
+++ b/telephony/java/android/telephony/ims/RcsMessageQueryResult.java
@@ -20,13 +20,9 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.os.Parcel;
-import android.os.Parcelable;
-import com.android.ims.RcsTypeIdPair;
-
-import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
/**
* The result of a {@link RcsMessageStore#getRcsMessages(RcsMessageQueryParams)}
@@ -35,23 +31,11 @@
*
* @hide
*/
-public final class RcsMessageQueryResult implements Parcelable {
- // The token to continue the query to get the next batch of results
- private RcsQueryContinuationToken mContinuationToken;
- // The message type and message ID pairs for all the messages in this query result
- private List<RcsTypeIdPair> mMessageTypeIdPairs;
+public final class RcsMessageQueryResult {
+ private final RcsMessageQueryResultParcelable mRcsMessageQueryResultParcelable;
- /**
- * Internal constructor for {@link com.android.internal.telephony.ims.RcsMessageStoreController}
- * to create query results
- *
- * @hide
- */
- public RcsMessageQueryResult(
- RcsQueryContinuationToken continuationToken,
- List<RcsTypeIdPair> messageTypeIdPairs) {
- mContinuationToken = continuationToken;
- mMessageTypeIdPairs = messageTypeIdPairs;
+ RcsMessageQueryResult(RcsMessageQueryResultParcelable rcsMessageQueryResultParcelable) {
+ mRcsMessageQueryResultParcelable = rcsMessageQueryResultParcelable;
}
/**
@@ -61,7 +45,7 @@
*/
@Nullable
public RcsQueryContinuationToken getContinuationToken() {
- return mContinuationToken;
+ return mRcsMessageQueryResultParcelable.mContinuationToken;
}
/**
@@ -71,45 +55,10 @@
*/
@NonNull
public List<RcsMessage> getMessages() {
- List<RcsMessage> messages = new ArrayList<>();
- for (RcsTypeIdPair typeIdPair : mMessageTypeIdPairs) {
- if (typeIdPair.getType() == MESSAGE_TYPE_INCOMING) {
- messages.add(new RcsIncomingMessage(typeIdPair.getId()));
- } else {
- messages.add(new RcsOutgoingMessage(typeIdPair.getId()));
- }
- }
-
- return messages;
- }
-
- private RcsMessageQueryResult(Parcel in) {
- mContinuationToken = in.readParcelable(
- RcsQueryContinuationToken.class.getClassLoader());
- in.readTypedList(mMessageTypeIdPairs, RcsTypeIdPair.CREATOR);
- }
-
- public static final @android.annotation.NonNull Creator<RcsMessageQueryResult> CREATOR =
- new Creator<RcsMessageQueryResult>() {
- @Override
- public RcsMessageQueryResult createFromParcel(Parcel in) {
- return new RcsMessageQueryResult(in);
- }
-
- @Override
- public RcsMessageQueryResult[] newArray(int size) {
- return new RcsMessageQueryResult[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeParcelable(mContinuationToken, flags);
- dest.writeTypedList(mMessageTypeIdPairs);
+ return mRcsMessageQueryResultParcelable.mMessageTypeIdPairs.stream()
+ .map(typeIdPair -> typeIdPair.getType() == MESSAGE_TYPE_INCOMING
+ ? new RcsIncomingMessage(typeIdPair.getId())
+ : new RcsOutgoingMessage(typeIdPair.getId()))
+ .collect(Collectors.toList());
}
}
diff --git a/telephony/java/android/telephony/ims/RcsMessageQueryResult.aidl b/telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.aidl
similarity index 93%
rename from telephony/java/android/telephony/ims/RcsMessageQueryResult.aidl
rename to telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.aidl
index a73ba50..86928bf 100644
--- a/telephony/java/android/telephony/ims/RcsMessageQueryResult.aidl
+++ b/telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.aidl
@@ -17,4 +17,4 @@
package android.telephony.ims;
-parcelable RcsMessageQueryResult;
+parcelable RcsMessageQueryResultParcelable;
diff --git a/telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.java b/telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.java
new file mode 100644
index 0000000..4972f9b
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RcsMessageQueryResultParcelable.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.ims.RcsTypeIdPair;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @hide - used only for internal communication with the ircs service
+ */
+public class RcsMessageQueryResultParcelable implements Parcelable {
+ // The token to continue the query to get the next batch of results
+ final RcsQueryContinuationToken mContinuationToken;
+ // The message type and message ID pairs for all the messages in this query result
+ final List<RcsTypeIdPair> mMessageTypeIdPairs;
+
+ public RcsMessageQueryResultParcelable(
+ RcsQueryContinuationToken continuationToken,
+ List<RcsTypeIdPair> messageTypeIdPairs) {
+ mContinuationToken = continuationToken;
+ mMessageTypeIdPairs = messageTypeIdPairs;
+ }
+
+ private RcsMessageQueryResultParcelable(Parcel in) {
+ mContinuationToken = in.readParcelable(
+ RcsQueryContinuationToken.class.getClassLoader());
+
+ mMessageTypeIdPairs = new ArrayList<>();
+ in.readTypedList(mMessageTypeIdPairs, RcsTypeIdPair.CREATOR);
+ }
+
+ public static final Creator<RcsMessageQueryResultParcelable> CREATOR =
+ new Creator<RcsMessageQueryResultParcelable>() {
+ @Override
+ public RcsMessageQueryResultParcelable createFromParcel(Parcel in) {
+ return new RcsMessageQueryResultParcelable(in);
+ }
+
+ @Override
+ public RcsMessageQueryResultParcelable[] newArray(int size) {
+ return new RcsMessageQueryResultParcelable[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeParcelable(mContinuationToken, flags);
+ dest.writeTypedList(mMessageTypeIdPairs);
+ }
+}
diff --git a/telephony/java/android/telephony/ims/RcsMessageStore.java b/telephony/java/android/telephony/ims/RcsMessageStore.java
index 6fcb62b..0aaec7f 100644
--- a/telephony/java/android/telephony/ims/RcsMessageStore.java
+++ b/telephony/java/android/telephony/ims/RcsMessageStore.java
@@ -104,7 +104,8 @@
@NonNull
public RcsMessageQueryResult getRcsMessages(
@Nullable RcsMessageQueryParams queryParameters) throws RcsMessageStoreException {
- return RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters));
+ return new RcsMessageQueryResult(
+ RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters)));
}
/**
@@ -118,7 +119,8 @@
@NonNull
public RcsMessageQueryResult getRcsMessages(
@NonNull RcsQueryContinuationToken continuationToken) throws RcsMessageStoreException {
- return RcsControllerCall.call(iRcs -> iRcs.getMessagesWithToken(continuationToken));
+ return new RcsMessageQueryResult(
+ RcsControllerCall.call(iRcs -> iRcs.getMessagesWithToken(continuationToken)));
}
/**
diff --git a/telephony/java/android/telephony/ims/RcsThread.java b/telephony/java/android/telephony/ims/RcsThread.java
index cf1dc76..2495f67 100644
--- a/telephony/java/android/telephony/ims/RcsThread.java
+++ b/telephony/java/android/telephony/ims/RcsThread.java
@@ -33,6 +33,7 @@
public abstract class RcsThread {
/**
* The rcs_participant_thread_id that represents this thread in the database
+ *
* @hide
*/
protected int mThreadId;
@@ -110,7 +111,8 @@
public RcsMessageQueryResult getMessages() throws RcsMessageStoreException {
RcsMessageQueryParams queryParameters =
new RcsMessageQueryParams.Builder().setThread(this).build();
- return RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters));
+ return new RcsMessageQueryResult(
+ RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters)));
}
/**
diff --git a/telephony/java/android/telephony/ims/aidl/IRcs.aidl b/telephony/java/android/telephony/ims/aidl/IRcs.aidl
index 50dc587..6eb966a 100644
--- a/telephony/java/android/telephony/ims/aidl/IRcs.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IRcs.aidl
@@ -23,7 +23,7 @@
import android.telephony.ims.RcsIncomingMessageCreationParams;
import android.telephony.ims.RcsMessageSnippet;
import android.telephony.ims.RcsMessageQueryParams;
-import android.telephony.ims.RcsMessageQueryResult;
+import android.telephony.ims.RcsMessageQueryResultParcelable;
import android.telephony.ims.RcsOutgoingMessageCreationParams;
import android.telephony.ims.RcsParticipantQueryParams;
import android.telephony.ims.RcsParticipantQueryResultParcelable;
@@ -49,9 +49,9 @@
RcsParticipantQueryResultParcelable getParticipantsWithToken(
in RcsQueryContinuationToken continuationToken);
- RcsMessageQueryResult getMessages(in RcsMessageQueryParams queryParams);
+ RcsMessageQueryResultParcelable getMessages(in RcsMessageQueryParams queryParams);
- RcsMessageQueryResult getMessagesWithToken(
+ RcsMessageQueryResultParcelable getMessagesWithToken(
in RcsQueryContinuationToken continuationToken);
RcsEventQueryResultDescriptor getEvents(in RcsEventQueryParams queryParams);