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

Commit 3370e446 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Store the device initializer componentname in addition to package."

parents b1e8e5e5 eaafdf72
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5689,6 +5689,7 @@ package android.app.admin {
    method public java.util.List<java.lang.String> getCrossProfileWidgetProviders(android.content.ComponentName);
    method public int getCurrentFailedPasswordAttempts();
    method public java.lang.String getDeviceInitializerApp();
    method public android.content.ComponentName getDeviceInitializerComponent();
    method public java.lang.String getDeviceOwner();
    method public java.util.List<byte[]> getInstalledCaCerts(android.content.ComponentName);
    method public int getKeyguardDisabledFeatures(android.content.ComponentName);
+21 −2
Original line number Diff line number Diff line
@@ -2639,8 +2639,8 @@ public class DevicePolicyManager {
     *        called by the device owner.
     * @param initializer Which {@link DeviceAdminReceiver} to make device initializer.
     * @param initializerName The user-visible name of the device initializer.
     * @return whether the package was successfully registered as the device initializer.
     * @throws IllegalArgumentException if the package name is null or invalid
     * @return whether the component was successfully registered as the device initializer.
     * @throws IllegalArgumentException if the componentname is null or invalid
     * @throws IllegalStateException if the caller is not device owner or the device has
     *         already been provisioned or a device initializer already exists.
     */
@@ -2709,6 +2709,25 @@ public class DevicePolicyManager {
        return null;
    }

    /**
     * @hide
     * Gets the device initializer component of the system.
     *
     * @return the component name of the device initializer.
     */
    @SystemApi
    public ComponentName getDeviceInitializerComponent() {
        if (mService != null) {
            try {
                return mService.getDeviceInitializerComponent();
            } catch (RemoteException re) {
                Log.w(TAG, "Failed to get device initializer");
            }
        }
        return null;
    }


    /**
     * Sets the enabled state of the user. A user should be enabled only once it is ready to
     * be used.
+1 −0
Original line number Diff line number Diff line
@@ -210,6 +210,7 @@ interface IDevicePolicyManager {
    void clearDeviceInitializer(in ComponentName who);
    boolean setDeviceInitializer(in ComponentName who, in ComponentName initializer, String initializerName);
    String getDeviceInitializer();
    ComponentName getDeviceInitializerComponent();

    void setUserIcon(in ComponentName admin, in Bitmap icon);
}
+23 −5
Original line number Diff line number Diff line
@@ -110,9 +110,9 @@ class DeviceOwner {
    /**
     * Creates an instance of the device owner object with the device initializer set.
     */
    static DeviceOwner createWithDeviceInitializer(String packageName, String ownerName) {
    static DeviceOwner createWithDeviceInitializer(ComponentName admin, String ownerName) {
        DeviceOwner owner = new DeviceOwner();
        owner.mDeviceInitializer = new OwnerInfo(ownerName, packageName);
        owner.mDeviceInitializer = new OwnerInfo(ownerName, admin);
        return owner;
    }

@@ -141,6 +141,10 @@ class DeviceOwner {
        mDeviceOwner = null;
    }

    ComponentName getDeviceInitializerComponent() {
        return mDeviceInitializer.admin;
    }

    String getDeviceInitializerPackageName() {
        return mDeviceInitializer != null ? mDeviceInitializer.packageName : null;
    }
@@ -149,8 +153,8 @@ class DeviceOwner {
        return mDeviceInitializer != null ? mDeviceInitializer.name : null;
    }

    void setDeviceInitializer(String packageName, String ownerName) {
        mDeviceInitializer = new OwnerInfo(ownerName, packageName);
    void setDeviceInitializer(ComponentName admin, String ownerName) {
        mDeviceInitializer = new OwnerInfo(ownerName, admin);
    }

    void clearDeviceInitializer() {
@@ -235,7 +239,17 @@ class DeviceOwner {
                } else if (tag.equals(TAG_DEVICE_INITIALIZER)) {
                    String name = parser.getAttributeValue(null, ATTR_NAME);
                    String packageName = parser.getAttributeValue(null, ATTR_PACKAGE);
                    String initializerComponentStr =
                            parser.getAttributeValue(null, ATTR_COMPONENT_NAME);
                    ComponentName admin =
                            ComponentName.unflattenFromString(initializerComponentStr);
                    if (admin != null) {
                        mDeviceInitializer = new OwnerInfo(name, admin);
                    } else {
                        mDeviceInitializer = new OwnerInfo(name, packageName);
                        Slog.e(TAG, "Error parsing device-owner file. Bad component name " +
                                initializerComponentStr);
                    }
                } else if (tag.equals(TAG_PROFILE_OWNER)) {
                    String profileOwnerPackageName = parser.getAttributeValue(null, ATTR_PACKAGE);
                    String profileOwnerName = parser.getAttributeValue(null, ATTR_NAME);
@@ -303,6 +317,10 @@ class DeviceOwner {
                if (mDeviceInitializer.name != null) {
                    out.attribute(null, ATTR_NAME, mDeviceInitializer.name);
                }
                if (mDeviceInitializer.admin != null) {
                    out.attribute(
                            null, ATTR_COMPONENT_NAME, mDeviceInitializer.admin.flattenToString());
                }
                out.endTag(null, TAG_DEVICE_INITIALIZER);
            }

+15 −2
Original line number Diff line number Diff line
@@ -4007,12 +4007,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            if (mDeviceOwner == null) {
                // Device owner state does not exist, create it.
                mDeviceOwner = DeviceOwner.createWithDeviceInitializer(
                        initializer.getPackageName(), ownerName);
                        initializer, ownerName);
                mDeviceOwner.writeOwnerFile();
                return true;
            } else {
                // Device owner already exists, update it.
                mDeviceOwner.setDeviceInitializer(initializer.getPackageName(), ownerName);
                mDeviceOwner.setDeviceInitializer(initializer, ownerName);
                mDeviceOwner.writeOwnerFile();
                return true;
            }
@@ -4057,6 +4057,19 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        return null;
    }

    @Override
    public ComponentName getDeviceInitializerComponent() {
        if (!mHasFeature) {
            return null;
        }
        synchronized (this) {
            if (mDeviceOwner != null && mDeviceOwner.hasDeviceInitializer()) {
                return mDeviceOwner.getDeviceInitializerComponent();
            }
        }
        return null;
    }

    @Override
    public void clearDeviceInitializer(ComponentName who) {
        if (!mHasFeature) {