Merge "RESTRICT AUTOMERGE Do not throw exception for unknown device state policy" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
fcced23694
@@ -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,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(
|
||||
TestProvider.class.getName())),
|
||||
Matchers.instanceOf(TestProvider.class));
|
||||
assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
||||
TestProvider.class.getName())),
|
||||
instanceOf(TestProvider.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_badPolicyProvider_notImplementingProviderInterface() {
|
||||
assertThrows(IllegalStateException.class, () -> {
|
||||
DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
||||
Object.class.getName()));
|
||||
});
|
||||
assertThrows(IllegalStateException.class, () ->
|
||||
DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user