RESTRICT AUTOMERGE Do not throw exception for unknown device state policy am: c9647bfbaf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21401647 Change-Id: I65cca27352f3fea56f3f635518cd9b6c45205196 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.util.Slog;
|
||||||
|
|
||||||
import com.android.server.policy.DeviceStatePolicyImpl;
|
import com.android.server.policy.DeviceStatePolicyImpl;
|
||||||
|
|
||||||
@@ -92,11 +93,16 @@ public abstract class DeviceStatePolicy {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
return (DeviceStatePolicy.Provider) Class.forName(name).newInstance();
|
return (DeviceStatePolicy.Provider) Class.forName(name).newInstance();
|
||||||
} catch (ReflectiveOperationException | ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
throw new IllegalStateException("Couldn't instantiate class " + name
|
throw new IllegalStateException("Couldn't instantiate class " + name
|
||||||
+ " for config_deviceSpecificDeviceStatePolicyProvider:"
|
+ " for config_deviceSpecificDeviceStatePolicyProvider:"
|
||||||
+ " make sure it has a public zero-argument constructor"
|
+ " 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;
|
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.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.testng.Assert.assertThrows;
|
import static org.testng.Assert.assertThrows;
|
||||||
@@ -24,8 +26,6 @@ import android.content.Context;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
|
|
||||||
import org.hamcrest.Matchers;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,37 +39,35 @@ public class DeviceStatePolicyProviderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_emptyPolicyProvider() {
|
public void test_emptyPolicyProvider() {
|
||||||
Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")),
|
assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")),
|
||||||
Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class));
|
instanceOf(DeviceStatePolicy.DefaultProvider.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_nullPolicyProvider() {
|
public void test_nullPolicyProvider() {
|
||||||
Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)),
|
assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)),
|
||||||
Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class));
|
instanceOf(DeviceStatePolicy.DefaultProvider.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_customPolicyProvider() {
|
public void test_customPolicyProvider() {
|
||||||
Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
||||||
TestProvider.class.getName())),
|
TestProvider.class.getName())),
|
||||||
Matchers.instanceOf(TestProvider.class));
|
instanceOf(TestProvider.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_badPolicyProvider_notImplementingProviderInterface() {
|
public void test_badPolicyProvider_notImplementingProviderInterface() {
|
||||||
assertThrows(IllegalStateException.class, () -> {
|
assertThrows(IllegalStateException.class, () ->
|
||||||
DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
||||||
Object.class.getName()));
|
Object.class.getName())));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_badPolicyProvider_doesntExist() {
|
public void test_badPolicyProvider_returnsDefault() {
|
||||||
assertThrows(IllegalStateException.class, () -> {
|
assertThat(DeviceStatePolicy.Provider.fromResources(
|
||||||
DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(
|
resourcesWithProvider("com.android.devicestate.nonexistent.policy")),
|
||||||
"com.android.devicestate.nonexistent.policy"));
|
instanceOf(DeviceStatePolicy.DefaultProvider.class));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Resources resourcesWithProvider(String provider) {
|
private static Resources resourcesWithProvider(String provider) {
|
||||||
|
|||||||
Reference in New Issue
Block a user