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

Commit c13d7e93 authored by Kholoud Mohamed's avatar Kholoud Mohamed Committed by Android (Google) Code Review
Browse files

Merge changes from topic "coexistenceTests"

* changes:
  Expose some constructors/getters required for testing
  Expose device policy identifiers for migrated policies
parents 1847d633 f224f8a2
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -7750,6 +7750,26 @@ package android.app.admin {
    method public final android.os.IBinder onBind(android.content.Intent);
  }
  public final class DevicePolicyIdentifiers {
    method @NonNull public static String getIdentifierForUserRestriction(@NonNull String);
    field public static final String ACCOUNT_MANAGEMENT_DISABLED_POLICY = "accountManagementDisabled";
    field public static final String APPLICATION_HIDDEN_POLICY = "applicationHidden";
    field public static final String APPLICATION_RESTRICTIONS_POLICY = "applicationRestrictions";
    field public static final String AUTO_TIMEZONE_POLICY = "autoTimezone";
    field public static final String AUTO_TIME_POLICY = "autoTime";
    field public static final String BACKUP_SERVICE_POLICY = "backupService";
    field public static final String CAMERA_DISABLED_POLICY = "cameraDisabled";
    field public static final String KEYGUARD_DISABLED_FEATURES_POLICY = "keyguardDisabledFeatures";
    field public static final String LOCK_TASK_POLICY = "lockTask";
    field public static final String PACKAGES_SUSPENDED_POLICY = "packagesSuspended";
    field public static final String PACKAGE_UNINSTALL_BLOCKED_POLICY = "packageUninstallBlocked";
    field public static final String PERMISSION_GRANT_POLICY = "permissionGrant";
    field public static final String PERSISTENT_PREFERRED_ACTIVITY_POLICY = "persistentPreferredActivity";
    field public static final String RESET_PASSWORD_TOKEN_POLICY = "resetPasswordToken";
    field public static final String STATUS_BAR_DISABLED_POLICY = "statusBarDisabled";
    field public static final String USER_CONTROL_DISABLED_PACKAGES_POLICY = "userControlDisabledPackages";
  }
  public class DevicePolicyManager {
    method public void acknowledgeDeviceCompliant();
    method public void addCrossProfileIntentFilter(@NonNull android.content.ComponentName, android.content.IntentFilter, int);
@@ -8303,6 +8323,8 @@ package android.app.admin {
    ctor public PolicyUpdateResult(int);
    method public int getResultCode();
    field public static final int RESULT_FAILURE_CONFLICTING_ADMIN_POLICY = 1; // 0x1
    field public static final int RESULT_FAILURE_HARDWARE_LIMITATION = 4; // 0x4
    field public static final int RESULT_FAILURE_STORAGE_LIMIT_REACHED = 3; // 0x3
    field public static final int RESULT_FAILURE_UNKNOWN = -1; // 0xffffffff
    field public static final int RESULT_POLICY_CLEARED = 2; // 0x2
    field public static final int RESULT_SUCCESS = 0; // 0x0
@@ -8315,6 +8337,7 @@ package android.app.admin {
    method public final void onReceive(android.content.Context, android.content.Intent);
    field public static final String ACTION_DEVICE_POLICY_CHANGED = "android.app.admin.action.DEVICE_POLICY_CHANGED";
    field public static final String ACTION_DEVICE_POLICY_SET_RESULT = "android.app.admin.action.DEVICE_POLICY_SET_RESULT";
    field public static final String EXTRA_ACCOUNT_TYPE = "android.app.admin.extra.ACCOUNT_TYPE";
    field public static final String EXTRA_INTENT_FILTER = "android.app.admin.extra.INTENT_FILTER";
    field public static final String EXTRA_PACKAGE_NAME = "android.app.admin.extra.PACKAGE_NAME";
    field public static final String EXTRA_PERMISSION_NAME = "android.app.admin.extra.PERMISSION_NAME";
+12 −0
Original line number Diff line number Diff line
@@ -1206,11 +1206,19 @@ package android.app {
package android.app.admin {
  public final class AccountTypePolicyKey extends android.app.admin.PolicyKey {
    method public int describeContents();
    method @NonNull public String getAccountType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.AccountTypePolicyKey> CREATOR;
  }
  public abstract class Authority implements android.os.Parcelable {
    method public int describeContents();
  }
  public final class DeviceAdminAuthority extends android.app.admin.Authority {
    ctor public DeviceAdminAuthority();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DeviceAdminAuthority> CREATOR;
  }
@@ -1394,11 +1402,13 @@ package android.app.admin {
  }
  public final class DpcAuthority extends android.app.admin.Authority {
    ctor public DpcAuthority();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DpcAuthority> CREATOR;
  }
  public final class EnforcingAdmin implements android.os.Parcelable {
    ctor public EnforcingAdmin(@NonNull String, @NonNull android.app.admin.Authority, @NonNull android.os.UserHandle);
    method public int describeContents();
    method @NonNull public android.app.admin.Authority getAuthority();
    method @NonNull public String getPackageName();
@@ -1522,6 +1532,7 @@ package android.app.admin {
  }
  public final class RoleAuthority extends android.app.admin.Authority {
    ctor public RoleAuthority(@NonNull java.util.Set<java.lang.String>);
    method @NonNull public java.util.Set<java.lang.String> getRoles();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.RoleAuthority> CREATOR;
@@ -1542,6 +1553,7 @@ package android.app.admin {
  }
  public final class UnknownAuthority extends android.app.admin.Authority {
    ctor public UnknownAuthority();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.UnknownAuthority> CREATOR;
  }
+18 −1
Original line number Diff line number Diff line
@@ -512,6 +512,10 @@ package android.app {

package android.app.admin {

  public final class DeviceAdminAuthority extends android.app.admin.Authority {
    field @NonNull public static final android.app.admin.DeviceAdminAuthority DEVICE_ADMIN_AUTHORITY;
  }

  public class DevicePolicyManager {
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}) public void acknowledgeNewUserDisclaimer();
    method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public void clearOrganizationId();
@@ -592,21 +596,28 @@ package android.app.admin {
    field @Deprecated public static final int STATUS_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER = 14; // 0xe
  }

  public final class DpcAuthority extends android.app.admin.Authority {
    field @NonNull public static final android.app.admin.DpcAuthority DPC_AUTHORITY;
  }

  public final class FlagUnion extends android.app.admin.ResolutionMechanism<java.lang.Integer> {
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.FlagUnion> CREATOR;
    field @NonNull public static final android.app.admin.FlagUnion FLAG_UNION;
  }

  public final class MostRecent<V> extends android.app.admin.ResolutionMechanism<V> {
    ctor public MostRecent();
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.MostRecent> CREATOR;
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.MostRecent<?>> CREATOR;
    field @NonNull public static final android.app.admin.MostRecent<?> MOST_RECENT;
  }

  public final class MostRestrictive<V> extends android.app.admin.ResolutionMechanism<V> {
    method public int describeContents();
    method @NonNull public java.util.List<V> getMostToLeastRestrictiveValues();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.MostRestrictive<?>> CREATOR;
  }
@@ -627,14 +638,20 @@ package android.app.admin {
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.StringSetUnion> CREATOR;
    field @NonNull public static final android.app.admin.StringSetUnion STRING_SET_UNION;
  }

  public final class TopPriority<V> extends android.app.admin.ResolutionMechanism<V> {
    method public int describeContents();
    method @NonNull public java.util.List<android.app.admin.Authority> getHighestToLowestPriorityAuthorities();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.TopPriority<?>> CREATOR;
  }

  public final class UnknownAuthority extends android.app.admin.Authority {
    field @NonNull public static final android.app.admin.UnknownAuthority UNKNOWN_AUTHORITY;
  }

  public final class UnsafeStateException extends java.lang.IllegalStateException implements android.os.Parcelable {
    ctor public UnsafeStateException(int, int);
    method public int getOperation();
+154 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.app.admin;

import static android.app.admin.PolicyUpdatesReceiver.EXTRA_ACCOUNT_TYPE;
import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_BUNDLE_KEY;
import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_KEY;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.Parcel;

import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;

import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.util.Objects;

/**
 * Class used to identify a policy that relates to a certain account type
 * (e.g. {@link DevicePolicyManager#setAccountManagementDisabled}).
 *
 * @hide
 */
@SystemApi
public final class AccountTypePolicyKey extends PolicyKey {
    private static final String ATTR_ACCOUNT_TYPE = "account-type";

    private final String mAccountType;

    /**
     * @hide
     */
    public AccountTypePolicyKey(@NonNull String key, @NonNull String accountType) {
        super(key);
        mAccountType = Objects.requireNonNull((accountType));
    }

    private AccountTypePolicyKey(Parcel source) {
        super(source.readString());
        mAccountType = source.readString();
    }

    /**
     * @hide
     */
    public AccountTypePolicyKey(String key) {
        super(key);
        mAccountType = null;
    }

    /**
     * Returns the account type this policy relates to.
     */
    @NonNull
    public String getAccountType() {
        return mAccountType;
    }

    /**
     * @hide
     */
    @Override
    public void saveToXml(TypedXmlSerializer serializer) throws IOException {
        serializer.attribute(/* namespace= */ null, ATTR_POLICY_IDENTIFIER, getIdentifier());
        serializer.attribute(/* namespace= */ null, ATTR_ACCOUNT_TYPE, mAccountType);
    }

    /**
     * @hide
     */
    @Override
    public AccountTypePolicyKey readFromXml(TypedXmlPullParser parser)
            throws XmlPullParserException, IOException {
        String policyKey = parser.getAttributeValue(/* namespace= */ null,
                ATTR_POLICY_IDENTIFIER);
        String accountType = parser.getAttributeValue(/* namespace= */ null, ATTR_ACCOUNT_TYPE);
        return new AccountTypePolicyKey(policyKey, accountType);
    }

    /**
     * @hide
     */
    @Override
    public void writeToBundle(Bundle bundle) {
        bundle.putString(EXTRA_POLICY_KEY, getIdentifier());
        Bundle extraPolicyParams = new Bundle();
        extraPolicyParams.putString(EXTRA_ACCOUNT_TYPE, mAccountType);
        bundle.putBundle(EXTRA_POLICY_BUNDLE_KEY, extraPolicyParams);
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        AccountTypePolicyKey other = (AccountTypePolicyKey) o;
        return Objects.equals(getIdentifier(), other.getIdentifier())
                && Objects.equals(mAccountType, other.mAccountType);
    }

    @Override
    public int hashCode() {
        return Objects.hash(getIdentifier(), mAccountType);
    }

    @Override
    public String toString() {
        return "AccountTypePolicyKey{mPolicyKey= " + getIdentifier()
                + "; mAccountType= " + mAccountType + "}";
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString(getIdentifier());
        dest.writeString(mAccountType);
    }

    @NonNull
    public static final Creator<AccountTypePolicyKey> CREATOR =
            new Creator<AccountTypePolicyKey>() {
                @Override
                public AccountTypePolicyKey createFromParcel(Parcel source) {
                    return new AccountTypePolicyKey(source);
                }

                @Override
                public AccountTypePolicyKey[] newArray(int size) {
                    return new AccountTypePolicyKey[size];
                }
            };
}
+13 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app.admin;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.os.Parcel;

/**
@@ -31,11 +32,18 @@ import android.os.Parcel;
public final class DeviceAdminAuthority extends Authority {

    /**
     * Object representing a device admin authority.
     *
     * @hide
     */
    @TestApi
    @NonNull
    public static final DeviceAdminAuthority DEVICE_ADMIN_AUTHORITY = new DeviceAdminAuthority();

    private DeviceAdminAuthority() {}
    /**
     * Creates an authority that represents a device admin.
     */
    public DeviceAdminAuthority() {}

    @Override
    public String toString() {
@@ -44,12 +52,13 @@ public final class DeviceAdminAuthority extends Authority {

    @Override
    public boolean equals(@Nullable Object o) {
        return super.equals(o);
        if (this == o) return true;
        return o != null && getClass() == o.getClass();
    }

    @Override
    public int hashCode() {
        return super.hashCode();
        return 0;
    }

    @Override
@@ -65,7 +74,7 @@ public final class DeviceAdminAuthority extends Authority {
            new Creator<DeviceAdminAuthority>() {
                @Override
                public DeviceAdminAuthority createFromParcel(Parcel source) {
                    return new DeviceAdminAuthority();
                    return DEVICE_ADMIN_AUTHORITY;
                }

                @Override
Loading