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

Commit 70014ef9 authored by Guojing Yuan's avatar Guojing Yuan Committed by Android (Google) Code Review
Browse files

Merge "[CDM] Move shared resources to API layer" into main

parents acb9620f 5a239257
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.companion;

/**
 * @hide
 */
public final class CompanionResources {

    // Permission sets for association dialogs
    public static final int PERMISSION_NOTIFICATION_LISTENER_ACCESS = 0;
    public static final int PERMISSION_STORAGE = 1;
    public static final int PERMISSION_PHONE = 2;
    public static final int PERMISSION_SMS = 3;
    public static final int PERMISSION_CONTACTS = 4;
    public static final int PERMISSION_CALENDAR = 5;
    public static final int PERMISSION_NEARBY_DEVICES = 6;
    public static final int PERMISSION_MICROPHONE = 7;
    public static final int PERMISSION_CALL_LOGS = 8;
    // Notification Listener Access & POST_NOTIFICATION permission
    public static final int PERMISSION_NOTIFICATIONS = 9;
    public static final int PERMISSION_CHANGE_MEDIA_OUTPUT = 10;

    // Constants used by AssociationRequestProcessor and CompanionAssociationActivity
    public static final String EXTRA_APPLICATION_CALLBACK = "application_callback";
    public static final String EXTRA_ASSOCIATION_REQUEST = "association_request";
    public static final String EXTRA_RESULT_RECEIVER = "result_receiver";
    public static final String EXTRA_FORCE_CANCEL_CONFIRMATION = "cancel_confirmation";
    public static final int RESULT_CODE_ASSOCIATION_CREATED = 0;
    public static final String EXTRA_ASSOCIATION = "association";
    public static final int RESULT_CODE_ASSOCIATION_APPROVED = 0;
    public static final String EXTRA_MAC_ADDRESS = "mac_address";
}
+10 −22
Original line number Diff line number Diff line
@@ -19,6 +19,14 @@ package com.android.companiondevicemanager;
import static android.companion.CompanionDeviceManager.RESULT_INTERNAL_ERROR;
import static android.companion.CompanionDeviceManager.RESULT_SECURITY_ERROR;
import static android.companion.CompanionDeviceManager.RESULT_USER_REJECTED;
import static android.companion.CompanionResources.EXTRA_APPLICATION_CALLBACK;
import static android.companion.CompanionResources.EXTRA_ASSOCIATION;
import static android.companion.CompanionResources.EXTRA_ASSOCIATION_REQUEST;
import static android.companion.CompanionResources.EXTRA_FORCE_CANCEL_CONFIRMATION;
import static android.companion.CompanionResources.EXTRA_MAC_ADDRESS;
import static android.companion.CompanionResources.EXTRA_RESULT_RECEIVER;
import static android.companion.CompanionResources.RESULT_CODE_ASSOCIATION_APPROVED;
import static android.companion.CompanionResources.RESULT_CODE_ASSOCIATION_CREATED;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState;
@@ -85,7 +93,7 @@ import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.android.net.module.util.CollectionUtils;
import com.android.internal.util.CollectionUtils;

import java.util.List;

