Merge "Create new RcsMessageQueryResultParcelable" am: 6af6e3a4f6

am: 728f0e4927

Change-Id: I0ef4197635fac2c6d78b423e120cd8b9580c52ff
This commit is contained in:
Leland Miller
2019-04-23 23:42:12 -07:00
committed by android-build-merger
6 changed files with 96 additions and 69 deletions

View File

@@ -20,13 +20,9 @@ import static android.provider.Telephony.RcsColumns.RcsUnifiedMessageColumns.MES
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 @@ import java.util.List;
*
* @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 @@ public final class RcsMessageQueryResult implements Parcelable {
*/
@Nullable
public RcsQueryContinuationToken getContinuationToken() {
return mContinuationToken;
return mRcsMessageQueryResultParcelable.mContinuationToken;
}
/**
@@ -71,45 +55,10 @@ public final class RcsMessageQueryResult implements Parcelable {
*/
@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());
}
}

View File

@@ -17,4 +17,4 @@
package android.telephony.ims;
parcelable RcsMessageQueryResult;
parcelable RcsMessageQueryResultParcelable;

View File

@@ -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);
}
}

View File

@@ -104,7 +104,8 @@ public class RcsMessageStore {
@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 @@ public class RcsMessageStore {
@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)));
}
/**

View File

@@ -33,6 +33,7 @@ import com.android.internal.annotations.VisibleForTesting;
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 abstract class RcsThread {
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)));
}
/**

View File

@@ -23,7 +23,7 @@ import android.telephony.ims.RcsFileTransferCreationParams;
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 @@ interface IRcs {
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);