Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87ff6d9d authored by Joanne's avatar Joanne
Browse files

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
Change-Id: Ie75acfa6a55a58e0c0a709f2a5ae1c6e5d6dc339
parent 7cbb2a39
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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