Fix translation session id collision bug.
Currently the session id is genrated from a static random number generator created with new Random(), all has the same seed value in the given Context, so the sequence it generates is identical across processes Ideally the id should be generated from a center controller to avoid collision, the content capture met the same problem before. Follow the same solution used in content capture, we use SecureRandom which produces non-deterministic output. But it still good to come out a more stable solution in the future release. Bug: 239385816 Test: manual Test: atest CtsTranslationTestCases Change-Id: Ie75acfa6a55a58e0c0a709f2a5ae1c6e5d6dc339
This commit is contained in:
@@ -40,11 +40,11 @@ import android.util.Pair;
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.util.SyncResultReceiver;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
@@ -92,7 +92,8 @@ public final class TranslationManager {
|
||||
private final Map<Consumer<TranslationCapability>, IRemoteCallback> mCapabilityCallbacks =
|
||||
new ArrayMap<>();
|
||||
|
||||
private static final Random ID_GENERATOR = new Random();
|
||||
// TODO(b/158778794): make the session ids truly globally unique across processes
|
||||
private static final SecureRandom ID_GENERATOR = new SecureRandom();
|
||||
private final Object mLock = new Object();
|
||||
|
||||
@NonNull
|
||||
|
||||
Reference in New Issue
Block a user