Wrap translation capabilities in ParceledListSlice before sending due to
potentially large amount of data sent. Bug: 191231597 Test: atest CtsTranslationTestCases Change-Id: I21abdfb3feacd9e12b8a1f3d4012c86a69930355
This commit is contained in:
@@ -29,6 +29,7 @@ import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.os.BaseBundle;
|
||||
import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
@@ -38,7 +39,6 @@ import android.os.ICancellationSignal;
|
||||
import android.os.Looper;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ResultReceiver;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.view.translation.ITranslationDirectManager;
|
||||
import android.view.translation.ITranslationServiceCallback;
|
||||
@@ -51,6 +51,7 @@ import android.view.translation.TranslationSpec;
|
||||
|
||||
import com.android.internal.os.IResultReceiver;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
@@ -366,10 +367,11 @@ public abstract class TranslationService extends Service {
|
||||
+ "format compatibility");
|
||||
}
|
||||
|
||||
final ArraySet<TranslationCapability> capabilities = new ArraySet<>(values);
|
||||
final Bundle bundle = new Bundle();
|
||||
bundle.putParcelableArray(TranslationManager.EXTRA_CAPABILITIES,
|
||||
capabilities.toArray(new TranslationCapability[0]));
|
||||
final ParceledListSlice<TranslationCapability> listSlice =
|
||||
new ParceledListSlice<>(Arrays.asList(
|
||||
values.toArray(new TranslationCapability[0])));
|
||||
bundle.putParcelable(TranslationManager.EXTRA_CAPABILITIES, listSlice);
|
||||
resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, bundle);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -23,12 +23,12 @@ import android.annotation.SystemService;
|
||||
import android.annotation.WorkerThread;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IRemoteCallback;
|
||||
import android.os.Looper;
|
||||
import android.os.Parcelable;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SynchronousResultReceiver;
|
||||
import android.util.ArrayMap;
|
||||
@@ -271,13 +271,10 @@ public final class TranslationManager {
|
||||
if (result.resultCode != STATUS_SYNC_CALL_SUCCESS) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
Parcelable[] parcelables = result.bundle.getParcelableArray(EXTRA_CAPABILITIES);
|
||||
ArraySet<TranslationCapability> capabilities = new ArraySet();
|
||||
for (Parcelable obj : parcelables) {
|
||||
if (obj instanceof TranslationCapability) {
|
||||
capabilities.add((TranslationCapability) obj);
|
||||
}
|
||||
}
|
||||
ParceledListSlice<TranslationCapability> listSlice =
|
||||
result.bundle.getParcelable(EXTRA_CAPABILITIES);
|
||||
ArraySet<TranslationCapability> capabilities =
|
||||
new ArraySet<>(listSlice == null ? null : listSlice.getList());
|
||||
return capabilities;
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
|
||||
Reference in New Issue
Block a user