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

Commit 404168a4 authored by Evan Chen's avatar Evan Chen
Browse files

Make sure sendresult after association was created

Add a new method to send activity result in
CompanionDeviceDiscoveryService and make sure
CDMService to call it before addAssociation.

Bug: 203418937
Test: Test: CTS Verifier test: Companion Device Service Test, Companion Device
Test and cts test: atest CtsOsTestCases:android.os.cts.CompanionDeviceManagerTest
Change-Id: Ied7d705934418869287a8be6cd44abe3b806db00
Merged-In: Ied7d705934418869287a8be6cd44abe3b806db00
parent 585e55f5
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -29,4 +29,6 @@ oneway interface ICompanionDeviceDiscoveryService {
        in String callingPackage,
        in String callingPackage,
        in IFindDeviceCallback findCallback,
        in IFindDeviceCallback findCallback,
        in AndroidFuture<Association> serviceCallback);
        in AndroidFuture<Association> serviceCallback);

    void onAssociationCreated();
}
}
+7 −1
Original line number Original line Diff line number Diff line
@@ -254,8 +254,14 @@ public class CompanionDeviceActivity extends Activity {
        Log.i(LOG_TAG, "onDeviceConfirmed(selectedDevice = " + selectedDevice + ")");
        Log.i(LOG_TAG, "onDeviceConfirmed(selectedDevice = " + selectedDevice + ")");
        getService().onDeviceSelected(
        getService().onDeviceSelected(
                getCallingPackage(), getDeviceMacAddress(selectedDevice.device));
                getCallingPackage(), getDeviceMacAddress(selectedDevice.device));
    }

    void setResultAndFinish() {
        Log.i(LOG_TAG, "setResultAndFinish(selectedDevice = "
                + getService().mSelectedDevice.device + ")");
        setResult(RESULT_OK,
        setResult(RESULT_OK,
                new Intent().putExtra(CompanionDeviceManager.EXTRA_DEVICE, selectedDevice.device));
                new Intent().putExtra(
                        CompanionDeviceManager.EXTRA_DEVICE, getService().mSelectedDevice.device));
        finish();
        finish();
    }
    }


+10 −0
Original line number Original line Diff line number Diff line
@@ -117,6 +117,11 @@ public class CompanionDeviceDiscoveryService extends Service {
                    CompanionDeviceDiscoveryService::startDiscovery,
                    CompanionDeviceDiscoveryService::startDiscovery,
                    CompanionDeviceDiscoveryService.this, request));
                    CompanionDeviceDiscoveryService.this, request));
        }
        }

        @Override
        public void onAssociationCreated() {
            Handler.getMain().post(CompanionDeviceDiscoveryService.this::onAssociationCreated);
        }
    };
    };


    private ScanCallback mBLEScanCallback;
    private ScanCallback mBLEScanCallback;
@@ -222,6 +227,11 @@ public class CompanionDeviceDiscoveryService extends Service {
                SCAN_TIMEOUT);
                SCAN_TIMEOUT);
    }
    }


    @MainThread
    private void onAssociationCreated() {
        mActivity.setResultAndFinish();
    }

    private boolean shouldScan(List<? extends DeviceFilter> mediumSpecificFilters) {
    private boolean shouldScan(List<? extends DeviceFilter> mediumSpecificFilters) {
        return !isEmpty(mediumSpecificFilters) || isEmpty(mFilters);
        return !isEmpty(mediumSpecificFilters) || isEmpty(mFilters);
    }
    }
+3 −0
Original line number Original line Diff line number Diff line
@@ -457,6 +457,9 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
            }, FgThread.getExecutor()).whenComplete(uncheckExceptions((association, err) -> {
            }, FgThread.getExecutor()).whenComplete(uncheckExceptions((association, err) -> {
                if (err == null) {
                if (err == null) {
                    addAssociation(association, userId);
                    addAssociation(association, userId);
                    mServiceConnectors.forUser(userId).post(service -> {
                        service.onAssociationCreated();
                    });
                } else {
                } else {
                    Slog.e(LOG_TAG, "Failed to discover device(s)", err);
                    Slog.e(LOG_TAG, "Failed to discover device(s)", err);
                    callback.onFailure("No devices found: " + err.getMessage());
                    callback.onFailure("No devices found: " + err.getMessage());