diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index b05f1a7..7404ea69 100644
--- a/tests/tests/security/src/android/security/cts/StagefrightTest.java
+++ b/tests/tests/security/src/android/security/cts/StagefrightTest.java
@@ -31,8 +31,6 @@
 import android.media.MediaCodec;
 import android.media.MediaCodecInfo;
 import android.media.MediaCodecList;
-import android.media.MediaDrm;
-import android.media.MediaDrm.MediaDrmStateException;
 import android.media.MediaExtractor;
 import android.media.MediaFormat;
 import android.media.MediaMetadataRetriever;
@@ -56,7 +54,6 @@
 import java.net.ServerSocket;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.UUID;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.ReentrantLock;
 
@@ -611,39 +608,6 @@
         doStagefrightTest(R.raw.bug_32322258);
     }
 
-    @SecurityTest(minPatchLevel = "2017-08")
-    public void testStagefright_bug_37710346() throws Exception {
-        UUID CLEARKEY_SCHEME_UUID = new UUID(0x1077efecc0b24d02L, 0xace33c1e52e2fb4bL);
-
-        String drmInitString = "0000003470737368" +
-                               "01000000" +
-                               "1077efecc0b24d02" +
-                               "ace33c1e52e2fb4b" +
-                               "10000001" +
-                               "60061e017e477e87" +
-                               "7e57d00d1ed00d1e" +
-                               "00000000";
-        int len = drmInitString.length();
-        byte[] drmInitData = new byte[len / 2];
-        for (int i = 0; i < len; i += 2) {
-            drmInitData[i / 2] = (byte) ((Character.digit(drmInitString.charAt(i), 16) << 4) +
-                Character.digit(drmInitString.charAt(i + 1), 16));
-        }
-
-        try {
-            MediaDrm drm = new MediaDrm(CLEARKEY_SCHEME_UUID);
-            byte[] sessionId;
-            String initDataType = "video/mp4";
-
-            sessionId = drm.openSession();
-            MediaDrm.KeyRequest drmRequest = drm.getKeyRequest(sessionId, drmInitData,
-                initDataType, MediaDrm.KEY_TYPE_STREAMING, null);
-        } catch (Exception e) {
-            if (!(e instanceof MediaDrmStateException))
-                fail("media drm server died");
-        }
-    }
-
     @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3873_b_23248776() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3873_b_23248776);
