diff options
author | Steve Kondik <steve@cyngn.com> | 2016-11-22 22:48:35 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-11-22 22:48:35 -0800 |
commit | e8aecd3a8a9de5a2c1ced7c2c42761e7293c1b84 (patch) | |
tree | 4342298cd62cd015dfb34f2a40e0244029284259 /tests | |
parent | 7f19e742c1813ae5b3ac5569f96144feb020db42 (diff) | |
download | lineage-sdk-e8aecd3a8a9de5a2c1ced7c2c42761e7293c1b84.tar.gz lineage-sdk-e8aecd3a8a9de5a2c1ced7c2c42761e7293c1b84.tar.bz2 lineage-sdk-e8aecd3a8a9de5a2c1ced7c2c42761e7293c1b84.zip |
cmsdk: Ensure CMHW feature constants aren't optimized out
* The preferences constraints system uses reflection to look up
fields via strings, we need to ensure they are not optimized
out by Proguard. Alternatively we can manually enumerate them,
but it's yet another list of constants to maintain. We should
have used a proper enumeration to begin with, but so it goes.
* The @VisibleForTesting annotation is honored by the platform for
ensuring that Proguard doesn't stomp fields. The support library
has an @Keep annotation, but it's only supported by Gradle. If
it becomes supported by the platform in the future, switch to
it instead.
* Also add tests for all of this.
Change-Id: I9f324e003e2a9de5604085b978d5f95bdd098d32
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/org/cyanogenmod/tests/hardware/CMHardwareTest.java | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/tests/src/org/cyanogenmod/tests/hardware/CMHardwareTest.java b/tests/src/org/cyanogenmod/tests/hardware/CMHardwareTest.java index a65f632c..556246e3 100644 --- a/tests/src/org/cyanogenmod/tests/hardware/CMHardwareTest.java +++ b/tests/src/org/cyanogenmod/tests/hardware/CMHardwareTest.java @@ -51,6 +51,23 @@ public class CMHardwareTest extends TestActivity { CMHardwareManager.FEATURE_PERSISTENT_STORAGE ); + private static final List<String> FEATURE_STRINGS = Arrays.asList( + "FEATURE_ADAPTIVE_BACKLIGHT", + "FEATURE_COLOR_ENHANCEMENT", + "FEATURE_DISPLAY_COLOR_CALIBRATION", + "FEATURE_DISPLAY_GAMMA_CALIBRATION", + "FEATURE_HIGH_TOUCH_SENSITIVITY", + "FEATURE_KEY_DISABLE", + "FEATURE_LONG_TERM_ORBITS", + "FEATURE_SERIAL_NUMBER", + "FEATURE_SUNLIGHT_ENHANCEMENT", + "FEATURE_TAP_TO_WAKE", + "FEATURE_TOUCH_HOVERING", + "FEATURE_AUTO_CONTRAST", + "FEATURE_DISPLAY_MODES", + "FEATURE_PERSISTENT_STORAGE" + ); + private static final List<Integer> BOOLEAN_FEATURES = Arrays.asList( CMHardwareManager.FEATURE_ADAPTIVE_BACKLIGHT, CMHardwareManager.FEATURE_COLOR_ENHANCEMENT, @@ -160,10 +177,15 @@ public class CMHardwareTest extends TestActivity { @Override protected void run() { StringBuilder builder = new StringBuilder(); + int i = 0; for (int feature : FEATURES) { + boolean supported = mHardwareManager.isSupported(feature); + if (mHardwareManager.isSupported(FEATURE_STRINGS.get(i)) != supported) { + throw new RuntimeException("Internal error, feature string lookup failed"); + } + i++; builder.append("Feature " + feature + "\n") - .append("is supported " + mHardwareManager.isSupported(feature) - + "\n"); + .append("is supported " + supported + "\n"); } Toast.makeText(CMHardwareTest.this, "Supported features " + builder.toString(), |