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

Commit fe16046f authored by Joseph Pirozzo's avatar Joseph Pirozzo
Browse files

MapClient Send MMS

Update to allow headless system user invoke API.

Test: atest BluetoothInstrumentationTests
Bug: 186875951
Tag: #compatibility
Change-Id: I6b74307e2e7aed6edd636ee40e5ccb014aed73f0
parent 5859f851
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class MapClientService extends ProfileService {
@@ -291,7 +290,7 @@ public class MapClientService extends ProfileService {
    }

    @Override
    protected IProfileServiceBinder initBinder() {
    public IProfileServiceBinder initBinder() {
        return new Binder(this);
    }

@@ -461,7 +460,7 @@ public class MapClientService extends ProfileService {

        @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
        private MapClientService getService(AttributionSource source) {
            if (!Utils.checkCallerIsSystemOrActiveUser(TAG)
            if (!(MapUtils.isSystemUser() || Utils.checkCallerIsSystemOrActiveUser(TAG))
                    || !Utils.checkServiceAvailable(mService, TAG)
                    || !Utils.checkConnectPermissionForDataDelivery(mService, source, TAG)) {
                return null;
+20 −0
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import static org.mockito.Mockito.*;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.IBluetoothMapClient;
import android.content.Context;
import android.os.UserHandle;

import androidx.test.InstrumentationRegistry;
import androidx.test.filters.MediumTest;
@@ -30,6 +32,7 @@ import androidx.test.runner.AndroidJUnit4;

import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.storage.DatabaseManager;

@@ -182,6 +185,23 @@ public class MapClientTest {
        Assert.assertFalse(mService.connect(last));
    }

    /**
     * Test calling connect via Binder
     */
    @Test
    public void testConnectViaBinder() {
        BluetoothDevice device = makeBluetoothDevice("11:11:11:11:11:11");
        mockDevicePriority(device, BluetoothProfile.CONNECTION_POLICY_ALLOWED);
        IBluetoothMapClient.Stub mapClientBinder = (IBluetoothMapClient.Stub) mService.initBinder();
        try {
            Assert.assertFalse(mapClientBinder.connect(device, mAdapter.getAttributionSource()));
            Utils.setForegroundUserId(UserHandle.getCallingUserId());
            Assert.assertTrue(mapClientBinder.connect(device, mAdapter.getAttributionSource()));
        } catch (Exception e) {
            Assert.fail(e.toString());
        }
    }

    private BluetoothDevice makeBluetoothDevice(String address) {
        return mAdapter.getRemoteDevice(address);
    }