diff --git a/src/com/android/settings/development/compat/PlatformCompatDashboard.java b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
index fe64948..1d51f66 100644
--- a/src/com/android/settings/development/compat/PlatformCompatDashboard.java
+++ b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
@@ -149,13 +149,13 @@
         final List<CompatibilityChangeInfo> disabledChanges = new ArrayList<>();
         final Map<Integer, List<CompatibilityChangeInfo>> targetSdkChanges = new TreeMap<>();
         for (CompatibilityChangeInfo change : mChanges) {
-            if (change.getEnableAfterTargetSdk() != 0) {
+            if (change.getEnableSinceTargetSdk() != 0) {
                 List<CompatibilityChangeInfo> sdkChanges;
-                if (!targetSdkChanges.containsKey(change.getEnableAfterTargetSdk())) {
+                if (!targetSdkChanges.containsKey(change.getEnableSinceTargetSdk())) {
                     sdkChanges = new ArrayList<>();
-                    targetSdkChanges.put(change.getEnableAfterTargetSdk(), sdkChanges);
+                    targetSdkChanges.put(change.getEnableSinceTargetSdk(), sdkChanges);
                 } else {
-                    sdkChanges = targetSdkChanges.get(change.getEnableAfterTargetSdk());
+                    sdkChanges = targetSdkChanges.get(change.getEnableSinceTargetSdk());
                 }
                 sdkChanges.add(change);
             } else if (change.getDisabled()) {
diff --git a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
index e59bd0b..15e9bda 100644
--- a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
+++ b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
@@ -88,11 +88,14 @@
     public void setUp() throws RemoteException, NameNotFoundException {
         MockitoAnnotations.initMocks(this);
         mChanges = new CompatibilityChangeInfo[5];
-        mChanges[0] = new CompatibilityChangeInfo(1L, "Default_Enabled", 0, false, false, "");
-        mChanges[1] = new CompatibilityChangeInfo(2L, "Default_Disabled", 0, true, false, "");
-        mChanges[2] = new CompatibilityChangeInfo(3L, "Enabled_After_SDK_1_1", 1, false, false, "");
-        mChanges[3] = new CompatibilityChangeInfo(4L, "Enabled_After_SDK_1_2", 1, false, false, "");
-        mChanges[4] = new CompatibilityChangeInfo(5L, "Enabled_After_SDK_2", 2, false, false, "");
+        mChanges[0] = new CompatibilityChangeInfo(1L, "Default_Enabled", 0, 0, false, false, "");
+        mChanges[1] = new CompatibilityChangeInfo(2L, "Default_Disabled", 0, 0, true, false, "");
+        mChanges[2] = new CompatibilityChangeInfo(3L, "Enabled_Since_SDK_1_1", -1, 1, false, false,
+                                                  "");
+        mChanges[3] = new CompatibilityChangeInfo(4L, "Enabled_Since_SDK_1_2", -1, 1, false, false,
+                                                  "");
+        mChanges[4] = new CompatibilityChangeInfo(5L, "Enabled_Since_SDK_2", -1, 2, false, false,
+                                                  "");
         when(mPlatformCompat.listUIChanges()).thenReturn(mChanges);
         when(mPlatformCompat.getOverrideValidator()).thenReturn(mOverrideValidator);
         // By default, allow any change
@@ -204,7 +207,7 @@
         List<CompatibilityChangeInfo> changesToAdd = new ArrayList<>();
         for (int i = 0; i < mChanges.length; ++i) {
             changesToAdd.add(new CompatibilityChangeInfo(mChanges[i].getId(), mChanges[i].getName(),
-                    mChanges[i].getEnableAfterTargetSdk(), mChanges[i].getDisabled(),
+                    -1, mChanges[i].getEnableSinceTargetSdk(), mChanges[i].getDisabled(),
                     mChanges[i].getLoggingOnly(), mChanges[i].getDescription()));
         }
 
