diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index 955a400..bb67cfc 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;
 
@@ -606,39 +603,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);
