blob: ded186f3e7f694a6ae9680e8d4b9eb7aad47ea91 [file] [log] [blame]
/*
* Copyright (C) 2021 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 com.android.bedstead.remotedpc.managers;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.os.Bundle;
import androidx.annotation.NonNull;
import com.android.bedstead.remotedpc.processor.annotations.RemoteDpcAutomaticAdmin;
import com.android.bedstead.remotedpc.processor.annotations.RemoteDpcManager;
import java.util.List;
/**
* Wrapper of {@link DevicePolicyManager} methods for use with Remote DPC
*
* <p>Methods called on this interface will behave as if they were called directly by the
* RemoteDPC instance. Return values and exceptions will behave as expected.
*
* <p>Methods on this interface must match exactly the methods declared by
* {@link DevicePolicyManager}, or else must be identical to a method declared by
* {@link DevicePolicyManager} except that it excludes a {@code ComponentName admin} first argument
* and must be annotated {@link RemoteDpcAutomaticAdmin}.
*
* <p>When using {@link RemoteDpcAutomaticAdmin}, there must also exist an identical method on the
* interface which includes the {@code ComponentName admin} argument. The RemoteDPC component name
* will be automatically provided when the {@link RemoteDpcAutomaticAdmin} annotated method is
* called.
*/
@RemoteDpcManager(managerClass = DevicePolicyManager.class)
public interface RemoteDevicePolicyManager {
/** See {@link DevicePolicyManager#isUsingUnifiedPassword(ComponentName)}. */
boolean isUsingUnifiedPassword(@NonNull ComponentName admin);
/** See {@link DevicePolicyManager#isUsingUnifiedPassword(ComponentName)}. */
@RemoteDpcAutomaticAdmin boolean isUsingUnifiedPassword();
/** See {@link DevicePolicyManager#getCurrentFailedPasswordAttempts()}. */
int getCurrentFailedPasswordAttempts();
/** See {@link DevicePolicyManager#setLockTaskPackages(ComponentName, String[])}. */
void setLockTaskPackages(@NonNull ComponentName admin, @NonNull String[] packages);
/** See {@link DevicePolicyManager#setLockTaskPackages(ComponentName, String[])}. */
@RemoteDpcAutomaticAdmin void setLockTaskPackages(@NonNull String[] packages);
/** See {@link DevicePolicyManager#getLockTaskPackages(ComponentName)}. */
@NonNull String[] getLockTaskPackages(@NonNull ComponentName admin);
/** See {@link DevicePolicyManager#getLockTaskPackages(ComponentName)}. */
@RemoteDpcAutomaticAdmin @NonNull String[] getLockTaskPackages();
/** See {@link DevicePolicyManager#setLockTaskFeatures(ComponentName, int)}. */
void setLockTaskFeatures(
@NonNull ComponentName admin, int flags);
/** See {@link DevicePolicyManager#setLockTaskFeatures(ComponentName, int)}. */
@RemoteDpcAutomaticAdmin void setLockTaskFeatures(int flags);
/** See {@link DevicePolicyManager#getLockTaskFeatures(ComponentName)}. */
int getLockTaskFeatures(@NonNull ComponentName admin);
/** See {@link DevicePolicyManager#getLockTaskFeatures(ComponentName)}. */
@RemoteDpcAutomaticAdmin int getLockTaskFeatures();
/** See {@link DevicePolicyManager#setUserControlDisabledPackages(ComponentName, List)}. */
void setUserControlDisabledPackages(
@NonNull ComponentName admin, @NonNull List<String> packages);
/** See {@link DevicePolicyManager#setUserControlDisabledPackages(ComponentName, List)}. */
@RemoteDpcAutomaticAdmin void setUserControlDisabledPackages(@NonNull List<String> packages);
/** See {@link DevicePolicyManager#getUserControlDisabledPackages(ComponentName)}. */
@NonNull List<String> getUserControlDisabledPackages(@NonNull ComponentName admin);
/** See {@link DevicePolicyManager#getUserControlDisabledPackages(ComponentName)}. */
@RemoteDpcAutomaticAdmin @NonNull List<String> getUserControlDisabledPackages();
/** See {@link DevicePolicyManager#addUserRestriction(ComponentName, String)}. */
void addUserRestriction(@NonNull ComponentName admin, String key);
/** See {@link DevicePolicyManager#addUserRestriction(ComponentName, String)}. */
@RemoteDpcAutomaticAdmin void addUserRestriction(String key);
/** See {@link DevicePolicyManager#clearUserRestriction(ComponentName, String)}. */
void clearUserRestriction(@NonNull ComponentName admin, String key);
/** See {@link DevicePolicyManager#clearUserRestriction(ComponentName, String)}. */
@RemoteDpcAutomaticAdmin void clearUserRestriction(String key);
/** See {@link DevicePolicyManager#getUserRestrictions(ComponentName)}. */
@NonNull Bundle getUserRestrictions(@NonNull ComponentName admin);
/** See {@link DevicePolicyManager#getUserRestrictions(ComponentName)}. */
@RemoteDpcAutomaticAdmin @NonNull Bundle getUserRestrictions();
}