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

Commit 89624984 authored by Nick Chameyev's avatar Nick Chameyev Committed by Automerger Merge Worker
Browse files

RESTRICT AUTOMERGE Do not throw exception for unknown device state policy am: c9647bfb

parents 2bda4a35 c9647bfb
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.content.Context;
import android.content.res.Resources;
import android.text.TextUtils;
import android.util.Slog;

import com.android.server.policy.DeviceStatePolicyImpl;

@@ -92,11 +93,16 @@ public abstract class DeviceStatePolicy {

            try {
                return (DeviceStatePolicy.Provider) Class.forName(name).newInstance();
            } catch (ReflectiveOperationException | ClassCastException e) {
            } catch (ClassCastException e) {
                throw new IllegalStateException("Couldn't instantiate class " + name
                        + " for config_deviceSpecificDeviceStatePolicyProvider:"
                        + " make sure it has a public zero-argument constructor"
                        + " and implements DeviceStatePolicy.Provider", e);
                        + " and implements DeviceStatePolicy.Provider");
            } catch (ReflectiveOperationException e) {
                Slog.e("DeviceStatePolicy", "Couldn't instantiate class " + name
                        + " for config_deviceSpecificDeviceStatePolicyProvider:"
                        + " using default provider", e);
                return new DeviceStatePolicy.DefaultProvider();
            }
        }
    }
+16 −18
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.devicestate;

import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertThrows;
@@ -24,8 +26,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.platform.test.annotations.Presubmit;

import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;

/**
@@ -39,37 +39,35 @@ public class DeviceStatePolicyProviderTest {

    @Test
    public void test_emptyPolicyProvider() {
        Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")),
                Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class));
        assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")),
                instanceOf(DeviceStatePolicy.DefaultProvider.class));
    }

    @Test
    public void test_nullPolicyProvider() {
        Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)),
                Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class));
        assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)),
                instanceOf(DeviceStatePolicy.DefaultProvider.class));
    }

    @Test
    public void test_customPolicyProvider() {
        Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
        assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
                        TestProvider.class.getName())),
                Matchers.instanceOf(TestProvider.class));
                instanceOf(TestProvider.class));
    }

    @Test
    public void test_badPolicyProvider_notImplementingProviderInterface() {
        assertThrows(IllegalStateException.class, () -> {
        assertThrows(IllegalStateException.class, () ->
                DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
                    Object.class.getName()));
        });
                        Object.class.getName())));
    }

    @Test
    public void test_badPolicyProvider_doesntExist() {
        assertThrows(IllegalStateException.class, () -> {
            DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
                    "com.android.devicestate.nonexistent.policy"));
        });
    public void test_badPolicyProvider_returnsDefault() {
        assertThat(DeviceStatePolicy.Provider.fromResources(
                        resourcesWithProvider("com.android.devicestate.nonexistent.policy")),
                instanceOf(DeviceStatePolicy.DefaultProvider.class));
    }

    private static Resources resourcesWithProvider(String provider) {