@@ -98,26 +106,6 @@ public class CompanionAssociationActivity extends FragmentActivity implements
        CompanionVendorHelperDialogFragment.CompanionVendorHelperDialogListener {
    private static final String TAG = "CDM_CompanionDeviceActivity";

    // Keep the following constants in sync with
    // frameworks/base/services/companion/java/
    // com/android/server/companion/AssociationRequestsProcessor.java

    // AssociationRequestsProcessor <-> UI
    private static final String EXTRA_APPLICATION_CALLBACK = "application_callback";
    private static final String EXTRA_ASSOCIATION_REQUEST = "association_request";
    private static final String EXTRA_RESULT_RECEIVER = "result_receiver";
    private static final String EXTRA_FORCE_CANCEL_CONFIRMATION = "cancel_confirmation";

    private static final String FRAGMENT_DIALOG_TAG = "fragment_dialog";

    // AssociationRequestsProcessor -> UI
    private static final int RESULT_CODE_ASSOCIATION_CREATED = 0;
    private static final String EXTRA_ASSOCIATION = "association";

    // UI -> AssociationRequestsProcessor
    private static final int RESULT_CODE_ASSOCIATION_APPROVED = 0;
    private static final String EXTRA_MAC_ADDRESS = "mac_address";

    private AssociationRequest mRequest;
    private IAssociationRequestCallback mAppCallback;
    private ResultReceiver mCdmServiceReceiver;
@@ -737,7 +725,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements

        mAssociationConfirmationDialog.setVisibility(View.INVISIBLE);

        fragmentDialog.show(fragmentManager, /* Tag */ FRAGMENT_DIALOG_TAG);
        fragmentDialog.show(fragmentManager, CompanionVendorHelperDialogFragment.TAG);
    }

    private boolean isDone() {
+11 −14
Original line number Diff line number Diff line
@@ -24,6 +24,17 @@ import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_
import static android.companion.AssociationRequest.DEVICE_PROFILE_VIRTUAL_DEVICE;
import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
import static android.companion.AssociationRequest.DEVICE_PROFILE_WEARABLE_SENSING;
import static android.companion.CompanionResources.PERMISSION_CALENDAR;
import static android.companion.CompanionResources.PERMISSION_CALL_LOGS;
import static android.companion.CompanionResources.PERMISSION_CHANGE_MEDIA_OUTPUT;
import static android.companion.CompanionResources.PERMISSION_CONTACTS;
import static android.companion.CompanionResources.PERMISSION_MICROPHONE;
import static android.companion.CompanionResources.PERMISSION_NEARBY_DEVICES;
import static android.companion.CompanionResources.PERMISSION_NOTIFICATIONS;
import static android.companion.CompanionResources.PERMISSION_NOTIFICATION_LISTENER_ACCESS;
import static android.companion.CompanionResources.PERMISSION_PHONE;
import static android.companion.CompanionResources.PERMISSION_SMS;
import static android.companion.CompanionResources.PERMISSION_STORAGE;

import static java.util.Collections.unmodifiableMap;
import static java.util.Collections.unmodifiableSet;
@@ -40,20 +51,6 @@ import java.util.Set;
 */
final class CompanionDeviceResources {

    // Permissions - in sync with PermissionUtils
    private static final int PERMISSION_NOTIFICATION_LISTENER_ACCESS = 0;
    private static final int PERMISSION_STORAGE = 1;
    private static final int PERMISSION_PHONE = 2;
    private static final int PERMISSION_SMS = 3;
    private static final int PERMISSION_CONTACTS = 4;
    private static final int PERMISSION_CALENDAR = 5;
    private static final int PERMISSION_NEARBY_DEVICES = 6;
    private static final int PERMISSION_MICROPHONE = 7;
    private static final int PERMISSION_CALL_LOGS = 8;
    // Notification Listener Access & POST_NOTIFICATION permission
    private static final int PERMISSION_NOTIFICATIONS = 9;
    private static final int PERMISSION_CHANGE_MEDIA_OUTPUT = 10;

    static final Map<Integer, Integer> PERMISSION_TITLES;
    static {
        final Map<Integer, Integer> map = new ArrayMap<>();
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import androidx.fragment.app.DialogFragment;
 * A fragmentDialog shows additional information about selfManaged devices
 */
public class CompanionVendorHelperDialogFragment extends DialogFragment {
    private static final String TAG = "CDM_CompanionVendorHelperDialogFragment";
    static final String TAG = "CDM_CompanionVendorHelperDialogFragment";
    private static final String ASSOCIATION_REQUEST_EXTRA = "association_request";

    private CompanionVendorHelperDialogListener mListener;
+10 −16
Original line number Diff line number Diff line
@@ -21,12 +21,20 @@ import static android.app.PendingIntent.FLAG_IMMUTABLE;
import static android.app.PendingIntent.FLAG_ONE_SHOT;
import static android.companion.CompanionDeviceManager.RESULT_INTERNAL_ERROR;
import static android.companion.CompanionDeviceManager.RESULT_SECURITY_ERROR;
import static android.companion.CompanionResources.EXTRA_APPLICATION_CALLBACK;
import static android.companion.CompanionResources.EXTRA_ASSOCIATION;
import static android.companion.CompanionResources.EXTRA_ASSOCIATION_REQUEST;
import static android.companion.CompanionResources.EXTRA_FORCE_CANCEL_CONFIRMATION;
import static android.companion.CompanionResources.EXTRA_MAC_ADDRESS;
import static android.companion.CompanionResources.EXTRA_RESULT_RECEIVER;
import static android.companion.CompanionResources.PERMISSION_NOTIFICATIONS;
import static android.companion.CompanionResources.PERMISSION_NOTIFICATION_LISTENER_ACCESS;
import static android.companion.CompanionResources.RESULT_CODE_ASSOCIATION_APPROVED;
import static android.companion.CompanionResources.RESULT_CODE_ASSOCIATION_CREATED;
import static android.content.ComponentName.createRelative;
import static android.content.pm.PackageManager.FEATURE_WATCH;

import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PermissionsUtils.PERMISSION_NOTIFICATIONS;
import static com.android.server.companion.utils.PermissionsUtils.PERMISSION_NOTIFICATION_LISTENER_ACCESS;
import static com.android.server.companion.utils.PermissionsUtils.PERM_SET_TO_PERMS;
import static com.android.server.companion.utils.PermissionsUtils.enforcePermissionForCreatingAssociation;
import static com.android.server.companion.utils.RolesUtils.PROFILE_PERMISSION_SETS;
@@ -122,20 +130,6 @@ import java.util.Set;
public class AssociationRequestsProcessor {
    private static final String TAG = "CDM_AssociationRequestsProcessor";

    // AssociationRequestsProcessor <-> UI
    private static final String EXTRA_APPLICATION_CALLBACK = "application_callback";
    private static final String EXTRA_ASSOCIATION_REQUEST = "association_request";
    private static final String EXTRA_RESULT_RECEIVER = "result_receiver";
    private static final String EXTRA_FORCE_CANCEL_CONFIRMATION = "cancel_confirmation";

    // AssociationRequestsProcessor -> UI
    private static final int RESULT_CODE_ASSOCIATION_CREATED = 0;
    private static final String EXTRA_ASSOCIATION = "association";

    // UI -> AssociationRequestsProcessor
    private static final int RESULT_CODE_ASSOCIATION_APPROVED = 0;
    private static final String EXTRA_MAC_ADDRESS = "mac_address";

    private static final int ASSOCIATE_WITHOUT_PROMPT_MAX_PER_TIME_WINDOW = 5;
    private static final long ASSOCIATE_WITHOUT_PROMPT_WINDOW_MS = 60 * 60 * 1000; // 60 min;

Loading