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

Commit f9dded94 authored by Evan Chen's avatar Evan Chen
Browse files

Remove role checker for non-selfManaged association

We should always show the dialog except the certificate
allowlist we introduced for Samsung for singleDevice
associaiton.

Reason: One application could manage multiple watches. Without user
consent dialog, users don’t know which watch will be paired.

"Make CDM skip the confirmation UI if the application that sent
the association request already holds the role for that device profile"
should only work for selfManaged device.

Fix: 232578878
Test: atest CtsCompanionDeviceManagerCoreTestCases
      atest CtsCompanionDeviceManagerUiAutomationTestCases
      atest CtsOsTestCases:CompanionDeviceManagerTest
Change-Id: Ieaf4e641a641d22ddb6f06e8ae21f51b875ba8e9
parent abe07300
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@ class AssociationRequestsProcessor {
        // 2b.1. Populate the request with required info.
        request.setPackageName(packageName);
        request.setUserId(userId);
        request.setSkipPrompt(mayAssociateWithoutPrompt(request, packageName, userId));
        request.setSkipPrompt(mayAssociateWithoutPrompt(packageName, userId));

        // 2b.2. Prepare extras and create an Intent.
        final Bundle extras = new Bundle();
@@ -321,18 +321,7 @@ class AssociationRequestsProcessor {
        }
    };

    private boolean mayAssociateWithoutPrompt(@NonNull AssociationRequest request,
            @NonNull String packageName, @UserIdInt int userId) {
        final String deviceProfile = request.getDeviceProfile();
        if (deviceProfile != null) {
            final boolean isRoleHolder = Binder.withCleanCallingIdentity(
                    () -> isRoleHolder(mContext, userId, packageName, deviceProfile));
            if (isRoleHolder) {
                // Don't need to collect user's consent since app already holds the role.
                return true;
            }
        }

    private boolean mayAssociateWithoutPrompt(@NonNull String packageName, @UserIdInt int userId) {
        // Below we check if the requesting package is allowlisted (usually by the OEM) for creating
        // CDM associations without user confirmation (prompt).
        // For this we'll check to config arrays: