diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
index 4f6e0a3..c83a470 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
@@ -92,8 +92,9 @@
     };
 
     /**
-     * A list of all features added in FroYo (API=8). Because we want to run on
-     * Eclair devices, we can't use static references to constants added later
+     * A list of all features added in FroYo (API=8) and Gingerbread (API=9). 
+     * Because we want to run on Eclair devices, 
+     * we can't use static references to constants added later
      * than Eclair. We could use Reflection, but we'd still need a list of
      * string literals (for constant names) anyway, and there's little point in
      * using Reflection to to look up a constant String value for a constant
@@ -113,6 +114,17 @@
             new Feature("android.hardware.wifi", false),
     };
 
+    public static final Feature[] ALL_GINGERBREAD_FEATURES = {
+            new Feature("android.hardware.audio.low_latency", false),
+            new Feature("android.hardware.camera.front", false),
+            new Feature("android.hardware.nfc", false),
+            new Feature("android.hardware.sensor.barometer", false),
+            new Feature("android.hardware.sensor.gyroscope", false),
+            new Feature("android.hardware.touchscreen.multitouch.jazzhand", false),
+            new Feature("android.software.sip", false),
+            new Feature("android.software.sip.voip", false),
+    };
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -147,6 +159,9 @@
         if (apiVersion >= Build.VERSION_CODES.FROYO) {
             Collections.addAll(features, ALL_FROYO_FEATURES);
         }
+        if (apiVersion >= Build.VERSION_CODES.GINGERBREAD) {
+            Collections.addAll(features, ALL_GINGERBREAD_FEATURES);
+        }
         for (Feature f : features) {
             HashMap<String, Object> row = new HashMap<String, Object>();
             listViewData.add(row);
diff --git a/apps/CtsVerifier/tests/src/com/android/cts/verifier/features/FeatureSummaryActivityTest.java b/apps/CtsVerifier/tests/src/com/android/cts/verifier/features/FeatureSummaryActivityTest.java
index ca7ced4..d05075b 100644
--- a/apps/CtsVerifier/tests/src/com/android/cts/verifier/features/FeatureSummaryActivityTest.java
+++ b/apps/CtsVerifier/tests/src/com/android/cts/verifier/features/FeatureSummaryActivityTest.java
@@ -43,6 +43,11 @@
                 actualFeatures.add(feature.name);
             }
         }
+        if (version >= Build.VERSION_CODES.GINGERBREAD) {
+            for (Feature feature : FeatureSummaryActivity.ALL_GINGERBREAD_FEATURES) {
+                actualFeatures.add(feature.name);
+            }
+        }
 
         assertEquals("Feature list needs to be updated.",
                 expectedFeatures.size(), actualFeatures.size());
