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

Commit ddcbe639 authored by Mateus Azis's avatar Mateus Azis
Browse files

Avoid duplicate map lookups in RemoteConnectionManager.

Use Map.computeIfAbsent or the result of get() calls to interact with
the map via a single access, avoiding duplicate lookups.

Test: atest cts/tests/tests/telecom/src/android/telecom/cts/RemoteConnectionTest.java
Bug: 274764512
Change-Id: I1e6b10381f0c9b408c4a734384e550dfaefc1f40
parent d8ac0c19
Loading
Loading
Loading
Loading
+23 −26
Original line number Diff line number Diff line
@@ -39,18 +39,21 @@ public class RemoteConnectionManager {
    void addConnectionService(
            ComponentName componentName,
            IConnectionService outgoingConnectionServiceRpc) {
        if (!mRemoteConnectionServices.containsKey(componentName)) {
        mRemoteConnectionServices.computeIfAbsent(
                componentName,
                key -> {
                    try {
                RemoteConnectionService remoteConnectionService = new RemoteConnectionService(
                        outgoingConnectionServiceRpc,
                        mOurConnectionServiceImpl);
                mRemoteConnectionServices.put(componentName, remoteConnectionService);
                        return new RemoteConnectionService(
                                outgoingConnectionServiceRpc, mOurConnectionServiceImpl);
                    } catch (RemoteException e) {
                Log.w(RemoteConnectionManager.this,
                        "error when addConnectionService of %s: %s", componentName,
                        Log.w(
                                RemoteConnectionManager.this,
                                "error when addConnectionService of %s: %s",
                                componentName,
                                e.toString());
                        return null;
                    }
        }
                });
    }

    public RemoteConnection createRemoteConnection(
@@ -63,18 +66,15 @@ public class RemoteConnectionManager {
        }

        ComponentName componentName = request.getAccountHandle().getComponentName();
        if (!mRemoteConnectionServices.containsKey(componentName)) {
        RemoteConnectionService remoteService = mRemoteConnectionServices.get(componentName);
        if (remoteService == null) {
            throw new UnsupportedOperationException("accountHandle not supported: "
                    + componentName);
        }

        RemoteConnectionService remoteService = mRemoteConnectionServices.get(componentName);
        if (remoteService != null) {
        return remoteService.createRemoteConnection(
                connectionManagerPhoneAccount, request, isIncoming);
    }
        return null;
    }

    /**
     * Ask a {@code RemoteConnectionService} to create a {@code RemoteConference}.
@@ -94,18 +94,15 @@ public class RemoteConnectionManager {
        }

        ComponentName componentName = request.getAccountHandle().getComponentName();
        if (!mRemoteConnectionServices.containsKey(componentName)) {
        RemoteConnectionService remoteService = mRemoteConnectionServices.get(componentName);
        if (remoteService == null) {
            throw new UnsupportedOperationException("accountHandle not supported: "
                    + componentName);
        }

        RemoteConnectionService remoteService = mRemoteConnectionServices.get(componentName);
        if (remoteService != null) {
        return remoteService.createRemoteConference(
                connectionManagerPhoneAccount, request, isIncoming);
    }
        return null;
    }

    public void conferenceRemoteConnections(RemoteConnection a, RemoteConnection b) {
        if (a.getConnectionService() == b.getConnectionService()) {