Remove prefixed EME.

This removes most of the code, including from Blink and WebMediaPlayer*.
Some code that is not trivial to remove still exists. Specifically, there are
some legacy parameters in media::MediaKeys and implementations of it. Also,
although prefixed tests have been disabled, not all related paths have been
removed. In addition, there are some TODOs that will be addressed separately.

The flag to disable (unprefixed) EME is no longer useful and has been removed.

BUG=249976
TEST=Unprefixed EME tests still pass.

Review URL: https://codereview.chromium.org/1712903002

Cr-Commit-Position: refs/heads/master@{#376828}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 74f6cb6..0433cc03 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5593,18 +5593,6 @@
       <message name="IDS_FLAGS_MEDIA_SOURCE_DESCRIPTION" desc="Description for the flag for the Media Source API.">
         The MediaSource object allows JavaScript to send media data directly to a video element.
       </message>
-      <message name="IDS_FLAGS_ENCRYPTED_MEDIA_NAME" desc="Title for the flag for the Encrypted Media Extensions APIs.">
-        Encrypted Media Extensions
-      </message>
-      <message name="IDS_FLAGS_ENCRYPTED_MEDIA_DESCRIPTION" desc="Description for the flag for the Encrypted Media Extensions APIs.">
-        Encrypted Media Extensions on video and audio elements.
-      </message>
-      <message name="IDS_FLAGS_PREFIXED_ENCRYPTED_MEDIA_NAME" desc="Title for the flag for the prefixed Encrypted Media Extensions APIs (e.g. webkitGenerateKeyRequest()).">
-        Prefixed Encrypted Media Extensions
-      </message>
-      <message name="IDS_FLAGS_PREFIXED_ENCRYPTED_MEDIA_DESCRIPTION" desc="Description for the flag for the prefixed Encrypted Media Extensions APIs (e.g. webkitGenerateKeyRequest()).">
-        Deprecated version of Encrypted Media Extensions on video and audio elements.
-      </message>
       <message name="IDS_FLAGS_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK_NAME" desc="Title for the flag for gesture requiment for media playback">
         Gesture requirement for media playback
       </message>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 2a7e586f..fc6bdb5 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -700,12 +700,6 @@
     {"disable-media-source", IDS_FLAGS_MEDIA_SOURCE_NAME,
      IDS_FLAGS_MEDIA_SOURCE_DESCRIPTION, kOsAll,
      SINGLE_DISABLE_VALUE_TYPE(switches::kDisableMediaSource)},
-    {"disable-encrypted-media", IDS_FLAGS_ENCRYPTED_MEDIA_NAME,
-     IDS_FLAGS_ENCRYPTED_MEDIA_DESCRIPTION, kOsAll,
-     SINGLE_DISABLE_VALUE_TYPE(switches::kDisableEncryptedMedia)},
-    {"enable-prefixed-encrypted-media", IDS_FLAGS_PREFIXED_ENCRYPTED_MEDIA_NAME,
-     IDS_FLAGS_PREFIXED_ENCRYPTED_MEDIA_DESCRIPTION, kOsAll,
-     SINGLE_VALUE_TYPE(switches::kEnablePrefixedEncryptedMedia)},
     {"disable-javascript-harmony-shipping",
      IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_NAME,
      IDS_FLAGS_JAVASCRIPT_HARMONY_SHIPPING_DESCRIPTION, kOsAll,
diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc
index 738b6d8..21d2bb4 100644
--- a/chrome/browser/media/encrypted_media_browsertest.cc
+++ b/chrome/browser/media/encrypted_media_browsertest.cc
@@ -41,7 +41,6 @@
 
 // Available key systems.
 const char kClearKeyKeySystem[] = "org.w3.clearkey";
-const char kPrefixedClearKeyKeySystem[] = "webkit-org.w3.clearkey";
 const char kExternalClearKeyKeySystem[] = "org.chromium.externalclearkey";
 const char kExternalClearKeyFileIOTestKeySystem[] =
     "org.chromium.externalclearkey.fileiotest";
@@ -74,9 +73,7 @@
 const char kEmeUpdateFailed[] = "EME_UPDATE_FAILED";
 const char kEmeErrorEvent[] = "EME_ERROR_EVENT";
 const char kEmeMessageUnexpectedType[] = "EME_MESSAGE_UNEXPECTED_TYPE";
-const char kPrefixedEmeRenewalMissingHeader[] =
-    "PREFIXED_EME_RENEWAL_MISSING_HEADER";
-const char kPrefixedEmeErrorEvent[] = "PREFIXED_EME_ERROR_EVENT";
+const char kEmeRenewalMissingHeader[] = "EME_RENEWAL_MISSING_HEADER";
 
 const char kDefaultEmePlayer[] = "eme_player.html";
 
@@ -86,12 +83,6 @@
   MSE
 };
 
-// Whether to use prefixed or unprefixed EME.
-enum EmeVersion {
-  PREFIXED,
-  UNPREFIXED
-};
-
 // Whether the video should be played once or twice.
 enum class PlayTwice { NO, YES };
 
@@ -159,7 +150,6 @@
                              const std::string& media_type,
                              const std::string& key_system,
                              SrcType src_type,
-                             EmeVersion eme_version,
                              const std::string& session_to_load,
                              bool force_invalid_response,
                              PlayTwice play_twice,
@@ -174,8 +164,6 @@
     query_params.push_back(std::make_pair("keySystem", key_system));
     if (src_type == MSE)
       query_params.push_back(std::make_pair("useMSE", "1"));
-    if (eme_version == PREFIXED)
-      query_params.push_back(std::make_pair("usePrefixedEME", "1"));
     if (force_invalid_response)
       query_params.push_back(std::make_pair("forceInvalidResponse", "1"));
     if (!session_to_load.empty())
@@ -189,18 +177,15 @@
   void RunSimpleEncryptedMediaTest(const std::string& media_file,
                                    const std::string& media_type,
                                    const std::string& key_system,
-                                   SrcType src_type,
-                                   EmeVersion eme_version) {
+                                   SrcType src_type) {
     std::string expected_title = kEnded;
     if (!IsPlayBackPossible(key_system)) {
-      expected_title = (eme_version == EmeVersion::UNPREFIXED)
-                           ? kEmeUpdateFailed
-                           : kPrefixedEmeErrorEvent;
+      expected_title = kEmeUpdateFailed;
     }
 
     RunEncryptedMediaTest(kDefaultEmePlayer, media_file, media_type, key_system,
-                          src_type, eme_version, kNoSessionToLoad, false,
-                          PlayTwice::NO, expected_title);
+                          src_type, kNoSessionToLoad, false, PlayTwice::NO,
+                          expected_title);
     // Check KeyMessage received for all key systems.
     bool receivedKeyMessage = false;
     EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
@@ -260,15 +245,12 @@
     title_watcher->AlsoWaitForTitle(
         base::ASCIIToUTF16(kEmeMessageUnexpectedType));
     title_watcher->AlsoWaitForTitle(
-        base::ASCIIToUTF16(kPrefixedEmeRenewalMissingHeader));
-    title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kPrefixedEmeErrorEvent));
+        base::ASCIIToUTF16(kEmeRenewalMissingHeader));
   }
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
     command_line->AppendSwitch(
         switches::kDisableGestureRequirementForMediaPlayback);
-    // For simplicity with respect to parameterized tests, enable for all tests.
-    command_line->AppendSwitch(switches::kEnablePrefixedEncryptedMedia);
   }
 
   void SetUpCommandLineForKeySystem(const std::string& key_system,
@@ -344,46 +326,16 @@
                             const std::string& expected_title) {
     // Since we do not test playback, arbitrarily choose a test file and source
     // type.
-    RunEncryptedMediaTest(
-        kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly, key_system, SRC,
-        UNPREFIXED, kNoSessionToLoad, false, PlayTwice::NO, expected_title);
+    RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm",
+                          kWebMAudioOnly, key_system, SRC, kNoSessionToLoad,
+                          false, PlayTwice::NO, expected_title);
   }
 
   void TestPlaybackCase(const std::string& session_to_load,
                         const std::string& expected_title) {
     RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-v_enc-v.webm",
                           kWebMVideoOnly, kExternalClearKeyKeySystem, SRC,
-                          UNPREFIXED, session_to_load, false, PlayTwice::NO,
-                          expected_title);
-  }
-
- protected:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    EncryptedMediaTestBase::SetUpCommandLine(command_line);
-    SetUpCommandLineForKeySystem(kExternalClearKeyKeySystem, command_line);
-  }
-};
-
-// Tests encrypted media playback using ExternalClearKey key system in
-// decrypt-and-decode mode for prefixed EME.
-class ECKPrefixedEncryptedMediaTest : public EncryptedMediaTestBase {
- public:
-  // We use special |key_system| names to do non-playback related tests, e.g.
-  // kExternalClearKeyFileIOTestKeySystem is used to test file IO.
-  void TestNonPlaybackCases(const std::string& key_system,
-                            const std::string& expected_title) {
-    // Since we do not test playback, arbitrarily choose a test file and source
-    // type.
-    RunEncryptedMediaTest(
-        kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly, key_system, SRC,
-        PREFIXED, kNoSessionToLoad, false, PlayTwice::NO, expected_title);
-  }
-
-  void TestPlaybackCase(const std::string& session_to_load,
-                        const std::string& expected_title) {
-    RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-v_enc-v.webm",
-                          kWebMVideoOnly, kExternalClearKeyKeySystem, SRC,
-                          PREFIXED, session_to_load, false, PlayTwice::NO,
+                          session_to_load, false, PlayTwice::NO,
                           expected_title);
   }
 
@@ -410,15 +362,13 @@
 // Tests encrypted media playback with a combination of parameters:
 // - char*: Key system name.
 // - SrcType: Use MSE or SRC.
-// - EmeVersion: Use PREFIXED or UNPREFIXED EME.
 //
 // Note: Only parameterized (*_P) tests can be used. Non-parameterized (*_F)
 // tests will crash at GetParam(). To add non-parameterized tests, use
 // EncryptedMediaTestBase or one of its subclasses (e.g. WVEncryptedMediaTest).
-class EncryptedMediaTest
-    : public EncryptedMediaTestBase,
-      public testing::WithParamInterface<
-          std::tr1::tuple<const char*, SrcType, EmeVersion> > {
+class EncryptedMediaTest : public EncryptedMediaTestBase,
+                           public testing::WithParamInterface<
+                               std::tr1::tuple<const char*, SrcType>> {
  public:
   std::string CurrentKeySystem() {
     return std::tr1::get<0>(GetParam());
@@ -428,17 +378,10 @@
     return std::tr1::get<1>(GetParam());
   }
 
-  EmeVersion CurrentEmeVersion() {
-    return std::tr1::get<2>(GetParam());
-  }
-
   void TestSimplePlayback(const std::string& encrypted_media,
                           const std::string& media_type) {
-    RunSimpleEncryptedMediaTest(encrypted_media,
-                                media_type,
-                                CurrentKeySystem(),
-                                CurrentSourceType(),
-                                CurrentEmeVersion());
+    RunSimpleEncryptedMediaTest(encrypted_media, media_type, CurrentKeySystem(),
+                                CurrentSourceType());
   }
 
   void TestMultiplePlayback(const std::string& encrypted_media,
@@ -446,26 +389,21 @@
     DCHECK(IsPlayBackPossible(CurrentKeySystem()));
     RunEncryptedMediaTest(kDefaultEmePlayer, encrypted_media, media_type,
                           CurrentKeySystem(), CurrentSourceType(),
-                          CurrentEmeVersion(), kNoSessionToLoad, false,
-                          PlayTwice::YES, kEnded);
+                          kNoSessionToLoad, false, PlayTwice::YES, kEnded);
   }
 
   void RunInvalidResponseTest() {
-    std::string expected_response =
-        (CurrentEmeVersion() == EmeVersion::UNPREFIXED)
-            ? kEmeUpdateFailed
-            : kPrefixedEmeErrorEvent;
-    RunEncryptedMediaTest(
-        kDefaultEmePlayer, "bear-320x240-av_enc-av.webm", kWebMAudioVideo,
-        CurrentKeySystem(), CurrentSourceType(), CurrentEmeVersion(),
-        kNoSessionToLoad, true, PlayTwice::NO, expected_response);
+    RunEncryptedMediaTest(kDefaultEmePlayer, "bear-320x240-av_enc-av.webm",
+                          kWebMAudioVideo, CurrentKeySystem(),
+                          CurrentSourceType(), kNoSessionToLoad, true,
+                          PlayTwice::NO, kEmeUpdateFailed);
   }
 
   void TestFrameSizeChange() {
-    RunEncryptedMediaTest(
-        "encrypted_frame_size_change.html", "frame_size_change-av_enc-v.webm",
-        kWebMAudioVideo, CurrentKeySystem(), CurrentSourceType(),
-        CurrentEmeVersion(), kNoSessionToLoad, false, PlayTwice::NO, kEnded);
+    RunEncryptedMediaTest("encrypted_frame_size_change.html",
+                          "frame_size_change-av_enc-v.webm", kWebMAudioVideo,
+                          CurrentKeySystem(), CurrentSourceType(),
+                          kNoSessionToLoad, false, PlayTwice::NO, kEnded);
   }
 
   void TestConfigChange() {
@@ -473,8 +411,6 @@
     base::StringPairs query_params;
     query_params.push_back(std::make_pair("keySystem", CurrentKeySystem()));
     query_params.push_back(std::make_pair("runEncrypted", "1"));
-    if (CurrentEmeVersion() == PREFIXED)
-      query_params.push_back(std::make_pair("usePrefixedEME", "1"));
     RunEncryptedMediaTestPage("mse_config_change.html",
                               CurrentKeySystem(),
                               query_params,
@@ -499,7 +435,6 @@
   void TestDifferentContainers(EncryptedContainer video_format,
                                EncryptedContainer audio_format) {
     DCHECK(IsMSESupported());
-    DCHECK_NE(CurrentEmeVersion(), PREFIXED);
     base::StringPairs query_params;
     query_params.push_back(std::make_pair("keySystem", CurrentKeySystem()));
     query_params.push_back(std::make_pair("runEncrypted", "1"));
@@ -522,93 +457,42 @@
 using ::testing::Values;
 
 #if !defined(OS_ANDROID)
-INSTANTIATE_TEST_CASE_P(SRC_ClearKey_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kPrefixedClearKeyKeySystem),
-                                Values(SRC),
-                                Values(PREFIXED)));
-
 INSTANTIATE_TEST_CASE_P(SRC_ClearKey,
                         EncryptedMediaTest,
-                        Combine(Values(kClearKeyKeySystem),
-                                Values(SRC),
-                                Values(UNPREFIXED)));
+                        Combine(Values(kClearKeyKeySystem), Values(SRC)));
 #endif  // !defined(OS_ANDROID)
 
-INSTANTIATE_TEST_CASE_P(MSE_ClearKey_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kPrefixedClearKeyKeySystem),
-                                Values(MSE),
-                                Values(PREFIXED)));
 INSTANTIATE_TEST_CASE_P(MSE_ClearKey,
                         EncryptedMediaTest,
-                        Combine(Values(kClearKeyKeySystem),
-                                Values(MSE),
-                                Values(UNPREFIXED)));
+                        Combine(Values(kClearKeyKeySystem), Values(MSE)));
 
 // External Clear Key is currently only used on platforms that use Pepper CDMs.
 #if defined(ENABLE_PEPPER_CDMS)
-INSTANTIATE_TEST_CASE_P(SRC_ExternalClearKey_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kExternalClearKeyKeySystem),
-                                Values(SRC),
-                                Values(PREFIXED)));
 INSTANTIATE_TEST_CASE_P(SRC_ExternalClearKey,
                         EncryptedMediaTest,
                         Combine(Values(kExternalClearKeyKeySystem),
-                                Values(SRC),
-                                Values(UNPREFIXED)));
+                                Values(SRC)));
 
-INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKey_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kExternalClearKeyKeySystem),
-                                Values(MSE),
-                                Values(PREFIXED)));
 INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKey,
                         EncryptedMediaTest,
                         Combine(Values(kExternalClearKeyKeySystem),
-                                Values(MSE),
-                                Values(UNPREFIXED)));
+                                Values(MSE)));
 
 const char kExternalClearKeyDecryptOnlyKeySystem[] =
     "org.chromium.externalclearkey.decryptonly";
 
 // To reduce test time, only run ExternalClearKeyDecryptOnly with MSE.
-INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKeyDecryptOnly_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kExternalClearKeyDecryptOnlyKeySystem),
-                                Values(MSE),
-                                Values(PREFIXED)));
 INSTANTIATE_TEST_CASE_P(MSE_ExternalClearKeyDecryptOnly,
                         EncryptedMediaTest,
                         Combine(Values(kExternalClearKeyDecryptOnlyKeySystem),
-                                Values(MSE),
-                                Values(UNPREFIXED)));
+                                Values(MSE)));
 #endif  // defined(ENABLE_PEPPER_CDMS)
 
 #if defined(WIDEVINE_CDM_AVAILABLE)
-
-// Prefixed Widevine tests fail in Chrome OS official builds due to the request
-// for permissions. Since prefixed EME is deprecated and will be removed soon,
-// don't run these tests. http://crbug.com/430711
-#if !(defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD))
-
-// This test doesn't fully test playback with Widevine. So we only run Widevine
-// test with MSE (no SRC) to reduce test time. Also, on Android EME only works
-// with MSE and we cannot run this test with SRC.
-INSTANTIATE_TEST_CASE_P(MSE_Widevine_Prefixed,
-                        EncryptedMediaTest,
-                        Combine(Values(kWidevineKeySystem),
-                                Values(MSE),
-                                Values(PREFIXED)));
-#endif  // !(defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD))
-
 #if !defined(OS_CHROMEOS)
 INSTANTIATE_TEST_CASE_P(MSE_Widevine,
                         EncryptedMediaTest,
-                        Combine(Values(kWidevineKeySystem),
-                                Values(MSE),
-                                Values(UNPREFIXED)));
+                        Combine(Values(kWidevineKeySystem), Values(MSE)));
 #endif  // !defined(OS_CHROMEOS)
 #endif  // defined(WIDEVINE_CDM_AVAILABLE)
 
@@ -711,10 +595,6 @@
     DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
     return;
   }
-  if (CurrentEmeVersion() != UNPREFIXED) {
-    DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
-    return;
-  }
   if (!IsPlayBackPossible(CurrentKeySystem())) {
     DVLOG(0) << "Skipping test - Test requires video playback.";
     return;
@@ -730,10 +610,6 @@
     DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
     return;
   }
-  if (CurrentEmeVersion() != UNPREFIXED) {
-    DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
-    return;
-  }
   if (!IsPlayBackPossible(CurrentKeySystem())) {
     DVLOG(0) << "Skipping test - Test requires video playback.";
     return;
@@ -749,10 +625,6 @@
     DVLOG(0) << "Skipping test; Can only play MP4 encrypted streams by MSE.";
     return;
   }
-  if (CurrentEmeVersion() != UNPREFIXED) {
-    DVLOG(0) << "Skipping test; Only supported by unprefixed EME";
-    return;
-  }
   if (!IsPlayBackPossible(CurrentKeySystem())) {
     DVLOG(0) << "Skipping test - Test requires video playback.";
     return;
@@ -763,18 +635,11 @@
 #endif  // defined(USE_PROPRIETARY_CODECS)
 
 #if defined(WIDEVINE_CDM_AVAILABLE)
-// The parent key system cannot be used in generateKeyRequest.
-IN_PROC_BROWSER_TEST_F(WVEncryptedMediaTest, ParentThrowsException_Prefixed) {
-  RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly,
-                        "com.widevine", MSE, PREFIXED, kNoSessionToLoad, false,
-                        PlayTwice::NO, kEmeNotSupportedError);
-}
-
 // The parent key system cannot be used when creating MediaKeys.
 IN_PROC_BROWSER_TEST_F(WVEncryptedMediaTest, ParentThrowsException) {
   RunEncryptedMediaTest(kDefaultEmePlayer, "bear-a_enc-a.webm", kWebMAudioOnly,
-                        "com.widevine", MSE, UNPREFIXED, kNoSessionToLoad,
-                        false, PlayTwice::NO, kEmeNotSupportedError);
+                        "com.widevine", MSE, kNoSessionToLoad, false,
+                        PlayTwice::NO, kEmeNotSupportedError);
 }
 #endif  // defined(WIDEVINE_CDM_AVAILABLE)
 
@@ -813,39 +678,4 @@
   TestPlaybackCase(kUnknownSession, kEmeSessionNotFound);
 }
 
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, InitializeCDMFail) {
-  TestNonPlaybackCases(kExternalClearKeyInitializeFailKeySystem,
-                       kPrefixedEmeErrorEvent);
-}
-
-// When CDM crashes, we should still get a decode error.
-// crbug.com/386657
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest,
-                       DISABLED_CDMCrashDuringDecode) {
-  IgnorePluginCrash();
-  TestNonPlaybackCases(kExternalClearKeyCrashKeySystem, kError);
-}
-
-// Testing that the media browser test does fail on plugin crash.
-// crbug.com/386657
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest,
-                       DISABLED_CDMExpectedCrash) {
-  // Plugin crash is not ignored by default, the test is expected to fail.
-  EXPECT_NONFATAL_FAILURE(
-      TestNonPlaybackCases(kExternalClearKeyCrashKeySystem, kError),
-      "plugin crash");
-}
-
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, FileIOTest) {
-  TestNonPlaybackCases(kExternalClearKeyFileIOTestKeySystem,
-                       kFileIOTestSuccess);
-}
-
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, LoadLoadableSession) {
-  TestPlaybackCase(kLoadableSession, kEnded);
-}
-
-IN_PROC_BROWSER_TEST_F(ECKPrefixedEncryptedMediaTest, LoadUnknownSession) {
-  TestPlaybackCase(kUnknownSession, kPrefixedEmeErrorEvent);
-}
 #endif  // defined(ENABLE_PEPPER_CDMS)
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index b9fed49..3bdd973 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -33,7 +33,6 @@
 #if defined(OS_ANDROID)
   // EME implementation needs Android MediaCodec API.
   if (!media::MediaCodecUtil::IsMediaCodecAvailable()) {
-    WebRuntimeFeatures::enablePrefixedEncryptedMedia(false);
     WebRuntimeFeatures::enableEncryptedMedia(false);
   }
 
@@ -104,12 +103,6 @@
   if (command_line.HasSwitch(switches::kDisableSpeechAPI))
     WebRuntimeFeatures::enableScriptedSpeech(false);
 
-  if (command_line.HasSwitch(switches::kDisableEncryptedMedia))
-    WebRuntimeFeatures::enableEncryptedMedia(false);
-
-  if (command_line.HasSwitch(switches::kEnablePrefixedEncryptedMedia))
-    WebRuntimeFeatures::enablePrefixedEncryptedMedia(true);
-
   if (command_line.HasSwitch(switches::kDisableFileSystem))
     WebRuntimeFeatures::enableFileSystem(false);
 
diff --git a/content/child/simple_webmimeregistry_impl.cc b/content/child/simple_webmimeregistry_impl.cc
index 9b83704..b2cfd2e7 100644
--- a/content/child/simple_webmimeregistry_impl.cc
+++ b/content/child/simple_webmimeregistry_impl.cc
@@ -63,8 +63,7 @@
 // see TestShellWebMimeRegistryImpl.
 WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMediaMIMEType(
     const WebString& mime_type,
-    const WebString& codecs,
-    const WebString& key_system) {
+    const WebString& codecs) {
   // Media features are only supported at the content/renderer/ layer.
   return IsNotSupported;
 }
diff --git a/content/child/simple_webmimeregistry_impl.h b/content/child/simple_webmimeregistry_impl.h
index 17ca37aa..30a1fb7 100644
--- a/content/child/simple_webmimeregistry_impl.h
+++ b/content/child/simple_webmimeregistry_impl.h
@@ -34,7 +34,6 @@
       const blink::WebString&) override;
   blink::WebMimeRegistry::SupportsType supportsMediaMIMEType(
       const blink::WebString&,
-      const blink::WebString&,
       const blink::WebString&) override;
   bool supportsMediaSourceMIMEType(const blink::WebString&,
                                    const blink::WebString&) override;
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
index 9a22a37..83508ce2 100644
--- a/content/renderer/media/android/webmediaplayer_android.cc
+++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -26,8 +26,6 @@
 #include "content/public/renderer/render_frame.h"
 #include "content/renderer/media/android/renderer_demuxer_android.h"
 #include "content/renderer/media/android/renderer_media_player_manager.h"
-#include "content/renderer/media/cdm/render_cdm_factory.h"
-#include "content/renderer/media/cdm/renderer_cdm_manager.h"
 #include "content/renderer/render_frame_impl.h"
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/render_view_impl.h"
@@ -180,7 +178,6 @@
     blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
     base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
     RendererMediaPlayerManager* player_manager,
-    media::CdmFactory* cdm_factory,
     scoped_refptr<StreamTextureFactory> factory,
     int frame_id,
     bool enable_texture_copy,
@@ -198,8 +195,6 @@
       seeking_(false),
       did_loading_progress_(false),
       player_manager_(player_manager),
-      cdm_factory_(cdm_factory),
-      media_permission_(params.media_permission()),
       network_state_(WebMediaPlayer::NetworkStateEmpty),
       ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
       texture_id_(0),
@@ -219,7 +214,6 @@
       player_type_(MEDIA_PLAYER_TYPE_URL),
       is_remote_(false),
       media_log_(params.media_log()),
-      init_data_type_(media::EmeInitDataType::UNKNOWN),
       cdm_context_(nullptr),
       allow_stored_credentials_(false),
       is_local_resource_(false),
@@ -232,7 +226,6 @@
       volume_multiplier_(1.0),
       weak_factory_(this) {
   DCHECK(player_manager_);
-  DCHECK(cdm_factory_);
 
   DCHECK(main_thread_checker_.CalledOnValidThread());
   stream_texture_factory_->AddObserver(this);
@@ -1439,237 +1432,6 @@
 }
 #endif
 
-// The following EME related code is copied from WebMediaPlayerImpl.
-// TODO(xhwang): Remove duplicate code between WebMediaPlayerAndroid and
-// WebMediaPlayerImpl.
-
-// Convert a WebString to ASCII, falling back on an empty string in the case
-// of a non-ASCII string.
-static std::string ToASCIIOrEmpty(const blink::WebString& string) {
-  return base::IsStringASCII(string)
-      ? base::UTF16ToASCII(base::StringPiece16(string))
-      : std::string();
-}
-
-// Helper functions to report media EME related stats to UMA. They follow the
-// convention of more commonly used macros UMA_HISTOGRAM_ENUMERATION and
-// UMA_HISTOGRAM_COUNTS. The reason that we cannot use those macros directly is
-// that UMA_* macros require the names to be constant throughout the process'
-// lifetime.
-
-static void EmeUMAHistogramEnumeration(const std::string& key_system,
-                                       const std::string& method,
-                                       int sample,
-                                       int boundary_value) {
-  base::LinearHistogram::FactoryGet(
-      kMediaEme + media::GetKeySystemNameForUMA(key_system) + "." + method,
-      1, boundary_value, boundary_value + 1,
-      base::Histogram::kUmaTargetedHistogramFlag)->Add(sample);
-}
-
-static void EmeUMAHistogramCounts(const std::string& key_system,
-                                  const std::string& method,
-                                  int sample) {
-  // Use the same parameters as UMA_HISTOGRAM_COUNTS.
-  base::Histogram::FactoryGet(
-      kMediaEme + media::GetKeySystemNameForUMA(key_system) + "." + method,
-      1, 1000000, 50, base::Histogram::kUmaTargetedHistogramFlag)->Add(sample);
-}
-
-// Helper enum for reporting generateKeyRequest/addKey histograms.
-enum MediaKeyException {
-  kUnknownResultId,
-  kSuccess,
-  kKeySystemNotSupported,
-  kInvalidPlayerState,
-  kMaxMediaKeyException
-};
-
-static MediaKeyException MediaKeyExceptionForUMA(
-    WebMediaPlayer::MediaKeyException e) {
-  switch (e) {
-    case WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported:
-      return kKeySystemNotSupported;
-    case WebMediaPlayer::MediaKeyExceptionInvalidPlayerState:
-      return kInvalidPlayerState;
-    case WebMediaPlayer::MediaKeyExceptionNoError:
-      return kSuccess;
-    default:
-      return kUnknownResultId;
-  }
-}
-
-// Helper for converting |key_system| name and exception |e| to a pair of enum
-// values from above, for reporting to UMA.
-static void ReportMediaKeyExceptionToUMA(const std::string& method,
-                                         const std::string& key_system,
-                                         WebMediaPlayer::MediaKeyException e) {
-  MediaKeyException result_id = MediaKeyExceptionForUMA(e);
-  DCHECK_NE(result_id, kUnknownResultId) << e;
-  EmeUMAHistogramEnumeration(
-      key_system, method, result_id, kMaxMediaKeyException);
-}
-
-bool WebMediaPlayerAndroid::IsKeySystemSupported(
-    const std::string& key_system) {
-  // On Android, EME only works with MSE.
-  return player_type_ == MEDIA_PLAYER_TYPE_MEDIA_SOURCE &&
-         media::PrefixedIsSupportedConcreteKeySystem(key_system);
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerAndroid::generateKeyRequest(
-    const WebString& key_system,
-    const unsigned char* init_data,
-    unsigned init_data_length) {
-  DVLOG(1) << "generateKeyRequest: " << base::string16(key_system) << ": "
-           << std::string(reinterpret_cast<const char*>(init_data),
-                          static_cast<size_t>(init_data_length));
-
-  std::string ascii_key_system =
-      media::GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-
-  WebMediaPlayer::MediaKeyException e =
-      GenerateKeyRequestInternal(ascii_key_system, init_data, init_data_length);
-  ReportMediaKeyExceptionToUMA("generateKeyRequest", ascii_key_system, e);
-  return e;
-}
-
-// Guess the type of |init_data|. This is only used to handle some corner cases
-// so we keep it as simple as possible without breaking major use cases.
-static media::EmeInitDataType GuessInitDataType(const unsigned char* init_data,
-                                                unsigned init_data_length) {
-  // Most WebM files use KeyId of 16 bytes. CENC init data is always >16 bytes.
-  if (init_data_length == 16)
-    return media::EmeInitDataType::WEBM;
-
-  return media::EmeInitDataType::CENC;
-}
-
-// TODO(xhwang): Report an error when there is encrypted stream but EME is
-// not enabled. Currently the player just doesn't start and waits for
-// ever.
-WebMediaPlayer::MediaKeyException
-WebMediaPlayerAndroid::GenerateKeyRequestInternal(
-    const std::string& key_system,
-    const unsigned char* init_data,
-    unsigned init_data_length) {
-  if (!IsKeySystemSupported(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  if (!proxy_decryptor_) {
-    DCHECK(current_key_system_.empty());
-    proxy_decryptor_.reset(new media::ProxyDecryptor(
-        media_permission_,
-        player_manager_->ShouldUseVideoOverlayForEmbeddedEncryptedVideo(),
-        base::Bind(&WebMediaPlayerAndroid::OnKeyAdded,
-                   weak_factory_.GetWeakPtr()),
-        base::Bind(&WebMediaPlayerAndroid::OnKeyError,
-                   weak_factory_.GetWeakPtr()),
-        base::Bind(&WebMediaPlayerAndroid::OnKeyMessage,
-                   weak_factory_.GetWeakPtr())));
-
-    GURL security_origin(
-        blink::WebStringToGURL(frame_->document().securityOrigin().toString()));
-    proxy_decryptor_->CreateCdm(
-        cdm_factory_, key_system, security_origin,
-        base::Bind(&WebMediaPlayerAndroid::OnCdmContextReady,
-                   weak_factory_.GetWeakPtr()));
-    current_key_system_ = key_system;
-  }
-
-  // We do not support run-time switching between key systems for now.
-  DCHECK(!current_key_system_.empty());
-  if (key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  media::EmeInitDataType init_data_type = init_data_type_;
-  if (init_data_type == media::EmeInitDataType::UNKNOWN)
-    init_data_type = GuessInitDataType(init_data, init_data_length);
-
-  proxy_decryptor_->GenerateKeyRequest(init_data_type, init_data,
-                                       init_data_length);
-
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerAndroid::addKey(
-    const WebString& key_system,
-    const unsigned char* key,
-    unsigned key_length,
-    const unsigned char* init_data,
-    unsigned init_data_length,
-    const WebString& session_id) {
-  DVLOG(1) << "addKey: " << base::string16(key_system) << ": "
-           << std::string(reinterpret_cast<const char*>(key),
-                          static_cast<size_t>(key_length)) << ", "
-           << std::string(reinterpret_cast<const char*>(init_data),
-                          static_cast<size_t>(init_data_length)) << " ["
-           << base::string16(session_id) << "]";
-
-  std::string ascii_key_system =
-      media::GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-  std::string ascii_session_id = ToASCIIOrEmpty(session_id);
-
-  WebMediaPlayer::MediaKeyException e = AddKeyInternal(ascii_key_system,
-                                                       key,
-                                                       key_length,
-                                                       init_data,
-                                                       init_data_length,
-                                                       ascii_session_id);
-  ReportMediaKeyExceptionToUMA("addKey", ascii_key_system, e);
-  return e;
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerAndroid::AddKeyInternal(
-    const std::string& key_system,
-    const unsigned char* key,
-    unsigned key_length,
-    const unsigned char* init_data,
-    unsigned init_data_length,
-    const std::string& session_id) {
-  DCHECK(key);
-  DCHECK_GT(key_length, 0u);
-
-  if (!IsKeySystemSupported(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  if (current_key_system_.empty() || key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  proxy_decryptor_->AddKey(
-      key, key_length, init_data, init_data_length, session_id);
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerAndroid::cancelKeyRequest(
-    const WebString& key_system,
-    const WebString& session_id) {
-  DVLOG(1) << "cancelKeyRequest: " << base::string16(key_system) << ": "
-           << " [" << base::string16(session_id) << "]";
-
-  std::string ascii_key_system =
-      media::GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-  std::string ascii_session_id = ToASCIIOrEmpty(session_id);
-
-  WebMediaPlayer::MediaKeyException e =
-      CancelKeyRequestInternal(ascii_key_system, ascii_session_id);
-  ReportMediaKeyExceptionToUMA("cancelKeyRequest", ascii_key_system, e);
-  return e;
-}
-
-WebMediaPlayer::MediaKeyException
-WebMediaPlayerAndroid::CancelKeyRequestInternal(const std::string& key_system,
-                                                const std::string& session_id) {
-  if (!IsKeySystemSupported(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  if (current_key_system_.empty() || key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  proxy_decryptor_->CancelKeyRequest(session_id);
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
 void WebMediaPlayerAndroid::setContentDecryptionModule(
     blink::WebContentDecryptionModule* cdm,
     blink::WebContentDecryptionModuleResult result) {
@@ -1712,47 +1474,6 @@
       "Unable to set MediaKeys object");
 }
 
-void WebMediaPlayerAndroid::OnKeyAdded(const std::string& session_id) {
-  EmeUMAHistogramCounts(current_key_system_, "KeyAdded", 1);
-
-  encrypted_client_->keyAdded(
-      WebString::fromUTF8(media::GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id));
-}
-
-void WebMediaPlayerAndroid::OnKeyError(const std::string& session_id,
-                                       media::MediaKeys::KeyError error_code,
-                                       uint32_t system_code) {
-  EmeUMAHistogramEnumeration(current_key_system_, "KeyError",
-                             error_code, media::MediaKeys::kMaxKeyError);
-
-  unsigned short short_system_code = 0;
-  if (system_code > std::numeric_limits<unsigned short>::max()) {
-    LOG(WARNING) << "system_code exceeds unsigned short limit.";
-    short_system_code = std::numeric_limits<unsigned short>::max();
-  } else {
-    short_system_code = static_cast<unsigned short>(system_code);
-  }
-
-  encrypted_client_->keyError(
-      WebString::fromUTF8(media::GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id),
-      static_cast<blink::WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode>(
-          error_code),
-      short_system_code);
-}
-
-void WebMediaPlayerAndroid::OnKeyMessage(const std::string& session_id,
-                                         const std::vector<uint8_t>& message,
-                                         const GURL& destination_url) {
-  DCHECK(destination_url.is_empty() || destination_url.is_valid());
-
-  encrypted_client_->keyMessage(
-      WebString::fromUTF8(media::GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id), message.empty() ? NULL : &message[0],
-      message.size(), destination_url);
-}
-
 void WebMediaPlayerAndroid::OnMediaSourceOpened(
     blink::WebMediaSource* web_media_source) {
   client_->mediaSourceOpened(web_media_source);
@@ -1763,20 +1484,15 @@
     const std::vector<uint8_t>& init_data) {
   DCHECK(main_thread_checker_.CalledOnValidThread());
 
-  // Do not fire NeedKey event if encrypted media is not enabled.
-  if (!blink::WebRuntimeFeatures::isPrefixedEncryptedMediaEnabled() &&
-      !blink::WebRuntimeFeatures::isEncryptedMediaEnabled()) {
+  // Do not fire the "encrypted" event if Encrypted Media is not enabled.
+  // EME may not be enabled on Android Jelly Bean.
+  if (!blink::WebRuntimeFeatures::isEncryptedMediaEnabled()) {
     return;
   }
 
   UMA_HISTOGRAM_COUNTS(kMediaEme + std::string("NeedKey"), 1);
 
   DCHECK(init_data_type != media::EmeInitDataType::UNKNOWN);
-  DLOG_IF(WARNING, init_data_type_ != media::EmeInitDataType::UNKNOWN &&
-                       init_data_type != init_data_type_)
-      << "Mixed init data type not supported. The new type is ignored.";
-  if (init_data_type_ == media::EmeInitDataType::UNKNOWN)
-    init_data_type_ = init_data_type;
 
   encrypted_client_->encrypted(ConvertToWebInitDataType(init_data_type),
                                init_data.data(), init_data.size());
diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h
index 253b7f1..5b9eff8c 100644
--- a/content/renderer/media/android/webmediaplayer_android.h
+++ b/content/renderer/media/android/webmediaplayer_android.h
@@ -30,7 +30,6 @@
 #include "media/base/time_delta_interpolator.h"
 #include "media/blink/webmediaplayer_delegate.h"
 #include "media/blink/webmediaplayer_params.h"
-#include "media/cdm/proxy_decryptor.h"
 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
 #include "third_party/WebKit/public/platform/WebMediaPlayer.h"
 #include "third_party/WebKit/public/platform/WebSetSinkIdCallbacks.h"
@@ -62,15 +61,12 @@
 
 namespace media {
 class CdmContext;
-class CdmFactory;
 class MediaLog;
-class MediaPermission;
 class WebContentDecryptionModuleImpl;
 }
 
 namespace content {
 
-class RendererCdmManager;
 class RendererMediaPlayerManager;
 
 // This class implements blink::WebMediaPlayer by keeping the android
@@ -96,7 +92,6 @@
       blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
       base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
       RendererMediaPlayerManager* player_manager,
-      media::CdmFactory* cdm_factory,
       scoped_refptr<StreamTextureFactory> factory,
       int frame_id,
       bool enable_texture_copy,
@@ -235,31 +230,10 @@
   const gfx::RectF GetBoundaryRectangle() override;
 #endif  // defined(VIDEO_HOLE)
 
-  MediaKeyException generateKeyRequest(const blink::WebString& key_system,
-                                       const unsigned char* init_data,
-                                       unsigned init_data_length) override;
-  MediaKeyException addKey(const blink::WebString& key_system,
-                           const unsigned char* key,
-                           unsigned key_length,
-                           const unsigned char* init_data,
-                           unsigned init_data_length,
-                           const blink::WebString& session_id) override;
-  MediaKeyException cancelKeyRequest(
-      const blink::WebString& key_system,
-      const blink::WebString& session_id) override;
-
   void setContentDecryptionModule(
       blink::WebContentDecryptionModule* cdm,
       blink::WebContentDecryptionModuleResult result) override;
 
-  void OnKeyAdded(const std::string& session_id);
-  void OnKeyError(const std::string& session_id,
-                  media::MediaKeys::KeyError error_code,
-                  uint32_t system_code);
-  void OnKeyMessage(const std::string& session_id,
-                    const std::vector<uint8_t>& message,
-                    const GURL& destination_url);
-
   void OnMediaSourceOpened(blink::WebMediaSource* web_media_source);
 
   void OnEncryptedMediaInitData(media::EmeInitDataType init_data_type,
@@ -310,20 +284,6 @@
   bool IsKeySystemSupported(const std::string& key_system);
   bool IsLocalResource();
 
-  // Actually do the work for generateKeyRequest/addKey so they can easily
-  // report results to UMA.
-  MediaKeyException GenerateKeyRequestInternal(const std::string& key_system,
-                                               const unsigned char* init_data,
-                                               unsigned init_data_length);
-  MediaKeyException AddKeyInternal(const std::string& key_system,
-                                   const unsigned char* key,
-                                   unsigned key_length,
-                                   const unsigned char* init_data,
-                                   unsigned init_data_length,
-                                   const std::string& session_id);
-  MediaKeyException CancelKeyRequestInternal(const std::string& key_system,
-                                             const std::string& session_id);
-
   // Called when |cdm_context| is ready.
   void OnCdmContextReady(media::CdmContext* cdm_context);
 
@@ -421,12 +381,6 @@
   // Owned by RenderFrameImpl.
   RendererMediaPlayerManager* const player_manager_;
 
-  // TODO(xhwang): Remove |cdm_factory_| when prefixed EME is deprecated. See
-  // http://crbug.com/249976
-  media::CdmFactory* const cdm_factory_;
-
-  media::MediaPermission* media_permission_;
-
   // Player ID assigned by the |player_manager_|.
   int player_id_;
 
@@ -501,17 +455,6 @@
 
   scoped_ptr<MediaInfoLoader> info_loader_;
 
-  // The currently selected key system. Empty string means that no key system
-  // has been selected.
-  std::string current_key_system_;
-
-  // Temporary for EME v0.1. Not needed for unprefixed EME, and can be removed
-  // when prefixed EME is removed.
-  media::EmeInitDataType init_data_type_;
-
-  // Manages decryption keys and decrypts encrypted frames.
-  scoped_ptr<media::ProxyDecryptor> proxy_decryptor_;
-
   // Non-owned pointer to the CdmContext. Updated in the constructor,
   // generateKeyRequest() or setContentDecryptionModule().
   media::CdmContext* cdm_context_;
diff --git a/content/renderer/media/cdm/render_cdm_factory.cc b/content/renderer/media/cdm/render_cdm_factory.cc
index e539cdd..46436ae 100644
--- a/content/renderer/media/cdm/render_cdm_factory.cc
+++ b/content/renderer/media/cdm/render_cdm_factory.cc
@@ -58,7 +58,8 @@
   }
 
   if (media::CanUseAesDecryptor(key_system)) {
-    // TODO(sandersd): Currently the prefixed API always allows distinctive
+    // TODO(sandersd): Address this now that prefixed EME has been removed.
+    // http://crbug.com/249976. The prefixed API always allowed distinctive
     // identifiers and persistent state. Once that changes we can sanity check
     // here that neither is allowed for AesDecryptor, since it does not support
     // them and should never be configured that way. http://crbug.com/455271
diff --git a/content/renderer/media/render_media_client.cc b/content/renderer/media/render_media_client.cc
index 4c8876c..dc2ac47 100644
--- a/content/renderer/media/render_media_client.cc
+++ b/content/renderer/media/render_media_client.cc
@@ -34,7 +34,7 @@
   DVLOG(2) << __FUNCTION__;
 #if defined(WIDEVINE_CDM_AVAILABLE)
   key_systems_info_for_uma->push_back(media::KeySystemInfoForUMA(
-      kWidevineKeySystem, kWidevineKeySystemNameForUMA, true));
+      kWidevineKeySystem, kWidevineKeySystemNameForUMA));
 #endif  // WIDEVINE_CDM_AVAILABLE
 }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index b82f08e..a15f395 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2489,7 +2489,7 @@
       render_thread->compositor_task_runner(), context_3d_cb,
       base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory,
                  base::Unretained(blink::mainThreadIsolate())),
-      GetMediaPermission(), initial_cdm, media_surface_manager_, media_session);
+      initial_cdm, media_surface_manager_, media_session);
 
 #if defined(OS_ANDROID)
   if (!UseWebMediaPlayerImpl(load_type, url))
@@ -2517,7 +2517,7 @@
   media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl(
       frame_, client, encrypted_client,
       GetWebMediaPlayerDelegate()->AsWeakPtr(),
-      std::move(media_renderer_factory), GetCdmFactory(), url_index_, params);
+      std::move(media_renderer_factory), url_index_, params);
 
 #if defined(OS_ANDROID)  // WMPI_CAST
   media_player->SetMediaPlayerManager(GetMediaPlayerManager());
@@ -5946,11 +5946,10 @@
 
   bool enable_texture_copy =
       RenderThreadImpl::current()->EnableStreamTextureCopy();
-  return new WebMediaPlayerAndroid(frame_, client, encrypted_client,
-                                   GetWebMediaPlayerDelegate()->AsWeakPtr(),
-                                   GetMediaPlayerManager(), GetCdmFactory(),
-                                   stream_texture_factory, routing_id_,
-                                   enable_texture_copy, params);
+  return new WebMediaPlayerAndroid(
+      frame_, client, encrypted_client,
+      GetWebMediaPlayerDelegate()->AsWeakPtr(), GetMediaPlayerManager(),
+      stream_texture_factory, routing_id_, enable_texture_copy, params);
 }
 
 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() {
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
index 8c2fb0c..539cecbc 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -78,7 +78,6 @@
 #include "ipc/ipc_sync_message_filter.h"
 #include "media/audio/audio_output_device.h"
 #include "media/base/audio_hardware_config.h"
-#include "media/base/key_systems.h"
 #include "media/base/mime_util.h"
 #include "media/blink/webcontentdecryptionmodule_impl.h"
 #include "media/filters/stream_parser_factory.h"
@@ -192,8 +191,7 @@
  public:
   blink::WebMimeRegistry::SupportsType supportsMediaMIMEType(
       const blink::WebString& mime_type,
-      const blink::WebString& codecs,
-      const blink::WebString& key_system) override;
+      const blink::WebString& codecs) override;
   bool supportsMediaSourceMIMEType(const blink::WebString& mime_type,
                                    const blink::WebString& codecs) override;
   blink::WebString mimeTypeForExtension(
@@ -454,31 +452,9 @@
 WebMimeRegistry::SupportsType
 RendererBlinkPlatformImpl::MimeRegistry::supportsMediaMIMEType(
     const WebString& mime_type,
-    const WebString& codecs,
-    const WebString& key_system) {
+    const WebString& codecs) {
   const std::string mime_type_ascii = ToASCIIOrEmpty(mime_type);
 
-  if (!key_system.isEmpty()) {
-    // Check whether the key system is supported with the mime_type and codecs.
-
-    // Chromium only supports ASCII parameters.
-    if (!base::IsStringASCII(key_system))
-      return IsNotSupported;
-
-    std::string key_system_ascii =
-        media::GetUnprefixedKeySystemName(base::UTF16ToASCII(
-            base::StringPiece16(key_system)));
-    std::vector<std::string> codec_vector;
-    media::ParseCodecString(ToASCIIOrEmpty(codecs), &codec_vector, true);
-
-    if (!media::PrefixedIsSupportedKeySystemWithMediaMimeType(
-            mime_type_ascii, codec_vector, key_system_ascii)) {
-      return IsNotSupported;
-    }
-
-    // Continue processing the mime_type and codecs.
-  }
-
   std::vector<std::string> codec_vector;
   media::ParseCodecString(ToASCIIOrEmpty(codecs), &codec_vector, false);
   return static_cast<WebMimeRegistry::SupportsType>(
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 1ebff098..02a4917f 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -185,8 +185,6 @@
     "cdm/key_system_names.h",
     "cdm/player_tracker_impl.cc",
     "cdm/player_tracker_impl.h",
-    "cdm/proxy_decryptor.cc",
-    "cdm/proxy_decryptor.h",
     "cdm/supported_cdm_versions.cc",
     "cdm/supported_cdm_versions.h",
     "ffmpeg/ffmpeg_deleters.h",
diff --git a/media/base/BUILD.gn b/media/base/BUILD.gn
index 9c4177f..f841957 100644
--- a/media/base/BUILD.gn
+++ b/media/base/BUILD.gn
@@ -107,8 +107,6 @@
     "key_systems.cc",
     "key_systems.h",
     "key_systems.h",
-    "key_systems_support_uma.cc",
-    "key_systems_support_uma.h",
     "loopback_audio_converter.cc",
     "loopback_audio_converter.h",
     "media.cc",
diff --git a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
index 4f3a343e..a74d9862 100644
--- a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
@@ -696,7 +696,8 @@
             return;
         }
 
-        // TODO(xhwang): DCHECK this when prefixed EME is deprecated.
+        // TODO(xhwang): DCHECK this now that prefixed EME is deprecated.
+        // https://crbug.com/249976
         if (!sessionExists(sessionId)) {
             onPromiseRejected(
                     promiseId, "Invalid session in updateSession: " + bytesToHexString(sessionId));
diff --git a/media/base/android/media_drm_bridge.h b/media/base/android/media_drm_bridge.h
index d46abbe..04e57fc 100644
--- a/media/base/android/media_drm_bridge.h
+++ b/media/base/android/media_drm_bridge.h
@@ -190,8 +190,8 @@
 
   // Session event callbacks.
 
-  // TODO(xhwang): Remove |j_legacy_destination_url| when prefixed EME support
-  // is removed.
+  // TODO(xhwang): Remove |j_legacy_destination_url| now that prefixed EME
+  // support is removed. http://crbug.com/249976
   void OnSessionMessage(
       JNIEnv* env,
       const base::android::JavaParamRef<jobject>& j_media_drm,
@@ -224,6 +224,7 @@
   // unrelated to one of the MediaKeys calls that accept a |promise|.
   // Note:
   // - This method is only for supporting prefixed EME API.
+  //   TODO(ddorwin): Remove it now. https://crbug.com/249976
   // - This method will be ignored by unprefixed EME. All errors reported
   //   in this method should probably also be reported by one of other methods.
   void OnLegacySessionError(
diff --git a/media/base/key_system_info.h b/media/base/key_system_info.h
index d349452..0fb52094 100644
--- a/media/base/key_system_info.h
+++ b/media/base/key_system_info.h
@@ -21,6 +21,8 @@
 // * Abstract key system
 //    A key system string that cannot be instantiated like a concrete key system
 //    but is otherwise useful, such as in discovery using isTypeSupported().
+// TODO(ddorwin): Remove the concept of a parent key system now that prefixed
+// has been removed. https://crbug.com/249976
 // * Parent key system
 //    A key system string that is one level up from the child key system. It may
 //    be an abstract key system.
diff --git a/media/base/key_systems.cc b/media/base/key_systems.cc
index 6c2c8c2..7ed8db1 100644
--- a/media/base/key_systems.cc
+++ b/media/base/key_systems.cc
@@ -15,7 +15,6 @@
 #include "base/time/time.h"
 #include "build/build_config.h"
 #include "media/base/key_system_info.h"
-#include "media/base/key_systems_support_uma.h"
 #include "media/base/media_client.h"
 #include "media/cdm/key_system_names.h"
 #include "third_party/widevine/cdm/widevine_cdm_common.h"
@@ -23,8 +22,6 @@
 namespace media {
 
 const char kClearKeyKeySystem[] = "org.w3.clearkey";
-const char kPrefixedClearKeyKeySystem[] = "webkit-org.w3.clearkey";
-const char kUnsupportedClearKeyKeySystem[] = "unsupported-org.w3.clearkey";
 
 // These names are used by UMA. Do not change them!
 const char kClearKeyKeySystemNameForUMA[] = "ClearKey";
@@ -80,6 +77,7 @@
   return EmeRobustness::INVALID;
 }
 
+// TODO(ddorwin): Remove reference to "concrete" key systems. crbug.com/249976.
 static void AddClearKey(std::vector<KeySystemInfo>* concrete_key_systems) {
   KeySystemInfo info;
   info.key_system = kClearKeyKeySystem;
@@ -178,11 +176,6 @@
 
   bool IsConcreteSupportedKeySystem(const std::string& key_system) const;
 
-  bool PrefixedIsSupportedKeySystemWithMediaMimeType(
-      const std::string& mime_type,
-      const std::vector<std::string>& codecs,
-      const std::string& key_system);
-
   std::string GetKeySystemNameForUMA(const std::string& key_system) const;
 
   bool UseAesDecryptor(const std::string& concrete_key_system) const;
@@ -251,9 +244,6 @@
       const std::string& container) const;
   EmeCodec GetCodecForString(const std::string& codec) const;
 
-  const std::string& PrefixedGetConcreteKeySystemNameFor(
-      const std::string& key_system) const;
-
   // Returns whether a |container| type is supported by checking
   // |key_system_supported_codecs|.
   // TODO(xhwang): Update this to actually check initDataType support.
@@ -274,8 +264,6 @@
   // to represent its capabilities.
   ParentKeySystemMap parent_key_system_map_;
 
-  KeySystemsSupportUMA key_systems_support_uma_;
-
   ContainerCodecsMap container_to_codec_mask_map_;
   CodecsMap codec_string_map_;
   KeySystemNameForUMAMap key_system_name_for_uma_map_;
@@ -339,15 +327,6 @@
   return EME_CODEC_NONE;
 }
 
-const std::string& KeySystemsImpl::PrefixedGetConcreteKeySystemNameFor(
-    const std::string& key_system) const {
-  ParentKeySystemMap::const_iterator iter =
-      parent_key_system_map_.find(key_system);
-  if (iter != parent_key_system_map_.end())
-    return iter->second;
-  return key_system;
-}
-
 void KeySystemsImpl::InitializeUMAInfo() {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(key_system_name_for_uma_map_.empty());
@@ -359,8 +338,6 @@
   for (const KeySystemInfoForUMA& info : key_systems_info_for_uma) {
     key_system_name_for_uma_map_[info.key_system] =
         info.key_system_name_for_uma;
-    if (info.reports_key_system_support_to_uma)
-      key_systems_support_uma_.AddKeySystemToReport(info.key_system);
   }
 
   // Clear Key is always supported.
@@ -526,7 +503,7 @@
     EmeInitDataType init_data_type) const {
   DCHECK(thread_checker_.CalledOnValidThread());
 
-  // Locate |key_system|. Only concrete key systems are supported in unprefixed.
+  // Locate |key_system|. Only concrete key systems are supported.
   KeySystemInfoMap::const_iterator key_system_iter =
       concrete_key_system_map_.find(key_system);
   if (key_system_iter == concrete_key_system_map_.end()) {
@@ -551,49 +528,6 @@
   return false;
 }
 
-bool KeySystemsImpl::PrefixedIsSupportedKeySystemWithMediaMimeType(
-    const std::string& mime_type,
-    const std::vector<std::string>& codecs,
-    const std::string& key_system) {
-  DCHECK(thread_checker_.CalledOnValidThread());
-
-  const std::string& concrete_key_system =
-      PrefixedGetConcreteKeySystemNameFor(key_system);
-
-  bool has_type = !mime_type.empty();
-
-  key_systems_support_uma_.ReportKeySystemQuery(key_system, has_type);
-
-  // Check key system support.
-  KeySystemInfoMap::const_iterator key_system_iter =
-      concrete_key_system_map_.find(concrete_key_system);
-  if (key_system_iter == concrete_key_system_map_.end())
-    return false;
-
-  key_systems_support_uma_.ReportKeySystemSupport(key_system, false);
-
-  if (!has_type) {
-    DCHECK(codecs.empty());
-    return true;
-  }
-
-  SupportedCodecs key_system_supported_codecs =
-      key_system_iter->second.supported_codecs;
-
-  if (!IsSupportedContainer(mime_type, key_system_supported_codecs))
-    return false;
-
-  if (!codecs.empty() &&
-      !IsSupportedContainerAndCodecs(
-          mime_type, codecs, key_system_supported_codecs)) {
-    return false;
-  }
-
-  key_systems_support_uma_.ReportKeySystemSupport(key_system, true);
-
-  return true;
-}
-
 std::string KeySystemsImpl::GetKeySystemNameForUMA(
     const std::string& key_system) const {
   DCHECK(thread_checker_.CalledOnValidThread());
@@ -874,45 +808,12 @@
 
 //------------------------------------------------------------------------------
 
-std::string GetUnprefixedKeySystemName(const std::string& key_system) {
-  if (key_system == kClearKeyKeySystem)
-    return kUnsupportedClearKeyKeySystem;
-
-  if (key_system == kPrefixedClearKeyKeySystem)
-    return kClearKeyKeySystem;
-
-  return key_system;
-}
-
-std::string GetPrefixedKeySystemName(const std::string& key_system) {
-  DCHECK_NE(key_system, kPrefixedClearKeyKeySystem);
-
-  if (key_system == kClearKeyKeySystem)
-    return kPrefixedClearKeyKeySystem;
-
-  return key_system;
-}
-
-bool PrefixedIsSupportedConcreteKeySystem(const std::string& key_system) {
-  return KeySystemsImpl::GetInstance()->IsConcreteSupportedKeySystem(
-      key_system);
-}
-
 bool IsSupportedKeySystemWithInitDataType(const std::string& key_system,
                                           EmeInitDataType init_data_type) {
   return KeySystemsImpl::GetInstance()->IsSupportedInitDataType(key_system,
                                                                 init_data_type);
 }
 
-bool PrefixedIsSupportedKeySystemWithMediaMimeType(
-    const std::string& mime_type,
-    const std::vector<std::string>& codecs,
-    const std::string& key_system) {
-  return KeySystemsImpl::GetInstance()
-      ->PrefixedIsSupportedKeySystemWithMediaMimeType(mime_type, codecs,
-                                                      key_system);
-}
-
 std::string GetKeySystemNameForUMA(const std::string& key_system) {
   return KeySystemsImpl::GetInstance()->GetKeySystemNameForUMA(key_system);
 }
diff --git a/media/base/key_systems.h b/media/base/key_systems.h
index dcdd2548..1163dc8 100644
--- a/media/base/key_systems.h
+++ b/media/base/key_systems.h
@@ -16,8 +16,7 @@
 
 namespace media {
 
-// Provides an interface for querying registered key systems. The exposed API is
-// only intended to support unprefixed EME.
+// Provides an interface for querying registered key systems.
 //
 // Many of the original static methods are still available, they should be
 // migrated into this interface over time (or removed).
@@ -71,39 +70,13 @@
   virtual ~KeySystems() {};
 };
 
-// Prefixed EME API only supports prefixed (webkit-) key system name for
-// certain key systems. But internally only unprefixed key systems are
-// supported. The following two functions help convert between prefixed and
-// unprefixed key system names.
-
-// Gets the unprefixed key system name for |key_system|.
-MEDIA_EXPORT std::string GetUnprefixedKeySystemName(
-    const std::string& key_system);
-
-// Gets the prefixed key system name for |key_system|.
-MEDIA_EXPORT std::string GetPrefixedKeySystemName(
-    const std::string& key_system);
-
+// TODO(ddorwin): WebContentDecryptionModuleSessionImpl::initializeNewSession()
+// is violating this rule! https://crbug.com/249976.
 // Use for prefixed EME only!
 MEDIA_EXPORT bool IsSupportedKeySystemWithInitDataType(
     const std::string& key_system,
     EmeInitDataType init_data_type);
 
-// Use for prefixed EME only!
-// Returns whether |key_system| is a real supported key system that can be
-// instantiated.
-// Abstract parent |key_system| strings will return false.
-MEDIA_EXPORT bool PrefixedIsSupportedConcreteKeySystem(
-    const std::string& key_system);
-
-// Use for prefixed EME only!
-// Returns whether |key_system| supports the specified media type and codec(s).
-// To be used with prefixed EME only as it generates UMAs based on the query.
-MEDIA_EXPORT bool PrefixedIsSupportedKeySystemWithMediaMimeType(
-    const std::string& mime_type,
-    const std::vector<std::string>& codecs,
-    const std::string& key_system);
-
 // Returns a name for |key_system| suitable to UMA logging.
 MEDIA_EXPORT std::string GetKeySystemNameForUMA(const std::string& key_system);
 
diff --git a/media/base/key_systems_support_uma.cc b/media/base/key_systems_support_uma.cc
deleted file mode 100644
index 7ac7a14..0000000
--- a/media/base/key_systems_support_uma.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/base/key_systems_support_uma.h"
-
-#include "base/metrics/histogram.h"
-#include "media/base/key_systems.h"
-
-namespace media {
-
-namespace {
-
-const char kKeySystemSupportUMAPrefix[] = "Media.EME.KeySystemSupport.";
-
-// These values are reported to UMA. Do not change the existing values!
-enum KeySystemSupportStatus {
-  KEY_SYSTEM_QUERIED = 0,
-  KEY_SYSTEM_SUPPORTED = 1,
-  KEY_SYSTEM_WITH_TYPE_QUERIED = 2,
-  KEY_SYSTEM_WITH_TYPE_SUPPORTED = 3,
-  KEY_SYSTEM_SUPPORT_STATUS_COUNT
-};
-
-// Reports an event only once.
-class OneTimeReporter {
- public:
-  OneTimeReporter(const std::string& key_system, KeySystemSupportStatus status);
-  ~OneTimeReporter();
-
-  void Report();
-
- private:
-  bool is_reported_;
-  const std::string key_system_;
-  const KeySystemSupportStatus status_;
-};
-
-OneTimeReporter::OneTimeReporter(const std::string& key_system,
-                                 KeySystemSupportStatus status)
-    : is_reported_(false), key_system_(key_system), status_(status) {
-}
-
-OneTimeReporter::~OneTimeReporter() {}
-
-void OneTimeReporter::Report() {
-  if (is_reported_)
-    return;
-
-  // Not using UMA_HISTOGRAM_ENUMERATION directly because UMA_* macros require
-  // the names to be constant throughout the process' lifetime.
-  base::LinearHistogram::FactoryGet(
-      kKeySystemSupportUMAPrefix + GetKeySystemNameForUMA(key_system_), 1,
-      KEY_SYSTEM_SUPPORT_STATUS_COUNT, KEY_SYSTEM_SUPPORT_STATUS_COUNT + 1,
-      base::Histogram::kUmaTargetedHistogramFlag)->Add(status_);
-
-  is_reported_ = true;
-}
-
-}  // namespace
-
-class KeySystemsSupportUMA::Reporter {
- public:
-  explicit Reporter(const std::string& key_system);
-  ~Reporter();
-
-  void Report(bool has_type, bool is_supported);
-
- private:
-  const std::string key_system_;
-
-  OneTimeReporter call_reporter_;
-  OneTimeReporter call_with_type_reporter_;
-  OneTimeReporter support_reporter_;
-  OneTimeReporter support_with_type_reporter_;
-};
-
-KeySystemsSupportUMA::Reporter::Reporter(const std::string& key_system)
-    : key_system_(key_system),
-      call_reporter_(key_system, KEY_SYSTEM_QUERIED),
-      call_with_type_reporter_(key_system, KEY_SYSTEM_WITH_TYPE_QUERIED),
-      support_reporter_(key_system, KEY_SYSTEM_SUPPORTED),
-      support_with_type_reporter_(key_system, KEY_SYSTEM_WITH_TYPE_SUPPORTED) {}
-
-KeySystemsSupportUMA::Reporter::~Reporter() {}
-
-void KeySystemsSupportUMA::Reporter::Report(bool has_type, bool is_supported) {
-  call_reporter_.Report();
-  if (has_type)
-    call_with_type_reporter_.Report();
-
-  if (!is_supported)
-    return;
-
-  support_reporter_.Report();
-  if (has_type)
-    support_with_type_reporter_.Report();
-}
-
-KeySystemsSupportUMA::KeySystemsSupportUMA() {}
-
-KeySystemsSupportUMA::~KeySystemsSupportUMA() {}
-
-void KeySystemsSupportUMA::AddKeySystemToReport(const std::string& key_system) {
-  DCHECK(!GetReporter(key_system));
-  reporters_.set(key_system, scoped_ptr<Reporter>(new Reporter(key_system)));
-}
-
-void KeySystemsSupportUMA::ReportKeySystemQuery(const std::string& key_system,
-                                                bool has_type) {
-  Reporter* reporter = GetReporter(key_system);
-  if (!reporter)
-    return;
-  reporter->Report(has_type, false);
-}
-
-void KeySystemsSupportUMA::ReportKeySystemSupport(const std::string& key_system,
-                                                  bool has_type) {
-  Reporter* reporter = GetReporter(key_system);
-  if (!reporter)
-    return;
-  reporter->Report(has_type, true);
-}
-
-KeySystemsSupportUMA::Reporter* KeySystemsSupportUMA::GetReporter(
-    const std::string& key_system) {
-  Reporters::iterator reporter = reporters_.find(key_system);
-  if (reporter == reporters_.end())
-    return NULL;
-  return reporter->second;
-}
-
-}  // namespace media
diff --git a/media/base/key_systems_support_uma.h b/media/base/key_systems_support_uma.h
deleted file mode 100644
index 28f334d..0000000
--- a/media/base/key_systems_support_uma.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_
-#define MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_
-
-#include <string>
-
-#include "base/containers/scoped_ptr_hash_map.h"
-
-namespace media {
-
-// Key system support UMA statistics for queried key systems.
-// 1. The key system is queried (with or without a MIME type).
-// 2. The key system is queried with a MIME type.
-// 3. The queried key system is supported (with or without a MIME type). This is
-//    reported when the key system is supported when queried, regardless of
-//    whether a MIME type is specified.
-// 4. The queried key system is supported with a MIME type. This is reported
-//    when the key system is supported when queried without a MIME type
-//    specified.
-// Note: All 4 stats are only reported once per renderer process per key system.
-class KeySystemsSupportUMA {
- public:
-  KeySystemsSupportUMA();
-  ~KeySystemsSupportUMA();
-
-  // Adds a |key_system| for which query/support statistics are reported.
-  // If you use this function to add key system to report, make sure to update
-  // AddKeySystemSupportActions() in tools/metrics/actions/extract_actions.py.
-  void AddKeySystemToReport(const std::string& key_system);
-
-  // Reports that the |key_system| is queried. When |has_type|, also reports
-  // that the |key_system| with a MIME type is queried.
-  void ReportKeySystemQuery(const std::string& key_system, bool has_type);
-
-  // Reports that the queried |key_system| is supported. When |has_type| (a
-  // a MIME type is specified in the query), also reports that the queried
-  // |key_system| is supported with that MIME type.
-  void ReportKeySystemSupport(const std::string& key_system, bool has_type);
-
- private:
-  class Reporter;
-
-  // Returns the Reporter for |key_system|. Returns NULL if |key_system| was not
-  // added for UMA reporting.
-  Reporter* GetReporter(const std::string& key_system);
-
-  // Key system <-> Reporter map.
-  typedef base::ScopedPtrHashMap<std::string, scoped_ptr<Reporter>> Reporters;
-  Reporters reporters_;
-};
-
-}  // namespace media
-
-#endif  // MEDIA_BASE_KEY_SYSTEMS_SUPPORT_UMA_H_
diff --git a/media/base/key_systems_unittest.cc b/media/base/key_systems_unittest.cc
index 1254394..f99f51b 100644
--- a/media/base/key_systems_unittest.cc
+++ b/media/base/key_systems_unittest.cc
@@ -32,7 +32,6 @@
 const char kExternalNameForUMA[] = "External";
 
 const char kClearKey[] = "org.w3.clearkey";
-const char kPrefixedClearKey[] = "webkit-org.w3.clearkey";
 const char kExternalClearKey[] = "org.chromium.externalclearkey";
 
 const char kAudioWebM[] = "audio/webm";
@@ -143,9 +142,9 @@
 void TestMediaClient::AddKeySystemsInfoForUMA(
     std::vector<KeySystemInfoForUMA>* key_systems_info_for_uma) {
   key_systems_info_for_uma->push_back(
-      media::KeySystemInfoForUMA(kUsesAes, kUseAesNameForUMA, false));
+      media::KeySystemInfoForUMA(kUsesAes, kUseAesNameForUMA));
   key_systems_info_for_uma->push_back(
-      media::KeySystemInfoForUMA(kExternal, kExternalNameForUMA, true));
+      media::KeySystemInfoForUMA(kExternal, kExternalNameForUMA));
 }
 
 bool TestMediaClient::IsKeySystemsUpdateNeeded() {
@@ -367,10 +366,6 @@
       kVideoWebM, no_codecs(), kClearKey));
 
   EXPECT_EQ("ClearKey", GetKeySystemNameForUMA(kClearKey));
-
-  // Prefixed Clear Key is not supported internally.
-  EXPECT_FALSE(IsSupportedKeySystem(kPrefixedClearKey));
-  EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kPrefixedClearKey));
 }
 
 TEST_F(KeySystemsTest, ClearKeyWithInitDataType) {
@@ -587,8 +582,6 @@
 TEST_F(KeySystemsTest, Parent_ParentRegistered) {
   // Unprefixed has no parent key system support.
   EXPECT_FALSE(IsSupportedKeySystem(kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kExternalParent));
 
   // The parent is not supported for most things.
   EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kExternalParent));
@@ -625,25 +618,6 @@
   EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
       kVideoWebM, vorbis_codec(), kExternal));
 
-  // Valid video types - parent key system.
-  // Prefixed has parent key system support.
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp8_codec(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp80_codec(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp8_and_vorbis_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp9_codec(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp90_codec(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vp9_and_vorbis_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, vorbis_codec(), kExternalParent));
-
   // Non-Webm codecs.
   EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
       kVideoWebM, foovideo_codec(), kExternal));
@@ -658,13 +632,6 @@
   EXPECT_TRUE(IsSupportedKeySystemWithAudioMimeType(
       kAudioWebM, vorbis_codec(), kExternal));
 
-  // Valid audio types - parent key system.
-  // Prefixed has parent key system support.
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kAudioWebM, no_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kAudioWebM, vorbis_codec(), kExternalParent));
-
   // Non-audio codecs.
   EXPECT_FALSE(IsSupportedKeySystemWithAudioMimeType(
       kAudioWebM, vp8_codec(), kExternal));
@@ -695,17 +662,6 @@
   EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
       kVideoFoo, fooaudio_codec(), kExternal));
 
-  // Valid video types - parent key system.
-  // Prefixed has parent key system support.
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoFoo, no_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoFoo, foovideo_codec(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoFoo, foovideo_and_fooaudio_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoFoo, fooaudio_codec(), kExternalParent));
-
   // Extended codecs fail because this is handled by SimpleWebMimeRegistryImpl.
   // They should really pass canPlayType().
   EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
@@ -729,13 +685,6 @@
   EXPECT_TRUE(IsSupportedKeySystemWithAudioMimeType(
       kAudioFoo, fooaudio_codec(), kExternal));
 
-  // Valid audio types - parent key system.
-  // Prefixed has parent key system support.
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kAudioFoo, no_codecs(), kExternalParent));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kAudioFoo, fooaudio_codec(), kExternalParent));
-
   // Non-audio codecs.
   EXPECT_FALSE(IsSupportedKeySystemWithAudioMimeType(
       kAudioFoo, foovideo_codec(), kExternal));
@@ -749,8 +698,6 @@
 
 TEST_F(KeySystemsTest, KeySystemNameForUMA) {
   EXPECT_EQ("ClearKey", GetKeySystemNameForUMA(kClearKey));
-  // Prefixed is not supported internally.
-  EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kPrefixedClearKey));
 
   // External Clear Key never has a UMA name.
   EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kExternalClearKey));
@@ -772,24 +719,6 @@
   EXPECT_FALSE(IsSupportedKeySystem(kExternal));
 }
 
-TEST_F(KeySystemsTest, PrefixedKeySystemsUpdate) {
-  EXPECT_TRUE(IsSupportedKeySystem(kUsesAes));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kUsesAes));
-  EXPECT_TRUE(IsSupportedKeySystem(kExternal));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kExternal));
-
-  UpdateClientKeySystems();
-
-  EXPECT_TRUE(IsSupportedKeySystem(kUsesAes));
-  EXPECT_TRUE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kUsesAes));
-  EXPECT_FALSE(IsSupportedKeySystem(kExternal));
-  EXPECT_FALSE(PrefixedIsSupportedKeySystemWithMediaMimeType(
-      kVideoWebM, no_codecs(), kExternal));
-}
-
 TEST_F(KeySystemsPotentiallySupportedNamesTest, PotentiallySupportedNames) {
   EXPECT_FALSE(IsSupportedKeySystem("org.w3"));
   EXPECT_FALSE(IsSupportedKeySystem("org.w3."));
diff --git a/media/base/media_client.cc b/media/base/media_client.cc
index bcc6de0b..e7026aadc 100644
--- a/media/base/media_client.cc
+++ b/media/base/media_client.cc
@@ -20,12 +20,9 @@
 
 KeySystemInfoForUMA::KeySystemInfoForUMA(
     const std::string& key_system,
-    const std::string& key_system_name_for_uma,
-    bool reports_key_system_support_to_uma)
+    const std::string& key_system_name_for_uma)
     : key_system(key_system),
-      key_system_name_for_uma(key_system_name_for_uma),
-      reports_key_system_support_to_uma(reports_key_system_support_to_uma) {
-}
+      key_system_name_for_uma(key_system_name_for_uma) {}
 
 KeySystemInfoForUMA::~KeySystemInfoForUMA() {
 }
diff --git a/media/base/media_client.h b/media/base/media_client.h
index dc8da49..30d8679 100644
--- a/media/base/media_client.h
+++ b/media/base/media_client.h
@@ -28,8 +28,7 @@
 
 struct MEDIA_EXPORT KeySystemInfoForUMA {
   KeySystemInfoForUMA(const std::string& key_system,
-                      const std::string& key_system_name_for_uma,
-                      bool reports_key_system_support_to_uma);
+                      const std::string& key_system_name_for_uma);
   ~KeySystemInfoForUMA();
 
   // Concrete key system name;
@@ -39,12 +38,6 @@
   // "org.w3.clearkey" is "ClearKey". When providing this value, make sure to
   // update tools/metrics/histograms/histograms.xml.
   std::string key_system_name_for_uma;
-
-  // Whether query/support statistics for |key_system| should be reported.
-  // If set to true, make sure to add a new Media.EME.KeySystemSupport.* to
-  // tools/metrics/histograms/histograms.xml. See KeySystemsSupportUMA for
-  // details on how key system query/support UMA is reported.
-  bool reports_key_system_support_to_uma;
 };
 
 // A client interface for embedders (e.g. content/renderer) to provide
diff --git a/media/base/media_keys.h b/media/base/media_keys.h
index bb34adf..121a3bb 100644
--- a/media/base/media_keys.h
+++ b/media/base/media_keys.h
@@ -66,22 +66,8 @@
 class MEDIA_EXPORT MediaKeys
     : public base::RefCountedThreadSafe<MediaKeys, MediaKeysTraits> {
  public:
-  // Reported to UMA, so never reuse a value!
-  // Must be kept in sync with blink::WebMediaPlayerClient::MediaKeyErrorCode
-  // (enforced in webmediaplayer_impl.cc).
-  // TODO(jrummell): Can this be moved to proxy_decryptor as it should only be
-  // used by the prefixed EME code?
-  enum KeyError {
-    kUnknownError = 1,
-    kClientError,
-    // The commented v0.1b values below have never been used.
-    // kServiceError,
-    kOutputError = 4,
-    // kHardwareChangeError,
-    // kDomainError,
-    kMaxKeyError  // Must be last and greater than any legit value.
-  };
-
+  // TODO(xhwang): Remove after prefixed EME support is removed. See
+  // http://crbug.com/249976
   // Must be a superset of cdm::MediaKeyException.
   enum Exception {
     NOT_SUPPORTED_ERROR,
@@ -193,6 +179,7 @@
 typedef base::Callback<void(const std::string& session_id,
                             MediaKeys::MessageType message_type,
                             const std::vector<uint8_t>& message,
+                            // TODO(ddorwin): Remove. https://crbug.com/249976
                             const GURL& legacy_destination_url)>
     SessionMessageCB;
 
diff --git a/media/blink/BUILD.gn b/media/blink/BUILD.gn
index daa405f..d613de1 100644
--- a/media/blink/BUILD.gn
+++ b/media/blink/BUILD.gn
@@ -88,8 +88,6 @@
 
   if (media_use_ffmpeg || !is_android) {
     sources += [
-      "encrypted_media_player_support.cc",
-      "encrypted_media_player_support.h",
       "webmediaplayer_impl.cc",
       "webmediaplayer_impl.h",
     ]
diff --git a/media/blink/cdm_session_adapter.cc b/media/blink/cdm_session_adapter.cc
index 249e561..e747f22 100644
--- a/media/blink/cdm_session_adapter.cc
+++ b/media/blink/cdm_session_adapter.cc
@@ -212,7 +212,7 @@
     uint32_t system_code,
     const std::string& error_message) {
   // Error events not used by unprefixed EME.
-  // TODO(jrummell): Remove when prefixed EME removed.
+  // TODO(jrummell): Remove when prefixed EME removed. https://crbug.com/249976
 }
 
 WebContentDecryptionModuleSessionImpl* CdmSessionAdapter::GetSession(
diff --git a/media/blink/encrypted_media_player_support.cc b/media/blink/encrypted_media_player_support.cc
deleted file mode 100644
index b192f49..0000000
--- a/media/blink/encrypted_media_player_support.cc
+++ /dev/null
@@ -1,331 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/blink/encrypted_media_player_support.h"
-
-#include <stddef.h>
-
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/metrics/histogram.h"
-#include "base/numerics/safe_conversions.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "media/base/bind_to_current_loop.h"
-#include "media/base/key_systems.h"
-#include "media/blink/webcontentdecryptionmodule_impl.h"
-#include "third_party/WebKit/public/platform/URLConversion.h"
-#include "third_party/WebKit/public/platform/WebContentDecryptionModule.h"
-#include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h"
-#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebLocalFrame.h"
-
-using blink::WebMediaPlayer;
-using blink::WebMediaPlayerEncryptedMediaClient;
-using blink::WebString;
-
-namespace media {
-
-#define BIND_TO_RENDER_LOOP(function)            \
-  (BindToCurrentLoop(base::Bind(function, AsWeakPtr())))
-
-#define BIND_TO_RENDER_LOOP1(function, arg1)     \
-  (BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1)))
-
-// Prefix for histograms related to Encrypted Media Extensions.
-static const char* kMediaEme = "Media.EME.";
-
-// Convert a WebString to ASCII, falling back on an empty string in the case
-// of a non-ASCII string.
-static std::string ToASCIIOrEmpty(const WebString& string) {
-  return base::IsStringASCII(string)
-      ? base::UTF16ToASCII(base::StringPiece16(string))
-      : std::string();
-}
-
-// Helper functions to report media EME related stats to UMA. They follow the
-// convention of more commonly used macros UMA_HISTOGRAM_ENUMERATION and
-// UMA_HISTOGRAM_COUNTS. The reason that we cannot use those macros directly is
-// that UMA_* macros require the names to be constant throughout the process'
-// lifetime.
-static void EmeUMAHistogramEnumeration(const std::string& key_system,
-                                       const std::string& method,
-                                       int sample,
-                                       int boundary_value) {
-  base::LinearHistogram::FactoryGet(
-      kMediaEme + GetKeySystemNameForUMA(key_system) + "." + method,
-      1, boundary_value, boundary_value + 1,
-      base::Histogram::kUmaTargetedHistogramFlag)->Add(sample);
-}
-
-static void EmeUMAHistogramCounts(const std::string& key_system,
-                                  const std::string& method,
-                                  int sample) {
-  // Use the same parameters as UMA_HISTOGRAM_COUNTS.
-  base::Histogram::FactoryGet(
-      kMediaEme + GetKeySystemNameForUMA(key_system) + "." + method,
-      1, 1000000, 50, base::Histogram::kUmaTargetedHistogramFlag)->Add(sample);
-}
-
-// Helper enum for reporting generateKeyRequest/addKey histograms.
-enum MediaKeyException {
-  kUnknownResultId,
-  kSuccess,
-  kKeySystemNotSupported,
-  kInvalidPlayerState,
-  kMaxMediaKeyException
-};
-
-static MediaKeyException MediaKeyExceptionForUMA(
-    WebMediaPlayer::MediaKeyException e) {
-  switch (e) {
-    case WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported:
-      return kKeySystemNotSupported;
-    case WebMediaPlayer::MediaKeyExceptionInvalidPlayerState:
-      return kInvalidPlayerState;
-    case WebMediaPlayer::MediaKeyExceptionNoError:
-      return kSuccess;
-    default:
-      return kUnknownResultId;
-  }
-}
-
-// Helper for converting |key_system| name and exception |e| to a pair of enum
-// values from above, for reporting to UMA.
-static void ReportMediaKeyExceptionToUMA(const std::string& method,
-                                         const std::string& key_system,
-                                         WebMediaPlayer::MediaKeyException e) {
-  MediaKeyException result_id = MediaKeyExceptionForUMA(e);
-  DCHECK_NE(result_id, kUnknownResultId) << e;
-  EmeUMAHistogramEnumeration(
-      key_system, method, result_id, kMaxMediaKeyException);
-}
-
-// Guess the type of |init_data|. This is only used to handle some corner cases
-// so we keep it as simple as possible without breaking major use cases.
-static EmeInitDataType GuessInitDataType(const unsigned char* init_data,
-                                         unsigned init_data_length) {
-#if defined(USE_PROPRIETARY_CODECS)
-  // Most WebM files use KeyId of 16 bytes. CENC init data is always >16 bytes.
-  if (init_data_length > 16)
-    return EmeInitDataType::CENC;
-#endif
-
-  return EmeInitDataType::WEBM;
-}
-
-EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport(
-    CdmFactory* cdm_factory,
-    WebMediaPlayerEncryptedMediaClient* client,
-    MediaPermission* media_permission,
-    const CdmContextReadyCB& cdm_context_ready_cb)
-    : cdm_factory_(cdm_factory),
-      client_(client),
-      media_permission_(media_permission),
-      init_data_type_(EmeInitDataType::UNKNOWN),
-      cdm_context_ready_cb_(cdm_context_ready_cb) {
-}
-
-EncryptedMediaPlayerSupport::~EncryptedMediaPlayerSupport() {
-}
-
-WebMediaPlayer::MediaKeyException
-EncryptedMediaPlayerSupport::GenerateKeyRequest(
-    blink::WebLocalFrame* frame,
-    const WebString& key_system,
-    const unsigned char* init_data,
-    unsigned init_data_length) {
-  DVLOG(1) << "generateKeyRequest: " << base::string16(key_system) << ": "
-           << std::string(reinterpret_cast<const char*>(init_data),
-                          static_cast<size_t>(init_data_length));
-
-  std::string ascii_key_system =
-      GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-
-  WebMediaPlayer::MediaKeyException e = GenerateKeyRequestInternal(
-      frame, ascii_key_system, init_data, init_data_length);
-  ReportMediaKeyExceptionToUMA("generateKeyRequest", ascii_key_system, e);
-  return e;
-}
-
-WebMediaPlayer::MediaKeyException
-EncryptedMediaPlayerSupport::GenerateKeyRequestInternal(
-    blink::WebLocalFrame* frame,
-    const std::string& key_system,
-    const unsigned char* init_data,
-    unsigned init_data_length) {
-  if (!PrefixedIsSupportedConcreteKeySystem(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  // |use_hw_secure_codecs| is only supported on Android, and Android (WMPA)
-  // does not use EncryptedMediaPlayerSupport.
-  bool use_hw_secure_codecs = false;
-
-  if (!proxy_decryptor_) {
-    DCHECK(current_key_system_.empty());
-    DCHECK(!cdm_context_ready_cb_.is_null());
-    proxy_decryptor_.reset(new ProxyDecryptor(
-        media_permission_, use_hw_secure_codecs,
-        BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyAdded),
-        BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyError),
-        BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyMessage)));
-
-    GURL security_origin(
-        blink::WebStringToGURL(frame->document().securityOrigin().toString()));
-    proxy_decryptor_->CreateCdm(cdm_factory_, key_system, security_origin,
-                                cdm_context_ready_cb_);
-    current_key_system_ = key_system;
-  }
-
-  // We do not support run-time switching between key systems for now.
-  DCHECK(!current_key_system_.empty());
-  if (key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  EmeInitDataType init_data_type = init_data_type_;
-  if (init_data_type == EmeInitDataType::UNKNOWN)
-    init_data_type = GuessInitDataType(init_data, init_data_length);
-
-  proxy_decryptor_->GenerateKeyRequest(init_data_type, init_data,
-                                       init_data_length);
-
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
-WebMediaPlayer::MediaKeyException EncryptedMediaPlayerSupport::AddKey(
-    const WebString& key_system,
-    const unsigned char* key,
-    unsigned key_length,
-    const unsigned char* init_data,
-    unsigned init_data_length,
-    const WebString& session_id) {
-  DVLOG(1) << "addKey: " << base::string16(key_system) << ": "
-           << std::string(reinterpret_cast<const char*>(key),
-                          static_cast<size_t>(key_length)) << ", "
-           << std::string(reinterpret_cast<const char*>(init_data),
-                          static_cast<size_t>(init_data_length)) << " ["
-           << base::string16(session_id) << "]";
-
-  std::string ascii_key_system =
-      GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-  std::string ascii_session_id = ToASCIIOrEmpty(session_id);
-
-  WebMediaPlayer::MediaKeyException e = AddKeyInternal(ascii_key_system,
-                                                       key,
-                                                       key_length,
-                                                       init_data,
-                                                       init_data_length,
-                                                       ascii_session_id);
-  ReportMediaKeyExceptionToUMA("addKey", ascii_key_system, e);
-  return e;
-}
-
-WebMediaPlayer::MediaKeyException
-EncryptedMediaPlayerSupport::AddKeyInternal(
-    const std::string& key_system,
-    const unsigned char* key,
-    unsigned key_length,
-    const unsigned char* init_data,
-    unsigned init_data_length,
-    const std::string& session_id) {
-  DCHECK(key);
-  DCHECK_GT(key_length, 0u);
-
-  if (!PrefixedIsSupportedConcreteKeySystem(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  if (current_key_system_.empty() || key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  proxy_decryptor_->AddKey(
-      key, key_length, init_data, init_data_length, session_id);
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
-WebMediaPlayer::MediaKeyException
-EncryptedMediaPlayerSupport::CancelKeyRequest(
-    const WebString& key_system,
-    const WebString& session_id) {
-  DVLOG(1) << "cancelKeyRequest: " << base::string16(key_system) << ": "
-           << " [" << base::string16(session_id) << "]";
-
-  std::string ascii_key_system =
-      GetUnprefixedKeySystemName(ToASCIIOrEmpty(key_system));
-  std::string ascii_session_id = ToASCIIOrEmpty(session_id);
-
-  WebMediaPlayer::MediaKeyException e =
-      CancelKeyRequestInternal(ascii_key_system, ascii_session_id);
-  ReportMediaKeyExceptionToUMA("cancelKeyRequest", ascii_key_system, e);
-  return e;
-}
-
-WebMediaPlayer::MediaKeyException
-EncryptedMediaPlayerSupport::CancelKeyRequestInternal(
-    const std::string& key_system,
-    const std::string& session_id) {
-  if (!PrefixedIsSupportedConcreteKeySystem(key_system))
-    return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
-
-  if (current_key_system_.empty() || key_system != current_key_system_)
-    return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState;
-
-  proxy_decryptor_->CancelKeyRequest(session_id);
-  return WebMediaPlayer::MediaKeyExceptionNoError;
-}
-
-void EncryptedMediaPlayerSupport::SetInitDataType(
-    EmeInitDataType init_data_type) {
-  DCHECK(init_data_type != EmeInitDataType::UNKNOWN);
-  DLOG_IF(WARNING, init_data_type_ != EmeInitDataType::UNKNOWN &&
-                       init_data_type != init_data_type_)
-      << "Mixed init data type not supported. The new type is ignored.";
-  if (init_data_type_ == EmeInitDataType::UNKNOWN)
-    init_data_type_ = init_data_type;
-}
-
-void EncryptedMediaPlayerSupport::OnKeyAdded(const std::string& session_id) {
-  EmeUMAHistogramCounts(current_key_system_, "KeyAdded", 1);
-  client_->keyAdded(
-      WebString::fromUTF8(GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id));
-}
-
-void EncryptedMediaPlayerSupport::OnKeyError(const std::string& session_id,
-                                             MediaKeys::KeyError error_code,
-                                             uint32_t system_code) {
-  EmeUMAHistogramEnumeration(current_key_system_, "KeyError",
-                             error_code, MediaKeys::kMaxKeyError);
-
-  uint16_t short_system_code = 0;
-  if (system_code > std::numeric_limits<uint16_t>::max()) {
-    LOG(WARNING) << "system_code exceeds unsigned short limit.";
-    short_system_code = std::numeric_limits<uint16_t>::max();
-  } else {
-    short_system_code = static_cast<uint16_t>(system_code);
-  }
-
-  client_->keyError(
-      WebString::fromUTF8(GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id),
-      static_cast<WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode>(
-          error_code),
-      short_system_code);
-}
-
-void EncryptedMediaPlayerSupport::OnKeyMessage(
-    const std::string& session_id,
-    const std::vector<uint8_t>& message,
-    const GURL& destination_url) {
-  DCHECK(destination_url.is_empty() || destination_url.is_valid());
-
-  client_->keyMessage(
-      WebString::fromUTF8(GetPrefixedKeySystemName(current_key_system_)),
-      WebString::fromUTF8(session_id),
-      message.empty() ? NULL : &message[0],
-      base::saturated_cast<unsigned int>(message.size()),
-      destination_url);
-}
-
-}  // namespace media
diff --git a/media/blink/encrypted_media_player_support.h b/media/blink/encrypted_media_player_support.h
deleted file mode 100644
index 2933a62..0000000
--- a/media/blink/encrypted_media_player_support.h
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_
-#define MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "media/base/cdm_context.h"
-#include "media/base/cdm_factory.h"
-#include "media/base/demuxer.h"
-#include "media/base/eme_constants.h"
-#include "media/cdm/proxy_decryptor.h"
-#include "third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h"
-#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
-
-namespace blink {
-class WebContentDecryptionModule;
-class WebLocalFrame;
-class WebMediaPlayerEncryptedMediaClient;
-class WebString;
-}
-
-namespace media {
-
-class MediaPermission;
-class WebContentDecryptionModuleImpl;
-
-// Provides support to prefixed EME implementation.
-// Do NOT add unprefixed EME functionality to this class!
-// TODO(xhwang): When deprecating prefixed EME support, drop this whole file.
-class EncryptedMediaPlayerSupport
-    : public base::SupportsWeakPtr<EncryptedMediaPlayerSupport> {
- public:
-  using CdmContextReadyCB = ProxyDecryptor::CdmContextReadyCB;
-
-  // |cdm_context_ready_cb| is called when the CDM instance creation completes.
-  EncryptedMediaPlayerSupport(CdmFactory* cdm_factory,
-                              blink::WebMediaPlayerEncryptedMediaClient* client,
-                              MediaPermission* media_permission,
-                              const CdmContextReadyCB& cdm_context_ready_cb);
-  ~EncryptedMediaPlayerSupport();
-
-  blink::WebMediaPlayer::MediaKeyException GenerateKeyRequest(
-      blink::WebLocalFrame* frame,
-      const blink::WebString& key_system,
-      const unsigned char* init_data,
-      unsigned init_data_length);
-
-  blink::WebMediaPlayer::MediaKeyException AddKey(
-      const blink::WebString& key_system,
-      const unsigned char* key,
-      unsigned key_length,
-      const unsigned char* init_data,
-      unsigned init_data_length,
-      const blink::WebString& session_id);
-
-  blink::WebMediaPlayer::MediaKeyException CancelKeyRequest(
-      const blink::WebString& key_system,
-      const blink::WebString& session_id);
-
-  void SetInitDataType(EmeInitDataType init_data_type);
-
- private:
-  blink::WebMediaPlayer::MediaKeyException GenerateKeyRequestInternal(
-      blink::WebLocalFrame* frame,
-      const std::string& key_system,
-      const unsigned char* init_data,
-      unsigned init_data_length);
-
-  blink::WebMediaPlayer::MediaKeyException AddKeyInternal(
-      const std::string& key_system,
-      const unsigned char* key,
-      unsigned key_length,
-      const unsigned char* init_data,
-      unsigned init_data_length,
-      const std::string& session_id);
-
-  blink::WebMediaPlayer::MediaKeyException CancelKeyRequestInternal(
-    const std::string& key_system,
-    const std::string& session_id);
-
-  void OnKeyAdded(const std::string& session_id);
-  void OnKeyError(const std::string& session_id,
-                  MediaKeys::KeyError error_code,
-                  uint32_t system_code);
-  void OnKeyMessage(const std::string& session_id,
-                    const std::vector<uint8_t>& message,
-                    const GURL& destination_url);
-
-  CdmFactory* cdm_factory_;
-
-  blink::WebMediaPlayerEncryptedMediaClient* client_;
-
-  MediaPermission* media_permission_;
-
-  // The currently selected key system. Empty string means that no key system
-  // has been selected.
-  std::string current_key_system_;
-
-  // We assume all streams are from the same container, thus have the same
-  // init data type.
-  EmeInitDataType init_data_type_;
-
-  CdmContextReadyCB cdm_context_ready_cb_;
-
-  // Manages decryption keys and decrypts encrypted frames.
-  scoped_ptr<ProxyDecryptor> proxy_decryptor_;
-
-  DISALLOW_COPY_AND_ASSIGN(EncryptedMediaPlayerSupport);
-};
-
-}  // namespace media
-
-#endif  // MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_
diff --git a/media/blink/media_blink.gyp b/media/blink/media_blink.gyp
index 72eec89..ceff352 100644
--- a/media/blink/media_blink.gyp
+++ b/media/blink/media_blink.gyp
@@ -45,8 +45,6 @@
         'cdm_result_promise_helper.h',
         'cdm_session_adapter.cc',
         'cdm_session_adapter.h',
-        'encrypted_media_player_support.cc',
-        'encrypted_media_player_support.h',
         'interval_map.h',
         'key_system_config_selector.cc',
         'key_system_config_selector.h',
@@ -101,8 +99,6 @@
         }],
         ['OS=="android" and media_use_ffmpeg==0', {
           'sources!': [
-            'encrypted_media_player_support.cc',
-            'encrypted_media_player_support.h',
             'webmediaplayer_impl.cc',
             'webmediaplayer_impl.h',
           ],
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 2ce3c9e..8aade3a 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -130,7 +130,6 @@
     blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
     base::WeakPtr<WebMediaPlayerDelegate> delegate,
     scoped_ptr<RendererFactory> renderer_factory,
-    CdmFactory* cdm_factory,
     linked_ptr<UrlIndex> url_index,
     const WebMediaPlayerParams& params)
     : frame_(frame),
@@ -181,12 +180,6 @@
           compositor_task_runner_,
           BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
           BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
-      encrypted_media_support_(cdm_factory,
-                               encrypted_client,
-                               params.media_permission(),
-                               base::Bind(&WebMediaPlayerImpl::SetCdm,
-                                          AsWeakPtr(),
-                                          base::Bind(&IgnoreCdmAttached))),
       is_cdm_attached_(false),
 #if defined(OS_ANDROID)  // WMPI_CAST
       cast_impl_(this, client_, params.context_3d_cb()),
@@ -798,37 +791,6 @@
   return true;
 }
 
-WebMediaPlayer::MediaKeyException
-WebMediaPlayerImpl::generateKeyRequest(const WebString& key_system,
-                                       const unsigned char* init_data,
-                                       unsigned init_data_length) {
-  DCHECK(main_task_runner_->BelongsToCurrentThread());
-
-  return encrypted_media_support_.GenerateKeyRequest(
-      frame_, key_system, init_data, init_data_length);
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::addKey(
-    const WebString& key_system,
-    const unsigned char* key,
-    unsigned key_length,
-    const unsigned char* init_data,
-    unsigned init_data_length,
-    const WebString& session_id) {
-  DCHECK(main_task_runner_->BelongsToCurrentThread());
-
-  return encrypted_media_support_.AddKey(
-      key_system, key, key_length, init_data, init_data_length, session_id);
-}
-
-WebMediaPlayer::MediaKeyException WebMediaPlayerImpl::cancelKeyRequest(
-    const WebString& key_system,
-    const WebString& session_id) {
-  DCHECK(main_task_runner_->BelongsToCurrentThread());
-
-  return encrypted_media_support_.CancelKeyRequest(key_system, session_id);
-}
-
 void WebMediaPlayerImpl::setContentDecryptionModule(
     blink::WebContentDecryptionModule* cdm,
     blink::WebContentDecryptionModuleResult result) {
@@ -867,18 +829,15 @@
     const std::vector<uint8_t>& init_data) {
   DCHECK(init_data_type != EmeInitDataType::UNKNOWN);
 
-  // Do not fire "encrypted" event if encrypted media is not enabled.
-  // TODO(xhwang): Handle this in |client_|.
-  if (!blink::WebRuntimeFeatures::isPrefixedEncryptedMediaEnabled() &&
-      !blink::WebRuntimeFeatures::isEncryptedMediaEnabled()) {
+  // Do not fire the "encrypted" event if Encrypted Media is not enabled.
+  // EME may not be enabled on Android Jelly Bean.
+  if (!blink::WebRuntimeFeatures::isEncryptedMediaEnabled()) {
     return;
   }
 
   // TODO(xhwang): Update this UMA name.
   UMA_HISTOGRAM_COUNTS("Media.EME.NeedKey", 1);
 
-  encrypted_media_support_.SetInitDataType(init_data_type);
-
   encrypted_client_->encrypted(
       ConvertToWebInitDataType(init_data_type), init_data.data(),
       base::saturated_cast<unsigned int>(init_data.size()));
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
index a9de87d..cfdc7907 100644
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -18,14 +18,12 @@
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread.h"
 #include "build/build_config.h"
-#include "media/base/cdm_factory.h"
 #include "media/base/pipeline.h"
 #include "media/base/renderer_factory.h"
 #include "media/base/surface_manager.h"
 #include "media/base/text_track.h"
 #include "media/blink/buffered_data_source.h"
 #include "media/blink/buffered_data_source_host_impl.h"
-#include "media/blink/encrypted_media_player_support.h"
 #include "media/blink/media_blink_export.h"
 #include "media/blink/multibuffer_data_source.h"
 #include "media/blink/video_frame_compositor.h"
@@ -86,7 +84,6 @@
       blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
       base::WeakPtr<WebMediaPlayerDelegate> delegate,
       scoped_ptr<RendererFactory> renderer_factory,
-      CdmFactory* cdm_factory,
       linked_ptr<UrlIndex> url_index,
       const WebMediaPlayerParams& params);
   ~WebMediaPlayerImpl() override;
@@ -161,22 +158,6 @@
 
   blink::WebAudioSourceProvider* audioSourceProvider() override;
 
-  MediaKeyException generateKeyRequest(
-      const blink::WebString& key_system,
-      const unsigned char* init_data,
-      unsigned init_data_length) override;
-
-  MediaKeyException addKey(const blink::WebString& key_system,
-                           const unsigned char* key,
-                           unsigned key_length,
-                           const unsigned char* init_data,
-                           unsigned init_data_length,
-                           const blink::WebString& session_id) override;
-
-  MediaKeyException cancelKeyRequest(
-      const blink::WebString& key_system,
-      const blink::WebString& session_id) override;
-
   void setContentDecryptionModule(
       blink::WebContentDecryptionModule* cdm,
       blink::WebContentDecryptionModuleResult result) override;
@@ -451,8 +432,6 @@
   // playback.
   scoped_ptr<cc_blink::WebLayerImpl> video_weblayer_;
 
-  EncryptedMediaPlayerSupport encrypted_media_support_;
-
   scoped_ptr<blink::WebContentDecryptionModuleResult> set_cdm_result_;
 
   // Whether a CDM has been successfully attached.
diff --git a/media/blink/webmediaplayer_params.cc b/media/blink/webmediaplayer_params.cc
index 59e9b211..28915cd 100644
--- a/media/blink/webmediaplayer_params.cc
+++ b/media/blink/webmediaplayer_params.cc
@@ -20,7 +20,6 @@
     const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
     const Context3DCB& context_3d_cb,
     const AdjustAllocatedMemoryCB& adjust_allocated_memory_cb,
-    MediaPermission* media_permission,
     blink::WebContentDecryptionModule* initial_cdm,
     SurfaceManager* surface_manager,
     blink::WebMediaSession* media_session)
@@ -32,7 +31,6 @@
       compositor_task_runner_(compositor_task_runner),
       context_3d_cb_(context_3d_cb),
       adjust_allocated_memory_cb_(adjust_allocated_memory_cb),
-      media_permission_(media_permission),
       initial_cdm_(initial_cdm),
       surface_manager_(surface_manager),
       media_session_(media_session) {}
diff --git a/media/blink/webmediaplayer_params.h b/media/blink/webmediaplayer_params.h
index 0c728da..deb868f 100644
--- a/media/blink/webmediaplayer_params.h
+++ b/media/blink/webmediaplayer_params.h
@@ -28,7 +28,6 @@
 
 class RestartableAudioRendererSink;
 class MediaLog;
-class MediaPermission;
 class SurfaceManager;
 
 // Holds parameters for constructing WebMediaPlayerImpl without having
@@ -56,7 +55,6 @@
       const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
       const Context3DCB& context_3d,
       const AdjustAllocatedMemoryCB& adjust_allocated_memory_cb,
-      MediaPermission* media_permission,
       blink::WebContentDecryptionModule* initial_cdm,
       SurfaceManager* surface_manager,
       blink::WebMediaSession* media_session);
@@ -89,8 +87,6 @@
 
   Context3DCB context_3d_cb() const { return context_3d_cb_; }
 
-  MediaPermission* media_permission() const { return media_permission_; }
-
   blink::WebContentDecryptionModule* initial_cdm() const {
     return initial_cdm_;
   }
@@ -113,8 +109,6 @@
   Context3DCB context_3d_cb_;
   AdjustAllocatedMemoryCB adjust_allocated_memory_cb_;
 
-  // TODO(xhwang): Remove after prefixed EME API support is removed.
-  MediaPermission* media_permission_;
   blink::WebContentDecryptionModule* initial_cdm_;
   SurfaceManager* surface_manager_;
 
diff --git a/media/blink/webmediaplayer_util.cc b/media/blink/webmediaplayer_util.cc
index 7581bc3..8b4f368 100644
--- a/media/blink/webmediaplayer_util.cc
+++ b/media/blink/webmediaplayer_util.cc
@@ -12,22 +12,10 @@
 #include "base/metrics/histogram.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/media_client.h"
-#include "media/base/media_keys.h"
 #include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h"
 
 namespace media {
 
-// Compile asserts shared by all platforms.
-
-#define STATIC_ASSERT_MATCHING_ENUM(name)                                    \
-  static_assert(static_cast<int>(blink::WebMediaPlayerEncryptedMediaClient:: \
-                                     MediaKeyErrorCode##name) ==             \
-                    static_cast<int>(MediaKeys::k##name##Error),             \
-                "mismatching enum values: " #name)
-STATIC_ASSERT_MATCHING_ENUM(Unknown);
-STATIC_ASSERT_MATCHING_ENUM(Client);
-#undef STATIC_ASSERT_MATCHING_ENUM
-
 blink::WebTimeRanges ConvertToWebTimeRanges(
     const Ranges<base::TimeDelta>& ranges) {
   blink::WebTimeRanges result(ranges.size());
diff --git a/media/blink/webmediaplayer_util.h b/media/blink/webmediaplayer_util.h
index 7f4e7e96..cb5c69b 100644
--- a/media/blink/webmediaplayer_util.h
+++ b/media/blink/webmediaplayer_util.h
@@ -33,9 +33,11 @@
 // Record a RAPPOR metric for the origin of an HLS playback.
 void MEDIA_BLINK_EXPORT RecordOriginOfHLSPlayback(const GURL& origin_url);
 
-// Convert Initialization Data Types.
+// TODO(ddorwin): Move this function to an EME-specific file.
+// We may also want to move the next one and pass Blink types to WMPI.
 EmeInitDataType MEDIA_BLINK_EXPORT
 ConvertToEmeInitDataType(blink::WebEncryptedMediaInitDataType init_data_type);
+
 blink::WebEncryptedMediaInitDataType MEDIA_BLINK_EXPORT
 ConvertToWebInitDataType(EmeInitDataType init_data_type);
 
diff --git a/media/cdm/proxy_decryptor.cc b/media/cdm/proxy_decryptor.cc
deleted file mode 100644
index 8d0085b5..0000000
--- a/media/cdm/proxy_decryptor.cc
+++ /dev/null
@@ -1,415 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/cdm/proxy_decryptor.h"
-
-#include <stddef.h>
-#include <cstring>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/strings/string_util.h"
-#include "build/build_config.h"
-#include "media/base/cdm_callback_promise.h"
-#include "media/base/cdm_config.h"
-#include "media/base/cdm_factory.h"
-#include "media/base/cdm_key_information.h"
-#include "media/base/key_systems.h"
-#include "media/base/media_permission.h"
-#include "media/cdm/json_web_key.h"
-#include "media/cdm/key_system_names.h"
-
-namespace media {
-
-// Special system code to signal a closed persistent session in a SessionError()
-// call. This is needed because there is no SessionClosed() call in the prefixed
-// EME API.
-const int kSessionClosedSystemCode = 29127;
-
-ProxyDecryptor::PendingGenerateKeyRequestData::PendingGenerateKeyRequestData(
-    EmeInitDataType init_data_type,
-    const std::vector<uint8_t>& init_data)
-    : init_data_type(init_data_type), init_data(init_data) {}
-
-ProxyDecryptor::PendingGenerateKeyRequestData::
-    ~PendingGenerateKeyRequestData() {
-}
-
-ProxyDecryptor::ProxyDecryptor(MediaPermission* media_permission,
-                               bool use_hw_secure_codecs,
-                               const KeyAddedCB& key_added_cb,
-                               const KeyErrorCB& key_error_cb,
-                               const KeyMessageCB& key_message_cb)
-    : is_creating_cdm_(false),
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
-      media_permission_(media_permission),
-#endif
-      use_hw_secure_codecs_(use_hw_secure_codecs),
-      key_added_cb_(key_added_cb),
-      key_error_cb_(key_error_cb),
-      key_message_cb_(key_message_cb),
-      is_clear_key_(false),
-      weak_ptr_factory_(this) {
-  DCHECK(media_permission);
-  DCHECK(!key_added_cb_.is_null());
-  DCHECK(!key_error_cb_.is_null());
-  DCHECK(!key_message_cb_.is_null());
-}
-
-ProxyDecryptor::~ProxyDecryptor() {
-  // Destroy the decryptor explicitly before destroying the plugin.
-  media_keys_ = nullptr;
-}
-
-void ProxyDecryptor::CreateCdm(CdmFactory* cdm_factory,
-                               const std::string& key_system,
-                               const GURL& security_origin,
-                               const CdmContextReadyCB& cdm_context_ready_cb) {
-  DVLOG(1) << __FUNCTION__ << ": key_system = " << key_system;
-  DCHECK(!is_creating_cdm_);
-  DCHECK(!media_keys_);
-
-  // TODO(sandersd): Trigger permissions check here and use it to determine
-  // distinctive identifier support, instead of always requiring the
-  // permission. http://crbug.com/455271
-  CdmConfig cdm_config;
-  cdm_config.allow_distinctive_identifier = true;
-  cdm_config.allow_persistent_state = true;
-  cdm_config.use_hw_secure_codecs = use_hw_secure_codecs_;
-
-  is_creating_cdm_ = true;
-
-  base::WeakPtr<ProxyDecryptor> weak_this = weak_ptr_factory_.GetWeakPtr();
-  cdm_factory->Create(
-      key_system, security_origin, cdm_config,
-      base::Bind(&ProxyDecryptor::OnSessionMessage, weak_this),
-      base::Bind(&ProxyDecryptor::OnSessionClosed, weak_this),
-      base::Bind(&ProxyDecryptor::OnLegacySessionError, weak_this),
-      base::Bind(&ProxyDecryptor::OnSessionKeysChange, weak_this),
-      base::Bind(&ProxyDecryptor::OnSessionExpirationUpdate, weak_this),
-      base::Bind(&ProxyDecryptor::OnCdmCreated, weak_this, key_system,
-                 security_origin, cdm_context_ready_cb));
-}
-
-void ProxyDecryptor::OnCdmCreated(const std::string& key_system,
-                                  const GURL& security_origin,
-                                  const CdmContextReadyCB& cdm_context_ready_cb,
-                                  const scoped_refptr<MediaKeys>& cdm,
-                                  const std::string& /* error_message */) {
-  is_creating_cdm_ = false;
-
-  if (!cdm) {
-    cdm_context_ready_cb.Run(nullptr);
-  } else {
-    key_system_ = key_system;
-    security_origin_ = security_origin;
-    is_clear_key_ = IsClearKey(key_system) || IsExternalClearKey(key_system);
-    media_keys_ = cdm;
-
-    cdm_context_ready_cb.Run(media_keys_->GetCdmContext());
-  }
-
-  for (const auto& request : pending_requests_)
-    GenerateKeyRequestInternal(request->init_data_type, request->init_data);
-
-  pending_requests_.clear();
-}
-
-void ProxyDecryptor::GenerateKeyRequest(EmeInitDataType init_data_type,
-                                        const uint8_t* init_data,
-                                        int init_data_length) {
-  std::vector<uint8_t> init_data_vector(init_data,
-                                        init_data + init_data_length);
-
-  if (is_creating_cdm_) {
-    pending_requests_.push_back(
-        new PendingGenerateKeyRequestData(init_data_type, init_data_vector));
-    return;
-  }
-
-  GenerateKeyRequestInternal(init_data_type, init_data_vector);
-}
-
-// Returns true if |data| is prefixed with |header| and has data after the
-// |header|.
-static bool HasHeader(const std::vector<uint8_t>& data,
-                      const std::string& header) {
-  return data.size() > header.size() &&
-         std::equal(header.begin(), header.end(), data.begin());
-}
-
-// Removes the first |length| items from |data|.
-static void StripHeader(std::vector<uint8_t>& data, size_t length) {
-  data.erase(data.begin(), data.begin() + length);
-}
-
-void ProxyDecryptor::GenerateKeyRequestInternal(
-    EmeInitDataType init_data_type,
-    const std::vector<uint8_t>& init_data) {
-  DVLOG(1) << __FUNCTION__;
-  DCHECK(!is_creating_cdm_);
-
-  if (!media_keys_) {
-    OnLegacySessionError(std::string(), MediaKeys::NOT_SUPPORTED_ERROR, 0,
-                         "CDM creation failed.");
-    return;
-  }
-
-  const char kPrefixedApiPersistentSessionHeader[] = "PERSISTENT|";
-  const char kPrefixedApiLoadSessionHeader[] = "LOAD_SESSION|";
-
-  SessionCreationType session_creation_type = TemporarySession;
-  std::vector<uint8_t> stripped_init_data = init_data;
-  if (HasHeader(init_data, kPrefixedApiLoadSessionHeader)) {
-    session_creation_type = LoadSession;
-    StripHeader(stripped_init_data, strlen(kPrefixedApiLoadSessionHeader));
-  } else if (HasHeader(init_data, kPrefixedApiPersistentSessionHeader)) {
-    session_creation_type = PersistentSession;
-    StripHeader(stripped_init_data,
-                strlen(kPrefixedApiPersistentSessionHeader));
-  }
-
-  scoped_ptr<NewSessionCdmPromise> promise(new CdmCallbackPromise<std::string>(
-      base::Bind(&ProxyDecryptor::SetSessionId, weak_ptr_factory_.GetWeakPtr(),
-                 session_creation_type),
-      base::Bind(&ProxyDecryptor::OnLegacySessionError,
-                 weak_ptr_factory_.GetWeakPtr(),
-                 std::string())));  // No session id until created.
-
-  if (session_creation_type == LoadSession) {
-    media_keys_->LoadSession(
-        MediaKeys::PERSISTENT_LICENSE_SESSION,
-        std::string(reinterpret_cast<const char*>(stripped_init_data.data()),
-                    stripped_init_data.size()),
-        std::move(promise));
-    return;
-  }
-
-  MediaKeys::SessionType session_type =
-      session_creation_type == PersistentSession
-          ? MediaKeys::PERSISTENT_LICENSE_SESSION
-          : MediaKeys::TEMPORARY_SESSION;
-
-  // No permission required when AesDecryptor is used or when the key system is
-  // external clear key.
-  DCHECK(!key_system_.empty());
-  if (CanUseAesDecryptor(key_system_) || IsExternalClearKey(key_system_)) {
-    OnPermissionStatus(session_type, init_data_type, stripped_init_data,
-                       std::move(promise), true /* granted */);
-    return;
-  }
-
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
-  media_permission_->RequestPermission(
-      MediaPermission::PROTECTED_MEDIA_IDENTIFIER, security_origin_,
-      base::Bind(&ProxyDecryptor::OnPermissionStatus,
-                 weak_ptr_factory_.GetWeakPtr(), session_type, init_data_type,
-                 stripped_init_data, base::Passed(&promise)));
-#else
-  OnPermissionStatus(session_type, init_data_type, stripped_init_data,
-                     std::move(promise), true /* granted */);
-#endif
-}
-
-void ProxyDecryptor::OnPermissionStatus(
-    MediaKeys::SessionType session_type,
-    EmeInitDataType init_data_type,
-    const std::vector<uint8_t>& init_data,
-    scoped_ptr<NewSessionCdmPromise> promise,
-    bool granted) {
-  // ProxyDecryptor is only used by Prefixed EME, where RequestPermission() is
-  // only for triggering the permission UI. Later CheckPermission() will be
-  // called (e.g. in PlatformVerificationFlow on ChromeOS; in BrowserCdmManager
-  // on Android) and the permission status will be evaluated then.
-  DVLOG_IF(1, !granted) << "Permission request rejected.";
-
-  media_keys_->CreateSessionAndGenerateRequest(session_type, init_data_type,
-                                               init_data, std::move(promise));
-}
-
-void ProxyDecryptor::AddKey(const uint8_t* key,
-                            int key_length,
-                            const uint8_t* init_data,
-                            int init_data_length,
-                            const std::string& session_id) {
-  DVLOG(1) << "AddKey()";
-
-  if (!media_keys_) {
-    OnLegacySessionError(std::string(), MediaKeys::INVALID_STATE_ERROR, 0,
-                         "CDM is not available.");
-    return;
-  }
-
-  // In the prefixed API, the session parameter provided to addKey() is
-  // optional, so use the single existing session if it exists.
-  std::string new_session_id(session_id);
-  if (new_session_id.empty()) {
-    if (active_sessions_.size() == 1) {
-      base::hash_map<std::string, bool>::iterator it = active_sessions_.begin();
-      new_session_id = it->first;
-    } else {
-      OnLegacySessionError(std::string(), MediaKeys::NOT_SUPPORTED_ERROR, 0,
-                           "SessionId not specified.");
-      return;
-    }
-  }
-
-  scoped_ptr<SimpleCdmPromise> promise(new CdmCallbackPromise<>(
-      base::Bind(&ProxyDecryptor::GenerateKeyAdded,
-                 weak_ptr_factory_.GetWeakPtr(), session_id),
-      base::Bind(&ProxyDecryptor::OnLegacySessionError,
-                 weak_ptr_factory_.GetWeakPtr(), session_id)));
-
-  // EME WD spec only supports a single array passed to the CDM. For
-  // Clear Key using v0.1b, both arrays are used (|init_data| is key_id).
-  // Since the EME WD spec supports the key as a JSON Web Key,
-  // convert the 2 arrays to a JWK and pass it as the single array.
-  if (is_clear_key_) {
-    // Decryptor doesn't support empty key ID (see http://crbug.com/123265).
-    // So ensure a non-empty value is passed.
-    if (!init_data) {
-      static const uint8_t kDummyInitData[1] = {0};
-      init_data = kDummyInitData;
-      init_data_length = arraysize(kDummyInitData);
-    }
-
-    std::string jwk =
-        GenerateJWKSet(key, key_length, init_data, init_data_length);
-    DCHECK(!jwk.empty());
-    media_keys_->UpdateSession(new_session_id,
-                               std::vector<uint8_t>(jwk.begin(), jwk.end()),
-                               std::move(promise));
-    return;
-  }
-
-  media_keys_->UpdateSession(new_session_id,
-                             std::vector<uint8_t>(key, key + key_length),
-                             std::move(promise));
-}
-
-void ProxyDecryptor::CancelKeyRequest(const std::string& session_id) {
-  DVLOG(1) << "CancelKeyRequest()";
-
-  if (!media_keys_) {
-    OnLegacySessionError(std::string(), MediaKeys::INVALID_STATE_ERROR, 0,
-                         "CDM is not available.");
-    return;
-  }
-
-  scoped_ptr<SimpleCdmPromise> promise(new CdmCallbackPromise<>(
-      base::Bind(&ProxyDecryptor::OnSessionClosed,
-                 weak_ptr_factory_.GetWeakPtr(), session_id),
-      base::Bind(&ProxyDecryptor::OnLegacySessionError,
-                 weak_ptr_factory_.GetWeakPtr(), session_id)));
-  media_keys_->RemoveSession(session_id, std::move(promise));
-}
-
-void ProxyDecryptor::OnSessionMessage(const std::string& session_id,
-                                      MediaKeys::MessageType message_type,
-                                      const std::vector<uint8_t>& message,
-                                      const GURL& legacy_destination_url) {
-  // Assumes that OnSessionCreated() has been called before this.
-
-  // For ClearKey, convert the message from JSON into just passing the key
-  // as the message. If unable to extract the key, return the message unchanged.
-  if (is_clear_key_) {
-    std::vector<uint8_t> key;
-    if (ExtractFirstKeyIdFromLicenseRequest(message, &key)) {
-      key_message_cb_.Run(session_id, key, legacy_destination_url);
-      return;
-    }
-  }
-
-  key_message_cb_.Run(session_id, message, legacy_destination_url);
-}
-
-void ProxyDecryptor::OnSessionKeysChange(const std::string& session_id,
-                                         bool has_additional_usable_key,
-                                         CdmKeysInfo keys_info) {
-  // EME v0.1b doesn't support this event.
-}
-
-void ProxyDecryptor::OnSessionExpirationUpdate(
-    const std::string& session_id,
-    const base::Time& new_expiry_time) {
-  // EME v0.1b doesn't support this event.
-}
-
-void ProxyDecryptor::GenerateKeyAdded(const std::string& session_id) {
-  // EME WD doesn't support this event, but it is needed for EME v0.1b.
-  key_added_cb_.Run(session_id);
-}
-
-void ProxyDecryptor::OnSessionClosed(const std::string& session_id) {
-  base::hash_map<std::string, bool>::iterator it =
-      active_sessions_.find(session_id);
-
-  // Latest EME spec separates closing a session ("allows an application to
-  // indicate that it no longer needs the session") and actually closing the
-  // session (done by the CDM at any point "such as in response to a close()
-  // call, when the session is no longer needed, or when system resources are
-  // lost.") Thus the CDM may cause 2 close() events -- one to resolve the
-  // close() promise, and a second to actually close the session. Prefixed EME
-  // only expects 1 close event, so drop the second (and subsequent) events.
-  // However, this means we can't tell if the CDM is generating spurious close()
-  // events.
-  if (it == active_sessions_.end())
-    return;
-
-  if (it->second) {
-    OnLegacySessionError(session_id, MediaKeys::NOT_SUPPORTED_ERROR,
-                         kSessionClosedSystemCode,
-                         "Do not close persistent sessions.");
-  }
-  active_sessions_.erase(it);
-}
-
-void ProxyDecryptor::OnLegacySessionError(const std::string& session_id,
-                                          MediaKeys::Exception exception_code,
-                                          uint32_t system_code,
-                                          const std::string& error_message) {
-  // Convert |error_name| back to MediaKeys::KeyError if possible. Prefixed
-  // EME has different error message, so all the specific error events will
-  // get lost.
-  MediaKeys::KeyError error_code;
-  switch (exception_code) {
-    case MediaKeys::CLIENT_ERROR:
-      error_code = MediaKeys::kClientError;
-      break;
-    case MediaKeys::OUTPUT_ERROR:
-      error_code = MediaKeys::kOutputError;
-      break;
-    default:
-      // This will include all other CDM4 errors and any error generated
-      // by CDM5 or later.
-      error_code = MediaKeys::kUnknownError;
-      break;
-  }
-  key_error_cb_.Run(session_id, error_code, system_code);
-}
-
-void ProxyDecryptor::SetSessionId(SessionCreationType session_type,
-                                  const std::string& session_id) {
-  // LoadSession() returns empty |session_id| if the session is not found, so
-  // convert this into an error.
-  if (session_type == LoadSession && session_id.empty()) {
-    OnLegacySessionError(session_id, MediaKeys::INVALID_ACCESS_ERROR, 0,
-                         "Incorrect session id specified for LoadSession().");
-    return;
-  }
-
-  // Loaded sessions are considered persistent.
-  bool is_persistent =
-      session_type == PersistentSession || session_type == LoadSession;
-  active_sessions_.insert(std::make_pair(session_id, is_persistent));
-
-  // For LoadSession(), generate the KeyAdded event.
-  if (session_type == LoadSession)
-    GenerateKeyAdded(session_id);
-}
-
-}  // namespace media
diff --git a/media/cdm/proxy_decryptor.h b/media/cdm/proxy_decryptor.h
deleted file mode 100644
index ca0d36d..0000000
--- a/media/cdm/proxy_decryptor.h
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MEDIA_CDM_PROXY_DECRYPTOR_H_
-#define MEDIA_CDM_PROXY_DECRYPTOR_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/containers/hash_tables.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
-#include "build/build_config.h"
-#include "media/base/cdm_context.h"
-#include "media/base/decryptor.h"
-#include "media/base/eme_constants.h"
-#include "media/base/media_export.h"
-#include "media/base/media_keys.h"
-#include "url/gurl.h"
-
-namespace media {
-
-class CdmFactory;
-class MediaPermission;
-
-// ProxyDecryptor is for EME v0.1b only. It should not be used for the WD API.
-// A decryptor proxy that creates a real decryptor object on demand and
-// forwards decryptor calls to it.
-//
-// TODO(xhwang): Currently we don't support run-time switching among decryptor
-// objects. Fix this when needed.
-// TODO(xhwang): The ProxyDecryptor is not a Decryptor. Find a better name!
-class MEDIA_EXPORT ProxyDecryptor {
- public:
-  // Callback to provide a CdmContext when the CDM creation is finished.
-  // If CDM creation failed, |cdm_context| will be null.
-  typedef base::Callback<void(CdmContext* cdm_context)> CdmContextReadyCB;
-
-  // These are similar to the callbacks in media_keys.h, but pass back the
-  // session ID rather than the internal session ID.
-  typedef base::Callback<void(const std::string& session_id)> KeyAddedCB;
-  typedef base::Callback<void(const std::string& session_id,
-                              MediaKeys::KeyError error_code,
-                              uint32_t system_code)> KeyErrorCB;
-  typedef base::Callback<void(const std::string& session_id,
-                              const std::vector<uint8_t>& message,
-                              const GURL& destination_url)> KeyMessageCB;
-
-  ProxyDecryptor(MediaPermission* media_permission,
-                 bool use_hw_secure_codecs,
-                 const KeyAddedCB& key_added_cb,
-                 const KeyErrorCB& key_error_cb,
-                 const KeyMessageCB& key_message_cb);
-  virtual ~ProxyDecryptor();
-
-  // Creates the CDM and fires |cdm_created_cb|. This method should only be
-  // called once. If CDM creation failed, all following GenerateKeyRequest,
-  // AddKey and CancelKeyRequest calls will result in a KeyError.
-  void CreateCdm(CdmFactory* cdm_factory,
-                 const std::string& key_system,
-                 const GURL& security_origin,
-                 const CdmContextReadyCB& cdm_context_ready_cb);
-
-  // May only be called after CreateCDM().
-  void GenerateKeyRequest(EmeInitDataType init_data_type,
-                          const uint8_t* init_data,
-                          int init_data_length);
-  void AddKey(const uint8_t* key,
-              int key_length,
-              const uint8_t* init_data,
-              int init_data_length,
-              const std::string& session_id);
-  void CancelKeyRequest(const std::string& session_id);
-
- private:
-  // Callback for CreateCdm().
-  void OnCdmCreated(const std::string& key_system,
-                    const GURL& security_origin,
-                    const CdmContextReadyCB& cdm_context_ready_cb,
-                    const scoped_refptr<MediaKeys>& cdm,
-                    const std::string& error_message);
-
-  void GenerateKeyRequestInternal(EmeInitDataType init_data_type,
-                                  const std::vector<uint8_t>& init_data);
-
-  // Callbacks for firing session events.
-  void OnSessionMessage(const std::string& session_id,
-                        MediaKeys::MessageType message_type,
-                        const std::vector<uint8_t>& message,
-                        const GURL& legacy_destination_url);
-  void OnSessionKeysChange(const std::string& session_id,
-                           bool has_additional_usable_key,
-                           CdmKeysInfo keys_info);
-  void OnSessionExpirationUpdate(const std::string& session_id,
-                                 const base::Time& new_expiry_time);
-  void GenerateKeyAdded(const std::string& session_id);
-  void OnSessionClosed(const std::string& session_id);
-  void OnLegacySessionError(const std::string& session_id,
-                            MediaKeys::Exception exception_code,
-                            uint32_t system_code,
-                            const std::string& error_message);
-
-  // Callback for permission request.
-  void OnPermissionStatus(MediaKeys::SessionType session_type,
-                          EmeInitDataType init_data_type,
-                          const std::vector<uint8_t>& init_data,
-                          scoped_ptr<NewSessionCdmPromise> promise,
-                          bool granted);
-
-  enum SessionCreationType {
-    TemporarySession,
-    PersistentSession,
-    LoadSession
-  };
-
-  // Called when a session is actually created or loaded.
-  void SetSessionId(SessionCreationType session_type,
-                    const std::string& session_id);
-
-  struct PendingGenerateKeyRequestData {
-    PendingGenerateKeyRequestData(EmeInitDataType init_data_type,
-                                  const std::vector<uint8_t>& init_data);
-    ~PendingGenerateKeyRequestData();
-
-    const EmeInitDataType init_data_type;
-    const std::vector<uint8_t> init_data;
-  };
-
-  bool is_creating_cdm_;
-
-  // The real MediaKeys that manages key operations for the ProxyDecryptor.
-  scoped_refptr<MediaKeys> media_keys_;
-
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
-  MediaPermission* media_permission_;
-#endif
-
-  bool use_hw_secure_codecs_;
-
-  // Callbacks for firing key events.
-  KeyAddedCB key_added_cb_;
-  KeyErrorCB key_error_cb_;
-  KeyMessageCB key_message_cb_;
-
-  std::string key_system_;
-  GURL security_origin_;
-
-  // Keep track of both persistent and non-persistent sessions.
-  base::hash_map<std::string, bool> active_sessions_;
-
-  bool is_clear_key_;
-
-  ScopedVector<PendingGenerateKeyRequestData> pending_requests_;
-
-  // NOTE: Weak pointers must be invalidated before all other member variables.
-  base::WeakPtrFactory<ProxyDecryptor> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(ProxyDecryptor);
-};
-
-}  // namespace media
-
-#endif  // MEDIA_CDM_PROXY_DECRYPTOR_H_
diff --git a/media/media.gyp b/media/media.gyp
index c968fcd..b6f34aa 100644
--- a/media/media.gyp
+++ b/media/media.gyp
@@ -322,8 +322,6 @@
         'base/key_system_info.h',
         'base/key_systems.cc',
         'base/key_systems.h',
-        'base/key_systems_support_uma.cc',
-        'base/key_systems_support_uma.h',
         'base/keyboard_event_counter.cc',
         'base/keyboard_event_counter.h',
         'base/loopback_audio_converter.cc',
@@ -527,8 +525,6 @@
         'cdm/key_system_names.h',
         'cdm/player_tracker_impl.cc',
         'cdm/player_tracker_impl.h',
-        'cdm/proxy_decryptor.cc',
-        'cdm/proxy_decryptor.h',
         'cdm/supported_cdm_versions.cc',
         'cdm/supported_cdm_versions.h',
         'ffmpeg/ffmpeg_common.cc',
diff --git a/media/mojo/interfaces/content_decryption_module.mojom b/media/mojo/interfaces/content_decryption_module.mojom
index c55c82a..cf25e19 100644
--- a/media/mojo/interfaces/content_decryption_module.mojom
+++ b/media/mojo/interfaces/content_decryption_module.mojom
@@ -8,7 +8,6 @@
 
 // Transport layer of media::MediaKeys::Exception (see media/base/media_keys.h).
 // This is used for ContentDecryptionModule (CDM) promise rejections.
-// Note: This can also be used for session errors in prefixed API.
 enum CdmException {
   NOT_SUPPORTED_ERROR,
   INVALID_STATE_ERROR,
diff --git a/media/test/data/eme_player.html b/media/test/data/eme_player.html
index d8079ce..2d44874 100644
--- a/media/test/data/eme_player.html
+++ b/media/test/data/eme_player.html
@@ -22,10 +22,6 @@
       <td><label for='mediaTypeList'>Media type:</label></td>
       <td><select id='mediaTypeList'></select></td>
     </tr>
-    <tr title='URL param usePrefixedEME=1|0'>
-      <td><label for='usePrefixedEME'>EME API version:</label></td>
-      <td><select id='usePrefixedEME'></select></td>
-    </tr>
     <tr title='URL param useMSE=1|0'>
       <td><label for='useMSE'>Load media by:</label></td>
       <td>
@@ -84,8 +80,6 @@
       if (!testConfig.sessionToLoad) {
         // keyadded may be fired around the start of playback; check for it
         // after a delay to avoid timing issues.
-        if (testConfig.usePrefixedEME && !video.receivedKeyAdded)
-          Utils.failTest('Key added event not received.');
         if (testConfig.keySystem == EXTERNAL_CLEARKEY &&
             !video.receivedRenewalMessage)
           Utils.failTest('license-renewal message not received.');
diff --git a/media/test/data/eme_player_js/app_loader.js b/media/test/data/eme_player_js/app_loader.js
index f4a3e74..cd85d52e 100644
--- a/media/test/data/eme_player_js/app_loader.js
+++ b/media/test/data/eme_player_js/app_loader.js
@@ -16,9 +16,7 @@
 addScriptTag('fps_observer.js');
 addScriptTag('media_source_utils.js');
 addScriptTag('player_utils.js');
-addScriptTag('prefixed_clearkey_player.js');
 addScriptTag('clearkey_player.js');
 addScriptTag('widevine_player.js');
-addScriptTag('prefixed_widevine_player.js');
 addScriptTag('file_io_test_player.js');
 addScriptTag('eme_app.js');
diff --git a/media/test/data/eme_player_js/clearkey_player.js b/media/test/data/eme_player_js/clearkey_player.js
index 0ee2404..369a6ab 100644
--- a/media/test/data/eme_player_js/clearkey_player.js
+++ b/media/test/data/eme_player_js/clearkey_player.js
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// ClearKeyPlayer responsible for playing media using Clear Key key system and
-// the unprefixed version of EME.
+// ClearKeyPlayer responsible for playing media using Clear Key key system.
 function ClearKeyPlayer(video, testConfig) {
   this.video = video;
   this.testConfig = testConfig;
diff --git a/media/test/data/eme_player_js/eme_app.js b/media/test/data/eme_player_js/eme_app.js
index bf07e72a..f60b643 100644
--- a/media/test/data/eme_player_js/eme_app.js
+++ b/media/test/data/eme_player_js/eme_app.js
@@ -54,8 +54,6 @@
   // Update document lists with test configuration values.
   Utils.addOptions(KEYSYSTEM_ELEMENT_ID, KEY_SYSTEMS);
   Utils.addOptions(MEDIA_TYPE_ELEMENT_ID, MEDIA_TYPES);
-  Utils.addOptions(USE_PREFIXED_EME_ID, EME_VERSIONS_OPTIONS,
-                   EME_DISABLED_OPTIONS);
   document.getElementById(MEDIA_FILE_ELEMENT_ID).value =
       testConfig.mediaFile || DEFAULT_MEDIA_FILE;
   document.getElementById(LICENSE_SERVER_ELEMENT_ID).value =
@@ -65,8 +63,6 @@
   if (testConfig.mediaType)
     Utils.ensureOptionInList(MEDIA_TYPE_ELEMENT_ID, testConfig.mediaType);
   document.getElementById(USE_MSE_ELEMENT_ID).value = testConfig.useMSE;
-  if (testConfig.usePrefixedEME)
-    document.getElementById(USE_PREFIXED_EME_ID).value = EME_PREFIXED_VERSION;
 };
 
 EMEApp.prototype.updateTestConfig = function() {
@@ -79,9 +75,6 @@
       document.getElementById(MEDIA_TYPE_ELEMENT_ID).value;
   this.testConfig_.useMSE =
       document.getElementById(USE_MSE_ELEMENT_ID).value == 'true';
-  this.testConfig_.usePrefixedEME = (
-      document.getElementById(USE_PREFIXED_EME_ID).value ==
-      EME_PREFIXED_VERSION);
   this.testConfig_.licenseServerURL =
       document.getElementById(LICENSE_SERVER_ELEMENT_ID).value;
 };
diff --git a/media/test/data/eme_player_js/file_io_test_player.js b/media/test/data/eme_player_js/file_io_test_player.js
index 5136e7d..fb0d025e 100644
--- a/media/test/data/eme_player_js/file_io_test_player.js
+++ b/media/test/data/eme_player_js/file_io_test_player.js
@@ -15,9 +15,7 @@
 
 FileIOTestPlayer.prototype.registerEventListeners = function() {
   // Returns a promise.
-  return PlayerUtils.registerEMEEventListeners(this).then(function(result) {
-    return PlayerUtils.registerPrefixedEMEEventListeners(this);
-  });
+  return PlayerUtils.registerEMEEventListeners(this);
 };
 
 handleMessage = function(message) {
@@ -38,8 +36,4 @@
   }
 };
 
-// Check message for prefixed API.
-FileIOTestPlayer.prototype.onWebkitKeyMessage = handleMessage;
-
-// Check message for unprefixed API.
 FileIOTestPlayer.prototype.onMessage = handleMessage;
diff --git a/media/test/data/eme_player_js/globals.js b/media/test/data/eme_player_js/globals.js
index 5317d27..e13539c 100644
--- a/media/test/data/eme_player_js/globals.js
+++ b/media/test/data/eme_player_js/globals.js
@@ -6,7 +6,7 @@
 
 // Renewal message header. External Clear Key implementation returns this as
 // part of renewal messages.
-var PREFIXED_EME_RENEWAL_MESSAGE_HEADER = 'RENEWAL';
+var EME_RENEWAL_MESSAGE_HEADER = 'RENEWAL';
 
 // Default key used to encrypt many media files used in browser tests.
 var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b,
@@ -28,21 +28,16 @@
 var EME_UPDATE_FAILED = 'EME_UPDATE_FAILED';
 var EME_ERROR_EVENT = 'EME_ERROR_EVENT';
 var EME_MESSAGE_UNEXPECTED_TYPE = 'EME_MESSAGE_UNEXPECTED_TYPE';
-var PREFIXED_EME_RENEWAL_MISSING_HEADER = 'PREFIXED_EME_RENEWAL_MISSING_HEADER';
-var PREFIXED_EME_ERROR_EVENT = 'PREFIXED_EME_ERROR_EVENT';
+var EME_RENEWAL_MISSING_HEADER = 'EME_RENEWAL_MISSING_HEADER';
 
 // Headers used when testing file I/O.
 var FILE_IO_TEST_RESULT_HEADER = 'FILEIOTESTRESULT';
-var PREFIXED_EME_API_LOAD_SESSION_HEADER = 'LOAD_SESSION|';
 
 // Available EME key systems to use.
-var PREFIXED_CLEARKEY = 'webkit-org.w3.clearkey';
 var CLEARKEY = 'org.w3.clearkey';
 var EXTERNAL_CLEARKEY = 'org.chromium.externalclearkey';
 var WIDEVINE_KEYSYSTEM = 'com.widevine.alpha';
 var FILE_IO_TEST_KEYSYSTEM = 'org.chromium.externalclearkey.fileiotest';
-var EME_PREFIXED_VERSION = 'Prefixed EME (v 0.1b)';
-var EME_UNPREFIXED_VERSION = 'Unprefixed EME (Working draft)';
 
 // Key system name:value map to show on the document page.
 var KEY_SYSTEMS = {
@@ -60,17 +55,6 @@
   'MP4 - Audio Only': 'audio/mp4; codecs="mp4a.40.2"'
 };
 
-// Update the EME versions list by checking runtime support by the browser.
-var EME_VERSIONS_OPTIONS = {};
-EME_VERSIONS_OPTIONS[EME_UNPREFIXED_VERSION] = EME_UNPREFIXED_VERSION;
-EME_VERSIONS_OPTIONS[EME_PREFIXED_VERSION] = EME_PREFIXED_VERSION;
-
-var EME_DISABLED_OPTIONS = [];
-if (!document.createElement('video').webkitAddKey)
-  EME_DISABLED_OPTIONS.push(EME_PREFIXED_VERSION);
-if (!document.createElement('video').setMediaKeys)
-  EME_DISABLED_OPTIONS.push(EME_UNPREFIXED_VERSION);
-
 // Global document elements ID's.
 var VIDEO_ELEMENT_ID = 'video';
 var MEDIA_FILE_ELEMENT_ID = 'mediaFile';
@@ -78,7 +62,6 @@
 var KEYSYSTEM_ELEMENT_ID = 'keySystemList';
 var MEDIA_TYPE_ELEMENT_ID = 'mediaTypeList';
 var USE_MSE_ELEMENT_ID = 'useMSE';
-var USE_PREFIXED_EME_ID = 'usePrefixedEME';
 var USE_PLAY_TWICE_ELEMENT_ID = 'playTwice';
 
 // These variables get updated every second, so better to have global pointers.
diff --git a/media/test/data/eme_player_js/player_utils.js b/media/test/data/eme_player_js/player_utils.js
index 81332ca..85a3c96 100644
--- a/media/test/data/eme_player_js/player_utils.js
+++ b/media/test/data/eme_player_js/player_utils.js
@@ -38,8 +38,8 @@
   });
 };
 
-// Register the necessary event handlers needed when playing encrypted content
-// using the unprefixed API. Returns a promise that resolves to the player.
+// Register the necessary event handlers needed when playing encrypted content.
+// Returns a promise that resolves to the player.
 PlayerUtils.registerEMEEventListeners = function(player) {
   player.video.addEventListener('encrypted', function(message) {
 
@@ -119,59 +119,6 @@
       .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); });
 };
 
-// Register the necessary event handlers needed when playing encrypted content
-// using the prefixed API. Even though the prefixed API is all synchronous,
-// returns a promise that resolves to the player.
-PlayerUtils.registerPrefixedEMEEventListeners = function(player) {
- player.video.addEventListener('webkitneedkey', function(message) {
-    var initData = message.initData;
-    if (player.testConfig.sessionToLoad) {
-      Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad);
-      initData =
-          Utils.convertToUint8Array(PREFIXED_EME_API_LOAD_SESSION_HEADER +
-                                    player.testConfig.sessionToLoad);
-    }
-    Utils.timeLog(player.testConfig.keySystem +
-                  ' Generate key request, initData: ' +
-                  Utils.getHexString(initData));
-    try {
-      message.target.webkitGenerateKeyRequest(player.testConfig.keySystem,
-                                              initData);
-    } catch (e) {
-      Utils.failTest(e);
-    }
-  });
-
-  player.video.addEventListener('webkitkeyadded', function(message) {
-    Utils.timeLog('onWebkitKeyAdded', message);
-    message.target.receivedKeyAdded = true;
-  });
-
-  player.video.addEventListener('webkitkeyerror', function(error) {
-    Utils.timeLog('onWebkitKeyError',
-                  'KeySystem: ' + error.keySystem + ', sessionId: ' +
-                      error.sessionId + ', errorCode: ' + error.errorCode.code +
-                      ', systemCode: ' + error.systemCode);
-    Utils.failTest(error, PREFIXED_EME_ERROR_EVENT);
-  });
-
-  player.video.addEventListener('webkitkeymessage', function(message) {
-    Utils.timeLog('onWebkitKeyMessage', message);
-    message.target.receivedKeyMessage = true;
-    if (Utils.isRenewalMessagePrefixed(message.message)) {
-      Utils.timeLog('onWebkitKeyMessage - renewal', message);
-      message.target.receivedRenewalMessage = true;
-    }
-  });
-
-  // The prefixed API is all synchronous, so wrap the calls in a promise.
-  return new Promise(function(resolve, reject) {
-    PlayerUtils.registerDefaultEventListeners(player);
-    player.video.receivedKeyMessage = false;
-    resolve(player);
-  });
-};
-
 PlayerUtils.setVideoSource = function(player) {
   if (player.testConfig.useMSE) {
     Utils.timeLog('Loading media using MSE.');
@@ -197,31 +144,17 @@
 
 // Return the appropriate player based on test configuration.
 PlayerUtils.createPlayer = function(video, testConfig) {
-  // Update keySystem if using prefixed Clear Key since it is not available as a
-  // separate key system to choose from; however it can be set in URL query.
-  var usePrefixedEME = testConfig.usePrefixedEME;
-  if (testConfig.keySystem == CLEARKEY && usePrefixedEME)
-    testConfig.keySystem = PREFIXED_CLEARKEY;
-
   function getPlayerType(keySystem) {
     switch (keySystem) {
       case WIDEVINE_KEYSYSTEM:
-        if (usePrefixedEME)
-          return PrefixedWidevinePlayer;
         return WidevinePlayer;
-      case PREFIXED_CLEARKEY:
-        return PrefixedClearKeyPlayer;
       case EXTERNAL_CLEARKEY:
       case CLEARKEY:
-        if (usePrefixedEME)
-          return PrefixedClearKeyPlayer;
         return ClearKeyPlayer;
       case FILE_IO_TEST_KEYSYSTEM:
         return FileIOTestPlayer;
       default:
         Utils.timeLog(keySystem + ' is not a known key system');
-        if (usePrefixedEME)
-          return PrefixedClearKeyPlayer;
         return ClearKeyPlayer;
     }
   }
diff --git a/media/test/data/eme_player_js/prefixed_clearkey_player.js b/media/test/data/eme_player_js/prefixed_clearkey_player.js
deleted file mode 100644
index 13240c99..0000000
--- a/media/test/data/eme_player_js/prefixed_clearkey_player.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// ClearKey player responsible for playing media using Clear Key key system and
-// prefixed EME API.
-function PrefixedClearKeyPlayer(video, testConfig) {
-  this.video = video;
-  this.testConfig = testConfig;
-}
-
-PrefixedClearKeyPlayer.prototype.init = function() {
-  // Returns a promise.
-  return PlayerUtils.initEMEPlayer(this);
-};
-
-PrefixedClearKeyPlayer.prototype.registerEventListeners = function() {
-  // Returns a promise.
-  return PlayerUtils.registerPrefixedEMEEventListeners(this);
-};
-
-PrefixedClearKeyPlayer.prototype.onWebkitKeyMessage = function(message) {
-  var initData = Utils.convertToUint8Array(message.message);
-  var key = Utils.getDefaultKey(this.testConfig.forceInvalidResponse);
-  Utils.timeLog('Adding key to sessionID: ' + message.sessionId);
-  message.target.webkitAddKey(this.testConfig.keySystem, key, initData,
-                              message.sessionId);
-};
diff --git a/media/test/data/eme_player_js/prefixed_widevine_player.js b/media/test/data/eme_player_js/prefixed_widevine_player.js
deleted file mode 100644
index f558f5f6..0000000
--- a/media/test/data/eme_player_js/prefixed_widevine_player.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Widevine player responsible for playing media using Widevine key system
-// and prefixed EME API.
-function PrefixedWidevinePlayer(video, testConfig) {
-  this.video = video;
-  this.testConfig = testConfig;
-}
-
-PrefixedWidevinePlayer.prototype.init = function() {
-  // Returns a promise.
-  return PlayerUtils.initEMEPlayer(this);
-};
-
-PrefixedWidevinePlayer.prototype.registerEventListeners = function() {
-  // Returns a promise.
-  return PlayerUtils.registerPrefixedEMEEventListeners(this);
-};
-
-PrefixedWidevinePlayer.prototype.onWebkitKeyMessage = function(message) {
-  function onSuccess(response) {
-    var key = new Uint8Array(response);
-    Utils.timeLog('Adding key to sessionID: ' + message.sessionId, key);
-    message.target.webkitAddKey(this.testConfig.keySystem,
-                                key,
-                                new Uint8Array(1),
-                                message.sessionId);
-  }
-  Utils.sendRequest('POST', 'arraybuffer', message.message,
-                    this.testConfig.licenseServerURL, onSuccess,
-                    this.testConfig.forceInvalidResponse);
-};
diff --git a/media/test/data/eme_player_js/test_config.js b/media/test/data/eme_player_js/test_config.js
index 7b39670..07e8658 100644
--- a/media/test/data/eme_player_js/test_config.js
+++ b/media/test/data/eme_player_js/test_config.js
@@ -10,7 +10,6 @@
   this.mediaType = null;
   this.licenseServerURL = null;
   this.useMSE = false;
-  this.usePrefixedEME = false;
   this.runFPS = false;
   this.playTwice = false;
 }
@@ -27,26 +26,13 @@
   while (match = r.exec(window.location.search.substring(1)))
     this[decodeURI(match[1])] = decodeURI(match[2]);
   this.useMSE = this.useMSE == '1' || this.useMSE == 'true';
-  this.usePrefixedEME =
-      this.usePrefixedEME == '1' || this.usePrefixedEME == 'true';
   this.playTwice = this.playTwice == '1' || this.playTwice == 'true';
-
-  // Validate that the prefixed/unprefixed EME is available.
-  if (this.usePrefixedEME) {
-    if (EME_DISABLED_OPTIONS.indexOf(EME_PREFIXED_VERSION) >= 0)
-      Utils.failTest('Prefixed EME not available.')
-  } else {
-    if (EME_DISABLED_OPTIONS.indexOf(EME_UNPREFIXED_VERSION) >= 0)
-      Utils.failTest('Unprefixed EME not available.')
-  }
 };
 
 TestConfig.updateDocument = function() {
   this.loadQueryParams();
   Utils.addOptions(KEYSYSTEM_ELEMENT_ID, KEY_SYSTEMS);
   Utils.addOptions(MEDIA_TYPE_ELEMENT_ID, MEDIA_TYPES);
-  Utils.addOptions(USE_PREFIXED_EME_ID, EME_VERSIONS_OPTIONS,
-                   EME_DISABLED_OPTIONS);
 
   document.getElementById(MEDIA_FILE_ELEMENT_ID).value =
       this.mediaFile || DEFAULT_MEDIA_FILE;
@@ -59,8 +45,6 @@
   if (this.mediaType)
     Utils.ensureOptionInList(MEDIA_TYPE_ELEMENT_ID, this.mediaType);
   document.getElementById(USE_MSE_ELEMENT_ID).value = this.useMSE;
-  if (this.usePrefixedEME)
-    document.getElementById(USE_PREFIXED_EME_ID).value = EME_PREFIXED_VERSION;
   document.getElementById(USE_PLAY_TWICE_ELEMENT_ID).value = this.playTwice;
 };
 
@@ -70,8 +54,6 @@
   this.keySystem = document.getElementById(KEYSYSTEM_ELEMENT_ID).value;
   this.mediaType = document.getElementById(MEDIA_TYPE_ELEMENT_ID).value;
   this.useMSE = document.getElementById(USE_MSE_ELEMENT_ID).value == 'true';
-  this.usePrefixedEME = document.getElementById(USE_PREFIXED_EME_ID).value ==
-      EME_PREFIXED_VERSION;
   this.playTwice =
       document.getElementById(USE_PLAY_TWICE_ELEMENT_ID).value == 'true';
   this.licenseServerURL =
diff --git a/media/test/data/eme_player_js/utils.js b/media/test/data/eme_player_js/utils.js
index 41a4d45..8ebb033 100644
--- a/media/test/data/eme_player_js/utils.js
+++ b/media/test/data/eme_player_js/utils.js
@@ -189,19 +189,13 @@
   if (message.messageType != 'license-renewal')
     return false;
 
-  if (!Utils.isRenewalMessagePrefixed(message.message)) {
+  if (!Utils.hasPrefix(message.message, EME_RENEWAL_MESSAGE_HEADER)) {
     Utils.failTest('license-renewal message doesn\'t contain expected header',
-                   PREFIXED_EME_RENEWAL_MISSING_HEADER);
+                   EME_RENEWAL_MISSING_HEADER);
   }
   return true;
 };
 
-// For the prefixed API renewal messages are determined by looking at the
-// message and finding a known string.
-Utils.isRenewalMessagePrefixed = function(msg) {
-  return Utils.hasPrefix(msg, PREFIXED_EME_RENEWAL_MESSAGE_HEADER);
-};
-
 Utils.resetTitleChange = function() {
   this.titleChanged = false;
   document.title = '';
diff --git a/media/test/data/eme_player_js/widevine_player.js b/media/test/data/eme_player_js/widevine_player.js
index b6b5d64..d393720 100644
--- a/media/test/data/eme_player_js/widevine_player.js
+++ b/media/test/data/eme_player_js/widevine_player.js
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// Widevine player responsible for playing media using Widevine key system
-// and EME working draft API.
+// Widevine player responsible for playing media using Widevine key system.
 function WidevinePlayer(video, testConfig) {
   this.video = video;
   this.testConfig = testConfig;
diff --git a/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor-expected.txt b/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor-expected.txt
deleted file mode 100644
index 0dfe7c2..0000000
--- a/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-This tests the constructor for the MediaKeyEvent DOM class.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-*** No initializer passed ***
-PASS new MediaKeyEvent('MediaKeyEvent').bubbles is false
-PASS new MediaKeyEvent('MediaKeyEvent').cancelable is false
-PASS new MediaKeyEvent('MediaKeyEvent').keySystem is ""
-PASS new MediaKeyEvent('MediaKeyEvent').sessionId is ""
-PASS new MediaKeyEvent('MediaKeyEvent').initData is null
-PASS new MediaKeyEvent('MediaKeyEvent').message is null
-PASS new MediaKeyEvent('MediaKeyEvent').defaultURL is ""
-PASS new MediaKeyEvent('MediaKeyEvent').errorCode is null
-PASS new MediaKeyEvent('MediaKeyEvent').systemCode is 0
-
-*** Bubbles and cancelable true, other members are missing ***
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).bubbles is true
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).cancelable is true
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).keySystem is ""
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).sessionId is ""
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).initData is null
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).message is null
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).defaultURL is ""
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).errorCode is null
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).systemCode is 0
-
-*** Bubbles and cancelable true, invalid other members ***
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).bubbles threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).cancelable threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).keySystem threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).sessionId threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).initData threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).message threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).defaultURL threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).errorCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).systemCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-
-*** Initialize 'keySystem' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: emptyObject }).keySystem is "[object Object]"
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: document }).keySystem is "[object HTMLDocument]"
-
-*** Initialize 'sessionId' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { sessionId: emptyObject }).sessionId is "[object Object]"
-PASS new MediaKeyEvent('MediaKeyEvent', { sessionId: document }).sessionId is "[object HTMLDocument]"
-
-*** Initialize 'initData' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { initData: 10 }).initData threw exception TypeError: Failed to construct 'MediaKeyEvent': member initData is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { initData: 'string' }).initData threw exception TypeError: Failed to construct 'MediaKeyEvent': member initData is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { initData: emptyObject }).initData threw exception TypeError: Failed to construct 'MediaKeyEvent': member initData is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { initData: document }).initData threw exception TypeError: Failed to construct 'MediaKeyEvent': member initData is not of type Uint8Array..
-
-*** Initialize 'message' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { message: 10 }).message threw exception TypeError: Failed to construct 'MediaKeyEvent': member message is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { message: 'string' }).message threw exception TypeError: Failed to construct 'MediaKeyEvent': member message is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { message: emptyObject }).message threw exception TypeError: Failed to construct 'MediaKeyEvent': member message is not of type Uint8Array..
-PASS new MediaKeyEvent('MediaKeyEvent', { message: document }).message threw exception TypeError: Failed to construct 'MediaKeyEvent': member message is not of type Uint8Array..
-
-*** Initialize 'defaultURL' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { defaultURL: emptyObject }).defaultURL is "[object Object]"
-PASS new MediaKeyEvent('MediaKeyEvent', { defaultURL: document }).defaultURL is "[object HTMLDocument]"
-
-*** Initialize 'errorCode' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { errorCode: 10 }).errorCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { errorCode: 'string' }).errorCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { errorCode: emptyObject }).errorCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-PASS new MediaKeyEvent('MediaKeyEvent', { errorCode: document }).errorCode threw exception TypeError: Failed to construct 'MediaKeyEvent': member errorCode is not of type MediaKeyError..
-
-*** Initialize 'systemCode' with a invalid values ***
-PASS new MediaKeyEvent('MediaKeyEvent', { systemCode: 'string' }).systemCode is 0
-PASS new MediaKeyEvent('MediaKeyEvent', { systemCode: emptyObject }).systemCode is 0
-PASS new MediaKeyEvent('MediaKeyEvent', { systemCode: document }).systemCode is 0
-
-*** Bubbles and cancelable true, valid other members ***
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).bubbles is true
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).cancelable is true
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).keySystem is "keySystem"
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).sessionId is "sessionId"
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).initData is initDataArray
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).message is messageArray
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).defaultURL is "defaultURL"
-FAIL new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode should be non-null. Was null
-FAIL new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode.code should be 1. Threw exception TypeError: Cannot read property 'code' of null
-PASS new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).systemCode is 123
-
-*** Initialize with valid members ***
-FAIL new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).bubbles should be true. Was false.
-FAIL new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).cancelable should be true. Was false.
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).keySystem is "keySystem"
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).sessionId is "sessionId"
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).initData is initDataArray
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).message is messageArray
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).defaultURL is "defaultURL"
-FAIL new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode should be non-null. Was null
-FAIL new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode.code should be 1. Threw exception TypeError: Cannot read property 'code' of null
-PASS new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).systemCode is 123
-
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor.html b/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor.html
deleted file mode 100644
index c5686bc6..0000000
--- a/third_party/WebKit/LayoutTests/fast/events/constructors/media-key-event-constructor.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <script src="../../../resources/js-test.js"></script>
-</head>
-
-<body>
-    <script>
-
-        window.jsTestIsAsync = true;
-
-        description("This tests the constructor for the MediaKeyEvent DOM class.");
-
-        function test()
-        {
-            debug("<br>*** No initializer passed ***");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent').bubbles", "false");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent').cancelable", "false");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent').keySystem");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent').sessionId");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent').initData");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent').message");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent').defaultURL");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent').errorCode");
-            shouldBeZero("new MediaKeyEvent('MediaKeyEvent').systemCode");
-    
-            debug("<br>*** Bubbles and cancelable true, other members are missing ***");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).bubbles", "true");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).cancelable", "true");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).keySystem");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).sessionId");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).initData");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).message");
-            shouldBeEmptyString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).defaultURL");
-            shouldBeNull("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).errorCode");
-            shouldBeZero("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true }).systemCode");
-    
-            debug("<br>*** Bubbles and cancelable true, invalid other members ***");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).bubbles");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).cancelable");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).keySystem");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).sessionId");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).initData");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).message");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).defaultURL");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).errorCode");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: undefined, sessionId: undefined, initData: Uint8Array, message: Uint8Array, defaultURL: undefined, errorCode: MediaKeyError, systemCode: undefined }).systemCode");
-    
-            debug("<br>*** Initialize 'keySystem' with a invalid values ***");
-            emptyObject = { };
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { keySystem: emptyObject }).keySystem", "[object Object]");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { keySystem: document }).keySystem", "[object HTMLDocument]");
-
-            debug("<br>*** Initialize 'sessionId' with a invalid values ***");
-            emptyObject = { };
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { sessionId: emptyObject }).sessionId", "[object Object]");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { sessionId: document }).sessionId", "[object HTMLDocument]");
-
-            debug("<br>*** Initialize 'initData' with a invalid values ***");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { initData: 10 }).initData");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { initData: \'string\' }).initData");
-            emptyObject = { };
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { initData: emptyObject }).initData");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { initData: document }).initData");
-
-            debug("<br>*** Initialize 'message' with a invalid values ***");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { message: 10 }).message");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { message: \'string\' }).message");
-            emptyObject = { };
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { message: emptyObject }).message");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { message: document }).message");
-
-            debug("<br>*** Initialize 'defaultURL' with a invalid values ***");
-            emptyObject = { };
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { defaultURL: emptyObject }).defaultURL", "[object Object]");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { defaultURL: document }).defaultURL", "[object HTMLDocument]");
-
-            debug("<br>*** Initialize 'errorCode' with a invalid values ***");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { errorCode: 10 }).errorCode");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { errorCode: \'string\' }).errorCode");
-            emptyObject = { };
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { errorCode: emptyObject }).errorCode");
-            shouldThrow("new MediaKeyEvent('MediaKeyEvent', { errorCode: document }).errorCode");
-
-            debug("<br>*** Initialize 'systemCode' with a invalid values ***");
-            shouldBeZero("new MediaKeyEvent('MediaKeyEvent', { systemCode: \'string\' }).systemCode");
-            emptyObject = { };
-            shouldBeZero("new MediaKeyEvent('MediaKeyEvent', { systemCode: emptyObject }).systemCode");
-            shouldBeZero("new MediaKeyEvent('MediaKeyEvent', { systemCode: document }).systemCode");
-
-            debug("<br>*** Bubbles and cancelable true, valid other members ***");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).bubbles", "true");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).cancelable", "true");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).keySystem", "keySystem");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).sessionId", "sessionId");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).initData", "initDataArray");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).message", "messageArray");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).defaultURL", "defaultURL");
-            // FIXME(82988): These two fail.
-            shouldBeNonNull("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode.code", "MediaKeyError.MEDIA_KEYERR_UNKNOWN");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { bubbles: true, cancelable: true, keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).systemCode", "123");
-
-            debug("<br>*** Initialize with valid members ***");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).bubbles", "true");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).cancelable", "true");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).keySystem", "keySystem");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).sessionId", "sessionId");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).initData", "initDataArray");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).message", "messageArray");
-            shouldBeEqualToString("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).defaultURL", "defaultURL");
-            // FIXME(82988): These two fail.
-            shouldBeNonNull("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).errorCode.code", "MediaKeyError.MEDIA_KEYERR_UNKNOWN");
-            shouldBe("new MediaKeyEvent('MediaKeyEvent', { keySystem: 'keySystem', sessionId: 'sessionId', initData: initDataArray, message: messageArray, defaultURL: 'defaultURL', errorCode: errorObject, systemCode: 123 }).systemCode", "123");
-
-            debug("");
-            finishJSTest();
-        }
-
-        var initDataArray = new Uint8Array([0x41, 0x42, 0x43]);
-        var messageArray = new Uint8Array([0x51, 0x52, 0x53]);
-        // FIXME(82988): This does not create an error like we want.
-        //var errorObject = window.MediaKeyError;
-        var errorObject = null;
-        // shouldBe("typeof errorObject", TBD);
-
-        video = document.createElement('video');
-        document.body.appendChild(video);
-
-        test()
-    </script>
-
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-prefixed-after-unprefixed.html b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-prefixed-after-unprefixed.html
deleted file mode 100644
index 7a62d96..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-prefixed-after-unprefixed.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>Prefixed and unprefixed EME API</title>
-        <script src="encrypted-media-utils.js"></script>
-        <script src="../../resources/testharness.js"></script>
-        <script src="../../resources/testharnessreport.js"></script>
-    </head>
-    <body>
-        <video id="testVideo"></video>
-        <div id="log"></div>
-        <script>
-            async_test(function(test)
-            {
-                var video = document.getElementById('testVideo');
-                assert_not_equals(video, null);
-
-                function loadStarted()
-                {
-                    navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) {
-                        assert_equals(access.keySystem, 'org.w3.clearkey');
-                        return access.createMediaKeys();
-                    }).then(function(mediaKeys) {
-                        assert_not_equals(mediaKeys, null);
-                        return video.setMediaKeys(mediaKeys);
-                    }).then(function(result) {
-                        assert_throws('InvalidStateError',
-                                      function () { video.webkitGenerateKeyRequest('webkit-org.w3.clearkey'); });
-                        test.done();
-                    }).catch(function(error) {
-                        forceTestFailureFromPromise(test, error);
-                    });
-                }
-
-                video.src = '../content/test-encrypted.webm';
-                waitForEventAndRunStep('loadstart', video, loadStarted, test);
-            }, 'Call prefixed EME API after unprefixed EME API.');
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-unprefixed-after-prefixed.html b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-unprefixed-after-prefixed.html
deleted file mode 100644
index 38b1773..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-unprefixed-after-prefixed.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>Prefixed and unprefixed EME API</title>
-        <script src="encrypted-media-utils.js"></script>
-        <script src="../../resources/testharness.js"></script>
-        <script src="../../resources/testharnessreport.js"></script>
-    </head>
-    <body>
-        <video id="testVideo"></video>
-        <div id="log"></div>
-        <script>
-            async_test(function(test)
-            {
-                var video = document.getElementById('testVideo');
-                assert_not_equals(video, null);
-
-                function loadStarted()
-                {
-                    video.webkitGenerateKeyRequest('webkit-org.w3.clearkey');
-                    navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) {
-                        assert_equals(access.keySystem, 'org.w3.clearkey');
-                        return access.createMediaKeys();
-                    }).then(function(mediaKeys) {
-                        assert_not_equals(mediaKeys, null);
-                        assert_equals(typeof mediaKeys.createSession, 'function');
-                        video.setMediaKeys(mediaKeys).then(function(result) {
-                            assert_unreached('setMediaKeys should have failed.');
-                        }, function(error) {
-                            assert_equals(error.name, 'InvalidStateError');
-                            assert_not_equals(error.message, '');
-                            test.done();
-                        });
-                    }).catch(function(error) {
-                        forceTestFailureFromPromise(test, error);
-                    });
-                }
-
-                video.src = '../content/test-encrypted.webm';
-                waitForEventAndRunStep('loadstart', video, loadStarted, test);
-            }, 'Call unprefixed EME API after prefixed EME API.');
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-expected.txt
deleted file mode 100644
index ae5c781..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-CONSOLE WARNING: canPlayType()'s 'keySystem' parameter is deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-Test Encrypted Media extension of HTMLMediaElement canPlayType() method.
-
-The test is designed to pass with any implementation regardless of supported media types and relies on the expected log to detect the expected results for some types. To get sufficient coverage, it is important that an implementation support clearkey encryption of at least one of the types below.
-
-
-Always return the empty string for an empty type.
-EXPECTED (video.canPlayType('') == '') OK
-EXPECTED (video.canPlayType('', '') == '') OK
-EXPECTED (video.canPlayType('', null) == '') OK
-EXPECTED (video.canPlayType('', undefined) == '') OK
-EXPECTED (video.canPlayType('', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('', 'com.example.invalid') == '') OK
-
-Always return the empty string for when no container is specified.
-EXPECTED (video.canPlayType('video/') == '') OK
-EXPECTED (video.canPlayType('video/', '') == '') OK
-EXPECTED (video.canPlayType('video/', null) == '') OK
-EXPECTED (video.canPlayType('video/', undefined) == '') OK
-EXPECTED (video.canPlayType('video/', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/', 'com.example.invalid') == '') OK
-
-Always return the empty string for an unsupported container.
-EXPECTED (video.canPlayType('video/blahblah') == '') OK
-EXPECTED (video.canPlayType('video/blahblah', '') == '') OK
-EXPECTED (video.canPlayType('video/blahblah', null) == '') OK
-EXPECTED (video.canPlayType('video/blahblah', undefined) == '') OK
-EXPECTED (video.canPlayType('video/blahblah', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/blahblah', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/blahblah', 'com.example.invalid') == '') OK
-
-Empty key system parameters should not affect the result of video/mp4 types.
-Result of video.canPlayType('video/mp4; Codecs="avc1.4D400C"'): ''
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', '') == '') OK
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', null) == '') OK
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', undefined) == '') OK
-There are currently no implementations supporting encryption of video/mp4.
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/mp4; Codecs="avc1.4D400C"', 'com.example.invalid') == '') OK
-
-Empty key system parameters should not affect the result of audio/mpeg types.
-Result of video.canPlayType('audio/mpeg'): ''
-EXPECTED (video.canPlayType('audio/mpeg', '') == '') OK
-EXPECTED (video.canPlayType('audio/mpeg', null) == '') OK
-EXPECTED (video.canPlayType('audio/mpeg', undefined) == '') OK
-There are currently no implementations supporting encryption of audio/mpeg.
-EXPECTED (video.canPlayType('audio/mpeg', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('audio/mpeg', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('audio/mpeg', 'com.example.invalid') == '') OK
-
-Empty key system parameters should not affect the result of audio/wav types.
-Result of video.canPlayType('audio/wav'): 'maybe'
-EXPECTED (video.canPlayType('audio/wav', '') == 'maybe') OK
-EXPECTED (video.canPlayType('audio/wav', null) == 'maybe') OK
-EXPECTED (video.canPlayType('audio/wav', undefined) == 'maybe') OK
-There are currently no implementations supporting encryption of audio/wav.
-EXPECTED (video.canPlayType('audio/wav', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('audio/wav', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('audio/wav', 'com.example.invalid') == '') OK
-
-Empty key system parameters should not affect the result of video/webm types.
-Result of video.canPlayType('video/webm'): 'maybe'
-EXPECTED (video.canPlayType('video/webm', '') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', null) == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', undefined) == 'maybe') OK
-All implementations that support WebM and Encrypted Media support encrypted WebM.
-EXPECTED (video.canPlayType('video/webm', 'webkit-org.w3.clearkey') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', 'WeBkIt-OrG.W3.ClEaRkEy') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', 'com.example.invalid') == '') OK
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm-expected.txt
deleted file mode 100644
index 94a78139..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm-expected.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-CONSOLE WARNING: canPlayType()'s 'keySystem' parameter is deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-Test Encrypted Media extension of HTMLMediaElement canPlayType() method for WebM types.
-
-WebM video container without a codec results in "maybe".
-EXPECTED (video.canPlayType('video/webm') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', '') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', null) == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', undefined) == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', 'webkit-org.w3.clearkey') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', 'WeBkIt-OrG.W3.ClEaRkEy') == 'maybe') OK
-EXPECTED (video.canPlayType('video/webm', 'com.example.invalid') == '') OK
-
-WebM video container with a valid codec results in "probably".
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', '') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', null) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', undefined) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', 'webkit-org.w3.clearkey') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', 'WeBkIt-OrG.W3.ClEaRkEy') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8"', 'com.example.invalid') == '') OK
-
-WebM video container with two valid codecs result in "probably".
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', '') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', null) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', undefined) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', 'webkit-org.w3.clearkey') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', 'WeBkIt-OrG.W3.ClEaRkEy') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, vorbis"', 'com.example.invalid') == '') OK
-
-WebM video container with two valid codecs result in "probably" regardless of the order.
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', '') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', null) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', undefined) == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', 'webkit-org.w3.clearkey') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', 'WeBkIt-OrG.W3.ClEaRkEy') == 'probably') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vorbis, vp8"', 'com.example.invalid') == '') OK
-
-WebM video container with an invalid codec results in "".
-EXPECTED (video.canPlayType('video/webm; codecs="1"') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', '') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', null) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', undefined) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1"', 'com.example.invalid') == '') OK
-
-WebM video container with any invalid codec results in "".
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', '') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', null) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', undefined) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="vp8, 1"', 'com.example.invalid') == '') OK
-
-WebM video container with any invalid codec results in "" regardless of the order.
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', '') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', null) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', undefined) == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('video/webm; codecs="1, vp8"', 'com.example.invalid') == '') OK
-
-WebM audio container without a codec results in "maybe".
-EXPECTED (video.canPlayType('audio/webm') == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', '') == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', null) == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', undefined) == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', 'webkit-org.w3.clearkey') == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', 'WeBkIt-OrG.W3.ClEaRkEy') == 'maybe') OK
-EXPECTED (video.canPlayType('audio/webm', 'com.example.invalid') == '') OK
-
-WebM audio container with a valid codec results in "probably".
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"') == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', '') == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', null) == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', undefined) == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', 'webkit-org.w3.clearkey') == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', 'WeBkIt-OrG.W3.ClEaRkEy') == 'probably') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vorbis"', 'com.example.invalid') == '') OK
-
-WebM video container with a video codec results in "".
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"') == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', '') == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', null) == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', undefined) == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('audio/webm; codecs="vp8"', 'com.example.invalid') == '') OK
-
-Case does not matter (except for the codecs string).
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"') == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', '') == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', null) == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', undefined) == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', 'webkit-org.w3.clearkey') == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', 'WeBkIt-OrG.W3.ClEaRkEy') == 'probably') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="vp8, vorbis"', 'com.example.invalid') == '') OK
-
-The codecs string is case sensitive, so non-lower-case codecs result in "".
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"') == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', '') == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', null) == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', undefined) == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', 'webkit-org.w3.clearkey') == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', 'WeBkIt-OrG.W3.ClEaRkEy') == '') OK
-EXPECTED (video.canPlayType('ViDeO/WeBm; CoDeCs="Vp8, VoRbIs"', 'com.example.invalid') == '') OK
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm.html
deleted file mode 100644
index 870632cf..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type-webm.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!doctype html>
-<html lang="en">
-    <head>
-    </head>
-    <body>
-        <video></video>
-        <p>Test Encrypted Media extension of HTMLMediaElement <em>canPlayType()</em> method for WebM types.</p>
-
-        <script src=../../video-test.js></script>
-        <script>
-            video = mediaElement = document.getElementsByTagName('video')[0];
-
-            consoleWrite("WebM video container without a codec results in \"maybe\".");
-            testExpected("video.canPlayType('video/webm')", "maybe");
-            testExpected("video.canPlayType('video/webm', '')", "maybe");
-            testExpected("video.canPlayType('video/webm', null)", "maybe");
-            testExpected("video.canPlayType('video/webm', undefined)", "maybe");
-            testExpected("video.canPlayType('video/webm', 'webkit-org.w3.clearkey')", "maybe");
-            testExpected("video.canPlayType('video/webm', 'WeBkIt-OrG.W3.ClEaRkEy')", "maybe");
-            testExpected("video.canPlayType('video/webm', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with a valid codec results in \"probably\".");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', '')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', null)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', undefined)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', 'webkit-org.w3.clearkey')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with two valid codecs result in \"probably\".");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', '')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', null)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', undefined)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', 'webkit-org.w3.clearkey')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, vorbis\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with two valid codecs result in \"probably\" regardless of the order.");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', '')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', null)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', undefined)", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', 'webkit-org.w3.clearkey')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "probably");
-            testExpected("video.canPlayType('video/webm; codecs=\"vorbis, vp8\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with an invalid codec results in \"\".");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', '')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', null)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', undefined)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with any invalid codec results in \"\".");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', '')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', null)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', undefined)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"vp8, 1\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with any invalid codec results in \"\" regardless of the order.");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', '')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', null)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', undefined)", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/webm; codecs=\"1, vp8\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM audio container without a codec results in \"maybe\".");
-            testExpected("video.canPlayType('audio/webm')", "maybe");
-            testExpected("video.canPlayType('audio/webm', '')", "maybe");
-            testExpected("video.canPlayType('audio/webm', null)", "maybe");
-            testExpected("video.canPlayType('audio/webm', undefined)", "maybe");
-            testExpected("video.canPlayType('audio/webm', 'webkit-org.w3.clearkey')", "maybe");
-            testExpected("video.canPlayType('audio/webm', 'WeBkIt-OrG.W3.ClEaRkEy')", "maybe");
-            testExpected("video.canPlayType('audio/webm', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM audio container with a valid codec results in \"probably\".");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"')", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', '')", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', null)", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', undefined)", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', 'webkit-org.w3.clearkey')", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "probably");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vorbis\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>WebM video container with a video codec results in \"\".");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"')", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', '')", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', null)", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', undefined)", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('audio/webm; codecs=\"vp8\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Case does not matter (except for the codecs string).");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"')", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', '')", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', null)", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', undefined)", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', 'webkit-org.w3.clearkey')", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "probably");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"vp8, vorbis\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>The codecs string is case sensitive, so non-lower-case codecs result in \"\".");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"')", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', '')", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', null)", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', undefined)", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('ViDeO/WeBm; CoDeCs=\"Vp8, VoRbIs\"', 'com.example.invalid')", "");
-
-            endTest();
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type.html
deleted file mode 100644
index f0c27ee..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-can-play-type.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!doctype html>
-<html lang="en">
-    <head>
-    </head>
-    <body>
-        <video></video>
-        <p>Test Encrypted Media extension of HTMLMediaElement <em>canPlayType()</em> method.</p>
-        <p>The test is designed to pass with any implementation regardless of supported media types and relies on the expected log to detect the expected results for some types.
-           To get sufficient coverage, it is important that an implementation support clearkey encryption of at least one of the types below.</p>
-
-        <script src=../../video-test.js></script>
-        <script>
-            video = mediaElement = document.getElementsByTagName('video')[0];
-
-            consoleWrite("<br>Always return the empty string for an empty type.");
-            testExpected("video.canPlayType('')", "");
-            testExpected("video.canPlayType('', '')", "");
-            testExpected("video.canPlayType('', null)", "");
-            testExpected("video.canPlayType('', undefined)", "");
-            testExpected("video.canPlayType('', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Always return the empty string for when no container is specified.");
-            testExpected("video.canPlayType('video/')", "");
-            testExpected("video.canPlayType('video/', '')", "");
-            testExpected("video.canPlayType('video/', null)", "");
-            testExpected("video.canPlayType('video/', undefined)", "");
-            testExpected("video.canPlayType('video/', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Always return the empty string for an unsupported container.");
-            testExpected("video.canPlayType('video/blahblah')", "");
-            testExpected("video.canPlayType('video/blahblah', '')", "");
-            testExpected("video.canPlayType('video/blahblah', null)", "");
-            testExpected("video.canPlayType('video/blahblah', undefined)", "");
-            testExpected("video.canPlayType('video/blahblah', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/blahblah', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/blahblah', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Empty key system parameters should not affect the result of video/mp4 types.");
-            var mp4Result = video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"');
-            var mp4ResultLogString = "Result of video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"'): '" + mp4Result + "'";
-            consoleWrite(mp4ResultLogString);
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', '')", mp4Result);
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', null)", mp4Result);
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', undefined)", mp4Result);
-            consoleWrite("There are currently no implementations supporting encryption of video/mp4.");
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('video/mp4; Codecs=\"avc1.4D400C\"', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Empty key system parameters should not affect the result of audio/mpeg types.");
-            var mpegResult = video.canPlayType('audio/mpeg');
-            var mpegResultLogString = "Result of video.canPlayType('audio/mpeg'): '" + mpegResult + "'";
-            consoleWrite(mpegResultLogString);
-            testExpected("video.canPlayType('audio/mpeg', '')", mpegResult);
-            testExpected("video.canPlayType('audio/mpeg', null)", mpegResult);
-            testExpected("video.canPlayType('audio/mpeg', undefined)", mpegResult);
-            consoleWrite("There are currently no implementations supporting encryption of audio/mpeg.");
-            testExpected("video.canPlayType('audio/mpeg', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('audio/mpeg', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('audio/mpeg', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Empty key system parameters should not affect the result of audio/wav types.");
-            var wavResult = video.canPlayType('audio/wav');
-            var wavResultLogString = "Result of video.canPlayType('audio/wav'): '" + wavResult + "'";
-            consoleWrite(wavResultLogString);
-            testExpected("video.canPlayType('audio/wav', '')", wavResult);
-            testExpected("video.canPlayType('audio/wav', null)", wavResult);
-            testExpected("video.canPlayType('audio/wav', undefined)", wavResult);
-            consoleWrite("There are currently no implementations supporting encryption of audio/wav.");
-            testExpected("video.canPlayType('audio/wav', 'webkit-org.w3.clearkey')", "");
-            testExpected("video.canPlayType('audio/wav', 'WeBkIt-OrG.W3.ClEaRkEy')", "");
-            testExpected("video.canPlayType('audio/wav', 'com.example.invalid')", "");
-
-            consoleWrite("<br>Empty key system parameters should not affect the result of video/webm types.");
-            var webmResult = video.canPlayType('video/webm');
-            var webmResultLogString = "Result of video.canPlayType('video/webm'): '" + webmResult + "'";
-            consoleWrite(webmResultLogString);
-            testExpected("video.canPlayType('video/webm', '')", webmResult);
-            testExpected("video.canPlayType('video/webm', null)", webmResult);
-            testExpected("video.canPlayType('video/webm', undefined)", webmResult);
-            consoleWrite("All implementations that support WebM and Encrypted Media support encrypted WebM.");
-            testExpected("video.canPlayType('video/webm', 'webkit-org.w3.clearkey')", webmResult);
-            testExpected("video.canPlayType('video/webm', 'WeBkIt-OrG.W3.ClEaRkEy')", webmResult);
-            testExpected("video.canPlayType('video/webm', 'com.example.invalid')", "");
-
-            endTest();
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants-expected.txt
deleted file mode 100644
index 30b330ae..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Test MediaKeyError constants and additional MediaError constant.
-
-EXPECTED (MediaKeyError.MEDIA_KEYERR_UNKNOWN == '1') OK
-EXPECTED (MediaKeyError.MEDIA_KEYERR_CLIENT == '2') OK
-EXPECTED (MediaKeyError.MEDIA_KEYERR_SERVICE == '3') OK
-EXPECTED (MediaKeyError.MEDIA_KEYERR_OUTPUT == '4') OK
-EXPECTED (MediaKeyError.MEDIA_KEYERR_HARDWARECHANGE == '5') OK
-EXPECTED (MediaKeyError.MEDIA_KEYERR_DOMAIN == '6') OK
-
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants.html
deleted file mode 100644
index f0b4553..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-constants.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <script src=../../video-test.js></script>
-    <script type="text/javascript">
-        function doTest ()
-        {
-            testExpected("MediaKeyError.MEDIA_KEYERR_UNKNOWN", 1);
-            testExpected("MediaKeyError.MEDIA_KEYERR_CLIENT", 2);
-            testExpected("MediaKeyError.MEDIA_KEYERR_SERVICE", 3);
-            testExpected("MediaKeyError.MEDIA_KEYERR_OUTPUT", 4);
-            testExpected("MediaKeyError.MEDIA_KEYERR_HARDWARECHANGE", 5);
-            testExpected("MediaKeyError.MEDIA_KEYERR_DOMAIN", 6);
-            consoleWrite("");
-
-            endTest();
-        }
-    </script>
-</head>
-<body onload="doTest()">
-    <p>Test MediaKeyError constants and additional MediaError constant.</p>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events-expected.txt
deleted file mode 100644
index 79037e7..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events-expected.txt
+++ /dev/null
@@ -1,210 +0,0 @@
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-Test all the key-related events.
-
-EXPECTED (keyNeededEvent != 'null') OK
-EXPECTED (keyNeededEvent instanceof window.MediaKeyEvent == 'true') OK
-
-*** Verify the presence of on* attributes. These would return undefined if they are not present. ***
-EXPECTED (video.onwebkitkeyadded === 'null') OK
-EXPECTED (video.onwebkitkeyerror === 'null') OK
-EXPECTED (video.onwebkitkeymessage === 'null') OK
-EXPECTED (video.onwebkitneedkey === 'null') OK
-
-*** Test events using on* attributes. ***
-needkey event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == '') OK
-EXPECTED (event.sessionId == '') OK
-EXPECTED (event.initData.length == '16') OK
-EXPECTED (event.initData[0] == '48') OK
-EXPECTED (event.initData[1] == '49') OK
-EXPECTED (event.initData[2] == '50') OK
-EXPECTED (event.initData[3] == '51') OK
-EXPECTED (event.initData[4] == '52') OK
-EXPECTED (event.initData[5] == '53') OK
-EXPECTED (event.initData[6] == '54') OK
-EXPECTED (event.initData[7] == '55') OK
-EXPECTED (event.initData[8] == '56') OK
-EXPECTED (event.initData[9] == '57') OK
-EXPECTED (event.initData[10] == '48') OK
-EXPECTED (event.initData[11] == '49') OK
-EXPECTED (event.initData[12] == '50') OK
-EXPECTED (event.initData[13] == '51') OK
-EXPECTED (event.initData[14] == '52') OK
-EXPECTED (event.initData[15] == '53') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey', event.initData))
-keymessage event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-The sessionId should be a non-empty string containing an integer.
-EXPECTED (event.sessionId != '') OK
-EXPECTED (event.sessionId != 'null') OK
-EXPECTED (event.sessionId != 'undefined') OK
-EXPECTED (isNaN(event.sessionId) == 'false') OK
-EXPECTED (String(event.sessionId) == String(parseInt(event.sessionId)) == 'true') OK
-Implementations should avoid sessionIds of 0.
-EXPECTED (event.sessionId > '0') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message.length == '16') OK
-EXPECTED (event.message[0] == '48') OK
-EXPECTED (event.message[1] == '49') OK
-EXPECTED (event.message[2] == '50') OK
-EXPECTED (event.message[3] == '51') OK
-EXPECTED (event.message[4] == '52') OK
-EXPECTED (event.message[5] == '53') OK
-EXPECTED (event.message[6] == '54') OK
-EXPECTED (event.message[7] == '55') OK
-EXPECTED (event.message[8] == '56') OK
-EXPECTED (event.message[9] == '57') OK
-EXPECTED (event.message[10] == '48') OK
-EXPECTED (event.message[11] == '49') OK
-EXPECTED (event.message[12] == '50') OK
-EXPECTED (event.message[13] == '51') OK
-EXPECTED (event.message[14] == '52') OK
-EXPECTED (event.message[15] == '53') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key, event.initData, event.sessionId))
-keyadded event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-EXPECTED (event.sessionId == keyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', invalidKey, null, event.sessionId))
-keyerror event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-EXPECTED (event.sessionId == keyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode.code == '1') OK
-EXPECTED (event.systemCode == '0') OK
-
-*** Test events using addEventListener(). ***
-EVENT(webkitneedkey)
-needkey event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == '') OK
-EXPECTED (event.sessionId == '') OK
-EXPECTED (event.initData.length == '16') OK
-EXPECTED (event.initData[0] == '48') OK
-EXPECTED (event.initData[1] == '49') OK
-EXPECTED (event.initData[2] == '50') OK
-EXPECTED (event.initData[3] == '51') OK
-EXPECTED (event.initData[4] == '52') OK
-EXPECTED (event.initData[5] == '53') OK
-EXPECTED (event.initData[6] == '54') OK
-EXPECTED (event.initData[7] == '55') OK
-EXPECTED (event.initData[8] == '56') OK
-EXPECTED (event.initData[9] == '57') OK
-EXPECTED (event.initData[10] == '48') OK
-EXPECTED (event.initData[11] == '49') OK
-EXPECTED (event.initData[12] == '50') OK
-EXPECTED (event.initData[13] == '51') OK
-EXPECTED (event.initData[14] == '52') OK
-EXPECTED (event.initData[15] == '53') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey', event.initData))
-EVENT(webkitkeymessage)
-keymessage event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-The sessionId should be a non-empty string containing an integer.
-EXPECTED (event.sessionId != '') OK
-EXPECTED (event.sessionId != 'null') OK
-EXPECTED (event.sessionId != 'undefined') OK
-EXPECTED (isNaN(event.sessionId) == 'false') OK
-EXPECTED (String(event.sessionId) == String(parseInt(event.sessionId)) == 'true') OK
-Implementations should avoid sessionIds of 0.
-EXPECTED (event.sessionId > '0') OK
-The sessionsId should be different from the first run.
-EXPECTED (event.sessionId != firstRunKeyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message.length == '16') OK
-EXPECTED (event.message[0] == '48') OK
-EXPECTED (event.message[1] == '49') OK
-EXPECTED (event.message[2] == '50') OK
-EXPECTED (event.message[3] == '51') OK
-EXPECTED (event.message[4] == '52') OK
-EXPECTED (event.message[5] == '53') OK
-EXPECTED (event.message[6] == '54') OK
-EXPECTED (event.message[7] == '55') OK
-EXPECTED (event.message[8] == '56') OK
-EXPECTED (event.message[9] == '57') OK
-EXPECTED (event.message[10] == '48') OK
-EXPECTED (event.message[11] == '49') OK
-EXPECTED (event.message[12] == '50') OK
-EXPECTED (event.message[13] == '51') OK
-EXPECTED (event.message[14] == '52') OK
-EXPECTED (event.message[15] == '53') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key, event.initData, event.sessionId))
-EVENT(webkitkeyadded)
-keyadded event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-EXPECTED (event.sessionId == keyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode === 'null') OK
-EXPECTED (event.systemCode == '0') OK
-
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', invalidKey, null, event.sessionId))
-EVENT(webkitkeyerror)
-keyerror event occurred
-EXPECTED (event.target == '[object HTMLVideoElement]') OK
-EXPECTED (event instanceof window.MediaKeyEvent == 'true') OK
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-EXPECTED (event.sessionId == keyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode.code == '1') OK
-EXPECTED (event.systemCode == '0') OK
-
-Attributes are read-only.
-RUN(event.keySystem = 'blah')
-RUN(event.sessionId = 'blah')
-RUN(event.initData = new Uint8Array([0x12]))
-RUN(event.message = new Uint8Array([0x12]))
-RUN(event.defaultURL = 'example.com')
-RUN(event.errorCode.code = MediaKeyError.MEDIA_KEYERR_CLIENT)
-RUN(event.systemCode = 123)
-EXPECTED (event.keySystem == 'webkit-org.w3.clearkey') OK
-EXPECTED (event.sessionId == keyMessageSessionId == 'true') OK
-EXPECTED (event.initData === 'null') OK
-EXPECTED (event.message === 'null') OK
-EXPECTED (event.defaultURL == '') OK
-EXPECTED (event.errorCode.code == '1') OK
-EXPECTED (event.systemCode == '0') OK
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events.html
deleted file mode 100644
index dcd60c7..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-events.html
+++ /dev/null
@@ -1,201 +0,0 @@
-<!doctype html>
-<html lang="en">
-    <head>
-    </head>
-    <body>
-        <video></video>
-        <p>Test all the key-related events.</p>
-
-        <script src="../encrypted-media-utils.js"></script>
-        <script src=../../media-file.js></script>
-        <script src=../../video-test.js></script>
-        <script>
-            // First, try explicitly creating those events with specific IDL.
-            var keyNeededEvent = document.createEvent("MediaKeyEvent");
-            testExpected("keyNeededEvent", null, "!=");
-            testExpected("keyNeededEvent instanceof window.MediaKeyEvent", true);
-
-            // Next, The test runs twice, once using on* and then using addEventListener().
-            var isFirstRun = true;
-
-            // The Initialization Data in test-encrypted.webm.
-            var expectedInitData = stringToUint8Array('0123456789012345');
-            // A 128-bit key. It is not the actual key for test-encrypted.webm.
-            var key = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
-                                      0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70]);
-            // This key will cause an asynchronous error because it is too short.
-            var invalidKey = new Uint8Array([0x61]);
-
-            // After the first keyMessage event, the sessionId should always be the same.
-            // Initialize it to an invalid value until then.
-            var keyMessageSessionId = -1;
-            // Remember the first ID to make sure the second one is different.
-            var firstRunKeyMessageSessionId = -1;
-
-            function keyAdded(event)
-            {
-                consoleWrite("keyadded event occurred");
-
-                testExpected("event.target", video);
-                testExpected("event instanceof window.MediaKeyEvent", true);
-
-                testExpected("event.keySystem", "webkit-org.w3.clearkey");
-                testExpected("event.sessionId == keyMessageSessionId", true);
-                // The other attributes are not used for this event.
-                testExpected("event.initData", null, "===");
-                testExpected("event.message", null, "===");
-                testExpected("event.defaultURL", "");
-                testExpected("event.errorCode", null, "===");
-                testExpected("event.systemCode", 0);
-
-                consoleWrite("");
-                // Cause a keyerror by passing an invalid key.
-                run("video.webkitAddKey('webkit-org.w3.clearkey', invalidKey, null, event.sessionId)");
-            }
-
-            function keyError(event)
-            {
-                consoleWrite("keyerror event occurred");
-
-                testExpected("event.target", video);
-                testExpected("event instanceof window.MediaKeyEvent", true);
-
-                testExpected("event.keySystem", "webkit-org.w3.clearkey");
-                testExpected("event.sessionId == keyMessageSessionId", true);
-                // The next three attributes are not used for this event.
-                testExpected("event.initData", null, "===");
-                testExpected("event.message", null, "===");
-                testExpected("event.defaultURL", "");
-                testExpected("event.errorCode.code", MediaKeyError.MEDIA_KEYERR_UNKNOWN);
-                // systemCode is not supported by the Clear Key key system.
-                testExpected("event.systemCode", 0);
-
-                if (isFirstRun) {
-                    isFirstRun = false;
-                    runTest();
-                } else {
-                    consoleWrite("");
-                    consoleWrite("Attributes are read-only.");
-                    run("event.keySystem = 'blah'");
-                    run("event.sessionId = 'blah'");
-                    run("event.initData = new Uint8Array([0x12])");
-                    run("event.message  = new Uint8Array([0x12])");
-                    run("event.defaultURL = 'example.com'");
-                    run("event.errorCode.code = MediaKeyError.MEDIA_KEYERR_CLIENT");
-                    run("event.systemCode = 123");
-
-                    testExpected("event.keySystem", "webkit-org.w3.clearkey");
-                    testExpected("event.sessionId == keyMessageSessionId", true);
-                    testExpected("event.initData", null, "===");
-                    testExpected("event.message", null, "===");
-                    testExpected("event.defaultURL", "");
-                    testExpected("event.errorCode.code", MediaKeyError.MEDIA_KEYERR_UNKNOWN);
-                    testExpected("event.systemCode", 0);
-
-                    endTest();
-                }
-            }
-
-            function keyMessage(event)
-            {
-                consoleWrite("keymessage event occurred");
-
-                testExpected("event.target", video);
-                testExpected("event instanceof window.MediaKeyEvent", true);
-
-                testExpected("event.keySystem", "webkit-org.w3.clearkey");
-
-                consoleWrite("The sessionId should be a non-empty string containing an integer.");
-                testExpected("event.sessionId", "", "!=");
-                testExpected("event.sessionId", null, "!=");
-                testExpected("event.sessionId", undefined, "!=");
-                testExpected("isNaN(event.sessionId)", false);
-                // Make sure the number is not a float.
-                testExpected("String(event.sessionId) == String(parseInt(event.sessionId))", true);
-                consoleWrite("Implementations should avoid sessionIds of 0.");
-                testExpected("event.sessionId", 0, ">");
-                // All other events should have this same sessionId.
-                keyMessageSessionId = event.sessionId;
-                if (isFirstRun)
-                    firstRunKeyMessageSessionId = keyMessageSessionId;
-                else {
-                    consoleWrite("The sessionsId should be different from the first run.");
-                    testExpected("event.sessionId != firstRunKeyMessageSessionId", true);
-                }
-
-                // initData is not used for this event.
-                testExpected("event.initData", null, "===");
-                // At least for now, the Clear Key message is the initData.
-                testArraysEqual("event.message", expectedInitData);
-                // Not supported by the test file.
-                testExpected("event.defaultURL", "");
-                // The error attributes are not used for this event.
-                testExpected("event.errorCode", null, "===");
-                testExpected("event.systemCode", 0);
-
-                consoleWrite("");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key, event.initData, event.sessionId)");
-            }
-
-            function needKey(event)
-            {
-                consoleWrite("needkey event occurred");
-                // Clear the handler (for the first case) to prevent the second needkey event
-                // (there will be one each for audio and video) from being handled.
-                video.onwebkitneedkey=null;
-
-                testExpected("event.target", video);
-                testExpected("event instanceof window.MediaKeyEvent", true);
-
-                testExpected("event.keySystem", "");
-                testExpected("event.sessionId", "");
-                testArraysEqual("event.initData", expectedInitData);
-                // The other attributes are not used for this event.
-                testExpected("event.message", null, "===");
-                testExpected("event.defaultURL", "");
-                testExpected("event.errorCode", null, "===");
-                testExpected("event.systemCode", 0);
-
-                consoleWrite("");
-                run("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey', event.initData)");
-            }
-
-            function runTest()
-            {
-                consoleWrite("");
-                if (isFirstRun) {
-                    consoleWrite("*** Test events using on* attributes. ***");
-                    video.onwebkitkeyadded=keyAdded;
-                    video.onwebkitkeyerror=keyError;
-                    video.onwebkitkeymessage=keyMessage;
-                    video.onwebkitneedkey=needKey;
-                } else {
-                    consoleWrite("*** Test events using addEventListener(). ***");
-
-                    // Clear the on* handlers.
-                    video.onwebkitkeyadded=null;
-                    video.onwebkitkeyerror=null;
-                    video.onwebkitkeymessage=null;
-                    video.onwebkitneedkey=null;
-
-                    waitForEvent('webkitkeyadded', keyAdded);
-                    waitForEvent('webkitkeyerror', keyError);
-                    waitForEvent('webkitkeymessage', keyMessage);
-                    waitForEventOnce('webkitneedkey', needKey);
-                }
-
-                video.src = "../../content/test-encrypted.webm";
-            }
-
-            consoleWrite("");
-            consoleWrite("*** Verify the presence of on* attributes. These would return undefined if they are not present. ***");
-            testExpected("video.onwebkitkeyadded", null, "===");
-            testExpected("video.onwebkitkeyerror", null, "===");
-            testExpected("video.onwebkitkeymessage", null, "===");
-            testExpected("video.onwebkitneedkey", null, "===");
-
-            runTest();
-
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded-expected.txt
deleted file mode 100644
index 3d55048..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded-expected.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: canPlayType()'s 'keySystem' parameter is deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-Test that the methods throw INVALID_STATE_ERR when the media element has not loaded. canPlayType() never throws.
-
-EXPECTED (video.networkState == '0') OK
-EXPECTED (video.currentSrc == '') OK
-No 'src'. Verify that all methods except canPlayType() throw INVALID_STATE_ERR.
-TEST(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', key)) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitCancelKeyRequest('webkit-org.w3.clearkey')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-RUN(video.canPlayType('audio/wav', 'webkit-org.w3.clearkey'))
-
-'src' has been set, but loading has not yet started. Verify that all methods except canPlayType() throw INVALID_STATE_ERR.
-EXPECTED (video.networkState == '3') OK
-EXPECTED (video.currentSrc == '') OK
-TEST(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', key)) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitCancelKeyRequest('webkit-org.w3.clearkey')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-RUN(video.canPlayType('audio/wav', 'webkit-org.w3.clearkey'))
-
-EVENT(loadstart)
-TEST(video.networkState == video.NETWORK_LOADING || video.networkState == video.NETWORK_IDLE) OK
-EXPECTED (video.currentSrc != '') OK
-Verify that none of the methods throw when load has started.
-RUN(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey'))
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key))
-RUN(video.webkitCancelKeyRequest('webkit-org.w3.clearkey'))
-RUN(video.canPlayType('audio/wav', 'webkit-org.w3.clearkey'))
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded.html
deleted file mode 100644
index 71f0123b..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-not-loaded.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!doctype html>
-<html lang="en">
-    <head>
-    </head>
-    <body>
-        <video></video>
-        <p>Test that the methods throw INVALID_STATE_ERR when the media element has not loaded. canPlayType() never throws.</p>
-
-        <script src=../../media-file.js></script>
-        <script src=../../video-test.js></script>
-        <script>
-            var key = new Uint8Array([0x51, 0x52, 0x53]);
-
-            function loadStarted()
-            {
-                test("video.networkState == video.NETWORK_LOADING || video.networkState == video.NETWORK_IDLE");
-                testExpected("video.currentSrc", "", "!=");
-                consoleWrite("Verify that none of the methods throw when load has started.");
-                run("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key)");
-                run("video.webkitCancelKeyRequest('webkit-org.w3.clearkey')");
-                run("video.canPlayType('audio/wav', 'webkit-org.w3.clearkey')");
-
-                endTest();
-            }
-
-            // Confirms the unloaded state.
-            testExpected("video.networkState", video.NETWORK_EMPTY);
-            testExpected("video.currentSrc", "");
-
-            consoleWrite("No 'src'. Verify that all methods except canPlayType() throw INVALID_STATE_ERR.");
-            testDOMException("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', key)", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitCancelKeyRequest('webkit-org.w3.clearkey')", "DOMException.INVALID_STATE_ERR");
-            run("video.canPlayType('audio/wav', 'webkit-org.w3.clearkey')");
-
-            video.setAttribute("src", findMediaFile("video", "../../content/test"));
-
-            consoleWrite("<br>'src' has been set, but loading has not yet started. Verify that all methods except canPlayType() throw INVALID_STATE_ERR.");
-
-            testExpected("video.networkState", video.NETWORK_NO_SOURCE);
-            testExpected("video.currentSrc", "");
-
-            testDOMException("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', key)", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitCancelKeyRequest('webkit-org.w3.clearkey')", "DOMException.INVALID_STATE_ERR");
-            run("video.canPlayType('audio/wav', 'webkit-org.w3.clearkey')");
-
-
-            consoleWrite("");
-            waitForEvent('loadstart', loadStarted);
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax-expected.txt b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax-expected.txt
deleted file mode 100644
index ae4acb87..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-CONSOLE WARNING: The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.
-Tests invalid and valid syntaxes.
-
-Test calling functions with too few parameters.
-TEST(video.webkitGenerateKeyRequest()) THROWS("TypeError: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': 1 argument required, but only 0 present.") OK
-TEST(video.webkitAddKey()) THROWS("TypeError: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': 2 arguments required, but only 0 present.") OK
-TEST(video.webkitAddKey('webkit-org.w3.clearkey')) THROWS("TypeError: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': 2 arguments required, but only 1 present.") OK
-TEST(video.webkitCancelKeyRequest()) THROWS("TypeError: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': 1 argument required, but only 0 present.") OK
-
-Verify invalid key system parameter is caught before checking whether loading has started.
-EXPECTED (video.networkState == '0') OK
-EXPECTED (video.currentSrc == '') OK
-TEST(video.webkitGenerateKeyRequest('')) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitGenerateKeyRequest(null)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitGenerateKeyRequest(undefined)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitAddKey('', key)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitAddKey(null, key)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitAddKey(undefined, key)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitCancelKeyRequest('')) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitCancelKeyRequest(null)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-TEST(video.webkitCancelKeyRequest(undefined)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': The key system provided is empty.) OK
-
-null key is caught before load state is checked.
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', '')) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key provided is invalid.) OK
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', null)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key provided is invalid.) OK
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', undefined)) THROWS(DOMException.SYNTAX_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key provided is invalid.) OK
-
-0-length key is caught before load state is checked.
-TEST(video.webkitAddKey('webkit-org.w3.clearkey', new Uint8Array())) THROWS(DOMException.TYPE_MISMATCH_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key provided is invalid.) OK
-
-Key system validity is not checked before loading.
-TEST(video.webkitGenerateKeyRequest('com.example.invalid')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitAddKey('com.example.invalid', key)) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': No media has been loaded.) OK
-TEST(video.webkitCancelKeyRequest('com.example.invalid')) THROWS(DOMException.INVALID_STATE_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': No media has been loaded.) OK
-
-EVENT(loadstart)
-Verify valid syntaxes do not throw.
-EXPECTED (video.networkState == '2') OK
-EXPECTED (video.currentSrc != '') OK
-RUN(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey'))
-RUN(video.webkitGenerateKeyRequest('webkit-org.w3.clearkey', initData))
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key))
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key, 'session'))
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key, initData))
-RUN(video.webkitAddKey('webkit-org.w3.clearkey', key, initData, 'session'))
-RUN(video.webkitCancelKeyRequest('webkit-org.w3.clearkey'))
-RUN(video.webkitCancelKeyRequest('webkit-org.w3.clearkey', 'session'))
-
-Unsupported key systems result in NOT_SUPPORTED_ERR.
-TEST(video.webkitGenerateKeyRequest('com.example.invalid')) THROWS(DOMException.NOT_SUPPORTED_ERR: Failed to execute 'webkitGenerateKeyRequest' on 'HTMLMediaElement': The key system provided ('com.example.invalid') is not supported.) OK
-TEST(video.webkitAddKey('com.example.invalid', key)) THROWS(DOMException.NOT_SUPPORTED_ERR: Failed to execute 'webkitAddKey' on 'HTMLMediaElement': The key system provided ('com.example.invalid') is not supported.) OK
-TEST(video.webkitCancelKeyRequest('com.example.invalid')) THROWS(DOMException.NOT_SUPPORTED_ERR: Failed to execute 'webkitCancelKeyRequest' on 'HTMLMediaElement': The key system provided ('com.example.invalid') is not supported.) OK
-END OF TEST
-
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax.html b/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax.html
deleted file mode 100644
index 80004c1..0000000
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/prefixed/encrypted-media-syntax.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!doctype html>
-<html lang="en">
-    <head>
-    </head>
-    <body>
-        <video></video>
-        <p>Tests invalid and valid syntaxes.</p>
-
-        <script src=../../media-file.js></script>
-        <script src=../../video-test.js></script>
-        <script>
-            var initData = new Uint8Array([0x51, 0x52, 0x53]);
-            var key = initData;
-
-            function loadStarted()
-            {
-                consoleWrite("Verify valid syntaxes do not throw.");
-                testExpected("video.networkState", video.NETWORK_LOADING);
-                testExpected("video.currentSrc", "", "!=");
-                run("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey')");
-                run("video.webkitGenerateKeyRequest('webkit-org.w3.clearkey', initData)");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key)");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key, 'session')");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key, initData)");
-                run("video.webkitAddKey('webkit-org.w3.clearkey', key, initData, 'session')");
-                run("video.webkitCancelKeyRequest('webkit-org.w3.clearkey')");
-                run("video.webkitCancelKeyRequest('webkit-org.w3.clearkey', 'session')");
-
-                consoleWrite("<br>Unsupported key systems result in NOT_SUPPORTED_ERR.");
-                testDOMException("video.webkitGenerateKeyRequest('com.example.invalid')", "DOMException.NOT_SUPPORTED_ERR");
-                testDOMException("video.webkitAddKey('com.example.invalid', key)", "DOMException.NOT_SUPPORTED_ERR");
-                testDOMException("video.webkitCancelKeyRequest('com.example.invalid')", "DOMException.NOT_SUPPORTED_ERR");
-
-                endTest();
-            }
-
-            consoleWrite("Test calling functions with too few parameters.");
-            testException("video.webkitGenerateKeyRequest()", '"TypeError: Failed to execute \'webkitGenerateKeyRequest\' on \'HTMLMediaElement\': 1 argument required, but only 0 present."');
-            testException("video.webkitAddKey()", '"TypeError: Failed to execute \'webkitAddKey\' on \'HTMLMediaElement\': 2 arguments required, but only 0 present."');
-            testException("video.webkitAddKey('webkit-org.w3.clearkey')", '"TypeError: Failed to execute \'webkitAddKey\' on \'HTMLMediaElement\': 2 arguments required, but only 1 present."');
-            testException("video.webkitCancelKeyRequest()", '"TypeError: Failed to execute \'webkitCancelKeyRequest\' on \'HTMLMediaElement\': 1 argument required, but only 0 present."');
-
-            consoleWrite("<br>Verify invalid key system parameter is caught before checking whether loading has started.");
-            // If the above was not the case, all of these would be INVALID_STATE_ERR.
-            // Also tests "null" case for first parameter.
-            testExpected("video.networkState", video.NETWORK_EMPTY);
-            testExpected("video.currentSrc", "");
-            testDOMException("video.webkitGenerateKeyRequest('')", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitGenerateKeyRequest(null)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitGenerateKeyRequest(undefined)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitAddKey('', key)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitAddKey(null, key)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitAddKey(undefined, key)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitCancelKeyRequest('')", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitCancelKeyRequest(null)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitCancelKeyRequest(undefined)", "DOMException.SYNTAX_ERR");
-
-            consoleWrite("<br>null key is caught before load state is checked.");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', '')", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', null)", "DOMException.SYNTAX_ERR");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', undefined)", "DOMException.SYNTAX_ERR");
-
-            consoleWrite("<br>0-length key is caught before load state is checked.");
-            testDOMException("video.webkitAddKey('webkit-org.w3.clearkey', new Uint8Array())", "DOMException.TYPE_MISMATCH_ERR");
-
-            consoleWrite("<br>Key system validity is not checked before loading.");
-            testDOMException("video.webkitGenerateKeyRequest('com.example.invalid')", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitAddKey('com.example.invalid', key)", "DOMException.INVALID_STATE_ERR");
-            testDOMException("video.webkitCancelKeyRequest('com.example.invalid')", "DOMException.INVALID_STATE_ERR");
-
-            // FIXME(82952): Add "test-encrypted" file.
-            video.setAttribute("src", findMediaFile("video", "../../content/test"));
-            consoleWrite("");
-            waitForEvent('loadstart', loadStarted);
-        </script>
-    </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
index 488b06b..52578e8 100644
--- a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
@@ -309,10 +309,6 @@
     property muted
     property networkState
     property onencrypted
-    property onwebkitkeyadded
-    property onwebkitkeyerror
-    property onwebkitkeymessage
-    property onwebkitneedkey
     property pause
     property paused
     property play
@@ -329,10 +325,7 @@
     property textTracks
     property videoTracks
     property volume
-    property webkitAddKey
     property webkitAudioDecodedByteCount
-    property webkitCancelKeyRequest
-    property webkitGenerateKeyRequest
     property webkitVideoDecodedByteCount
 html element b
 html element base
@@ -1058,10 +1051,6 @@
     property muted
     property networkState
     property onencrypted
-    property onwebkitkeyadded
-    property onwebkitkeyerror
-    property onwebkitkeymessage
-    property onwebkitneedkey
     property pause
     property paused
     property play
@@ -1081,9 +1070,7 @@
     property videoTracks
     property videoWidth
     property volume
-    property webkitAddKey
     property webkitAudioDecodedByteCount
-    property webkitCancelKeyRequest
     property webkitDecodedFrameCount
     property webkitDisplayingFullscreen
     property webkitDroppedFrameCount
@@ -1091,7 +1078,6 @@
     property webkitEnterFullscreen
     property webkitExitFullScreen
     property webkitExitFullscreen
-    property webkitGenerateKeyRequest
     property webkitSupportsFullscreen
     property webkitVideoDecodedByteCount
     property width
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 8781e81..7e722a12 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -2430,10 +2430,6 @@
     getter muted
     getter networkState
     getter onencrypted
-    getter onwebkitkeyadded
-    getter onwebkitkeyerror
-    getter onwebkitkeymessage
-    getter onwebkitneedkey
     getter paused
     getter playbackRate
     getter played
@@ -2457,9 +2453,6 @@
     method play
     method setMediaKeys
     method setSinkId
-    method webkitAddKey
-    method webkitCancelKeyRequest
-    method webkitGenerateKeyRequest
     setter autoplay
     setter controls
     setter crossOrigin
@@ -2470,10 +2463,6 @@
     setter loop
     setter muted
     setter onencrypted
-    setter onwebkitkeyadded
-    setter onwebkitkeyerror
-    setter onwebkitkeymessage
-    setter onwebkitneedkey
     setter playbackRate
     setter preload
     setter src
@@ -3296,25 +3285,6 @@
     attribute MEDIA_ERR_SRC_NOT_SUPPORTED
     getter code
     method constructor
-interface MediaKeyError
-    attribute MEDIA_KEYERR_CLIENT
-    attribute MEDIA_KEYERR_DOMAIN
-    attribute MEDIA_KEYERR_HARDWARECHANGE
-    attribute MEDIA_KEYERR_OUTPUT
-    attribute MEDIA_KEYERR_SERVICE
-    attribute MEDIA_KEYERR_UNKNOWN
-    getter code
-    getter systemCode
-    method constructor
-interface MediaKeyEvent : Event
-    getter defaultURL
-    getter errorCode
-    getter initData
-    getter keySystem
-    getter message
-    getter sessionId
-    getter systemCode
-    method constructor
 interface MediaKeyMessageEvent : Event
     getter message
     getter messageType
diff --git a/third_party/WebKit/Source/bindings/core/v8/Dictionary.cpp b/third_party/WebKit/Source/bindings/core/v8/Dictionary.cpp
index e871a3a..5304c6b 100644
--- a/third_party/WebKit/Source/bindings/core/v8/Dictionary.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/Dictionary.cpp
@@ -33,7 +33,6 @@
 #include "bindings/core/v8/V8DOMError.h"
 #include "bindings/core/v8/V8Element.h"
 #include "bindings/core/v8/V8EventTarget.h"
-#include "bindings/core/v8/V8MediaKeyError.h"
 #include "bindings/core/v8/V8MessagePort.h"
 #include "bindings/core/v8/V8TextTrack.h"
 #include "bindings/core/v8/V8VoidCallback.h"
diff --git a/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp b/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
index a7e2596..5bf06c376 100644
--- a/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/DictionaryHelperForCore.cpp
@@ -32,7 +32,6 @@
 #include "bindings/core/v8/V8DOMError.h"
 #include "bindings/core/v8/V8Element.h"
 #include "bindings/core/v8/V8EventTarget.h"
-#include "bindings/core/v8/V8MediaKeyError.h"
 #include "bindings/core/v8/V8MessagePort.h"
 #include "bindings/core/v8/V8TextTrack.h"
 #include "bindings/core/v8/V8Uint8Array.h"
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi
index b9f95d1f..3199fdc 100644
--- a/third_party/WebKit/Source/core/core.gypi
+++ b/third_party/WebKit/Source/core/core.gypi
@@ -237,8 +237,6 @@
             'html/HTMLUnknownElement.idl',
             'html/ImageData.idl',
             'html/MediaError.idl',
-            'html/MediaKeyError.idl',
-            'html/MediaKeyEvent.idl',
             'html/RadioNodeList.idl',
             'html/TextMetrics.idl',
             'html/TimeRanges.idl',
@@ -492,7 +490,6 @@
             'events/TransitionEvent.idl',
             'events/UIEvent.idl',
             'events/WheelEvent.idl',
-            'html/MediaKeyEvent.idl',
             'html/track/TrackEvent.idl',
             'svg/SVGZoomEvent.idl',
         ],
@@ -2923,9 +2920,6 @@
             'html/MediaError.h',
             'html/MediaFragmentURIParser.cpp',
             'html/MediaFragmentURIParser.h',
-            'html/MediaKeyError.h',
-            'html/MediaKeyEvent.cpp',
-            'html/MediaKeyEvent.h',
             'html/PluginDocument.cpp',
             'html/PluginDocument.h',
             'html/PublicURLManager.cpp',
@@ -3632,7 +3626,6 @@
             'frame/ScrollOptions.idl',
             'frame/ScrollToOptions.idl',
             'html/AssignedNodesOptions.idl',
-            'html/MediaKeyEventInit.idl',
             'html/canvas/CanvasContextCreationAttributes.idl',
             'html/track/TrackEventInit.idl',
             'imagebitmap/ImageBitmapOptions.idl',
@@ -3734,8 +3727,6 @@
             '<(blink_core_output_dir)/frame/ScrollToOptions.h',
             '<(blink_core_output_dir)/html/AssignedNodesOptions.cpp',
             '<(blink_core_output_dir)/html/AssignedNodesOptions.h',
-            '<(blink_core_output_dir)/html/MediaKeyEventInit.cpp',
-            '<(blink_core_output_dir)/html/MediaKeyEventInit.h',
             '<(blink_core_output_dir)/html/canvas/CanvasContextCreationAttributes.cpp',
             '<(blink_core_output_dir)/html/canvas/CanvasContextCreationAttributes.h',
             '<(blink_core_output_dir)/html/track/TrackEventInit.cpp',
diff --git a/third_party/WebKit/Source/core/frame/Deprecation.cpp b/third_party/WebKit/Source/core/frame/Deprecation.cpp
index b82a20e..56a5b695 100644
--- a/third_party/WebKit/Source/core/frame/Deprecation.cpp
+++ b/third_party/WebKit/Source/core/frame/Deprecation.cpp
@@ -247,14 +247,6 @@
     case UseCounter::RangeExpand:
         return replacedBy("'Range.expand()'", "'Selection.modify()'");
 
-    case UseCounter::PrefixedMediaAddKey:
-    case UseCounter::PrefixedMediaGenerateKeyRequest:
-    case UseCounter::PrefixedMediaCancelKeyRequest:
-        return "The prefixed Encrypted Media Extensions APIs are deprecated. Please use 'navigator.requestMediaKeySystemAccess()' instead.";
-
-    case UseCounter::CanPlayTypeKeySystem:
-        return replacedBy("canPlayType()'s 'keySystem' parameter", "'navigator.requestMediaKeySystemAccess()'");
-
     // Powerful features on insecure origins (https://goo.gl/rStTGz)
     case UseCounter::DeviceMotionInsecureOrigin:
         return "The devicemotion event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.";
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h
index 2d06790..83a55b3 100644
--- a/third_party/WebKit/Source/core/frame/UseCounter.h
+++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -119,8 +119,6 @@
         UnprefixedUserTiming = 67,
         WindowEvent = 69,
         ContentSecurityPolicyWithBaseElement = 70,
-        PrefixedMediaAddKey = 71,
-        PrefixedMediaGenerateKeyRequest = 72,
         DocumentClear = 74,
         XMLDocument = 77,
         XSLProcessingInstruction = 78,
@@ -222,8 +220,6 @@
         // The above items are available in M33 branch.
 
         InitMessageEvent = 222,
-        PrefixedMediaCancelKeyRequest = 229,
-        CanPlayTypeKeySystem = 232,
         PrefixedDevicePixelRatioMediaFeature = 233,
         PrefixedMaxDevicePixelRatioMediaFeature = 234,
         PrefixedMinDevicePixelRatioMediaFeature = 235,
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
index 94a7462..a10491cf 100644
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
@@ -215,7 +215,7 @@
     return emptyAtom;
 }
 
-bool canLoadURL(const KURL& url, const ContentType& contentType, const String& keySystem)
+bool canLoadURL(const KURL& url, const ContentType& contentType)
 {
     DEFINE_STATIC_LOCAL(const String, codecs, ("codecs"));
 
@@ -236,7 +236,7 @@
     // when used with parameters, e.g. "application/octet-stream;codecs=theora", is a type that the user agent knows
     // it cannot render.
     if (contentMIMEType != "application/octet-stream" || contentTypeCodecs.isEmpty()) {
-        WebMimeRegistry::SupportsType supported = Platform::current()->mimeRegistry()->supportsMediaMIMEType(contentMIMEType, contentTypeCodecs, keySystem.lower());
+        WebMimeRegistry::SupportsType supported = Platform::current()->mimeRegistry()->supportsMediaMIMEType(contentMIMEType, contentTypeCodecs);
         return supported > WebMimeRegistry::IsNotSupported;
     }
 
@@ -251,7 +251,7 @@
     autoplayHistogram.count(metric);
 }
 
-WebMimeRegistry::SupportsType HTMLMediaElement::supportsType(const ContentType& contentType, const String& keySystem)
+WebMimeRegistry::SupportsType HTMLMediaElement::supportsType(const ContentType& contentType)
 {
     DEFINE_STATIC_LOCAL(const String, codecs, ("codecs"));
 
@@ -262,7 +262,6 @@
     // The codecs string is not lower-cased because MP4 values are case sensitive
     // per http://tools.ietf.org/html/rfc4281#page-7.
     String typeCodecs = contentType.parameter(codecs);
-    String system = keySystem.lower();
 
     if (type.isEmpty())
         return WebMimeRegistry::IsNotSupported;
@@ -272,7 +271,7 @@
     if (type == "application/octet-stream")
         return WebMimeRegistry::IsNotSupported;
 
-    return Platform::current()->mimeRegistry()->supportsMediaMIMEType(type, typeCodecs, system);
+    return Platform::current()->mimeRegistry()->supportsMediaMIMEType(type, typeCodecs);
 }
 
 URLRegistry* HTMLMediaElement::s_mediaStreamRegistry = 0;
@@ -640,9 +639,9 @@
     return m_networkState;
 }
 
-String HTMLMediaElement::canPlayType(const String& mimeType, const String& keySystem) const
+String HTMLMediaElement::canPlayType(const String& mimeType) const
 {
-    WebMimeRegistry::SupportsType support = supportsType(ContentType(mimeType), keySystem);
+    WebMimeRegistry::SupportsType support = supportsType(ContentType(mimeType));
     String canPlay;
 
     // 4.8.10.3
@@ -658,7 +657,7 @@
         break;
     }
 
-    WTF_LOG(Media, "HTMLMediaElement::canPlayType(%p, %s, %s) -> %s", this, mimeType.utf8().data(), keySystem.utf8().data(), canPlay.utf8().data());
+    WTF_LOG(Media, "HTMLMediaElement::canPlayType(%p, %s) -> %s", this, mimeType.utf8().data(), canPlay.utf8().data());
 
     return canPlay;
 }
@@ -880,11 +879,10 @@
             return;
         }
 
-        // No type or key system information is available when the url comes
-        // from the 'src' attribute so MediaPlayer
+        // No type is available when the url comes from the 'src' attribute so MediaPlayer
         // will have to pick a media engine based on the file extension.
         ContentType contentType((String()));
-        loadResource(mediaURL, contentType, String());
+        loadResource(mediaURL, contentType);
         WTF_LOG(Media, "HTMLMediaElement::selectMediaResource(%p), using 'src' attribute url", this);
         return;
     }
@@ -896,8 +894,7 @@
 void HTMLMediaElement::loadNextSourceChild()
 {
     ContentType contentType((String()));
-    String keySystem;
-    KURL mediaURL = selectNextSourceChild(&contentType, &keySystem, Complain);
+    KURL mediaURL = selectNextSourceChild(&contentType, Complain);
     if (!mediaURL.isValid()) {
         waitForSourceChange();
         return;
@@ -907,15 +904,15 @@
     resetMediaPlayerAndMediaSource();
 
     m_loadState = LoadingFromSourceElement;
-    loadResource(mediaURL, contentType, keySystem);
+    loadResource(mediaURL, contentType);
 }
 
-void HTMLMediaElement::loadResource(const KURL& url, ContentType& contentType, const String& keySystem)
+void HTMLMediaElement::loadResource(const KURL& url, ContentType& contentType)
 {
     ASSERT(isMainThread());
     ASSERT(isSafeToLoadURL(url, Complain));
 
-    WTF_LOG(Media, "HTMLMediaElement::loadResource(%p, %s, %s, %s)", this, urlForLoggingMedia(url).utf8().data(), contentType.raw().utf8().data(), keySystem.utf8().data());
+    WTF_LOG(Media, "HTMLMediaElement::loadResource(%p, %s, %s)", this, urlForLoggingMedia(url).utf8().data(), contentType.raw().utf8().data());
 
     LocalFrame* frame = document().frame();
     if (!frame) {
@@ -967,7 +964,7 @@
         }
     }
 
-    if (attemptLoad && canLoadURL(url, contentType, keySystem)) {
+    if (attemptLoad && canLoadURL(url, contentType)) {
         ASSERT(!webMediaPlayer());
 
         if (!m_havePreparedToPlay && effectivePreloadType() == WebMediaPlayer::PreloadNone) {
@@ -2523,7 +2520,7 @@
     RefPtrWillBeRawPtr<HTMLSourceElement> currentSourceNode = m_currentSourceNode;
     RefPtrWillBeRawPtr<Node> nextNode = m_nextChildNodeToConsider;
 
-    KURL nextURL = selectNextSourceChild(0, 0, DoNothing);
+    KURL nextURL = selectNextSourceChild(0, DoNothing);
 
     m_currentSourceNode = currentSourceNode;
     m_nextChildNodeToConsider = nextNode;
@@ -2531,7 +2528,7 @@
     return nextURL.isValid();
 }
 
-KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, String* keySystem, InvalidURLAction actionIfInvalid)
+KURL HTMLMediaElement::selectNextSourceChild(ContentType* contentType, InvalidURLAction actionIfInvalid)
 {
 #if !LOG_DISABLED
     // Don't log if this was just called to find out if there are any valid <source> elements.
@@ -2552,7 +2549,6 @@
     Node* node;
     HTMLSourceElement* source = 0;
     String type;
-    String system;
     bool lookingForStartNode = m_nextChildNodeToConsider;
     bool canUseSourceElement = false;
 
@@ -2582,15 +2578,14 @@
             goto checkAgain;
 
         type = source->type();
-        // FIXME(82965): Add support for keySystem in <source> and set system from source.
         if (type.isEmpty() && mediaURL.protocolIsData())
             type = mimeTypeFromDataURL(mediaURL);
-        if (!type.isEmpty() || !system.isEmpty()) {
+        if (!type.isEmpty()) {
 #if !LOG_DISABLED
             if (shouldLog)
-                WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild(%p) - 'type' is '%s' - key system is '%s'", this, type.utf8().data(), system.utf8().data());
+                WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild(%p) - 'type' is '%s'", this, type.utf8().data());
 #endif
-            if (!supportsType(ContentType(type), system))
+            if (!supportsType(ContentType(type)))
                 goto checkAgain;
         }
 
@@ -2609,8 +2604,6 @@
     if (canUseSourceElement) {
         if (contentType)
             *contentType = ContentType(type);
-        if (keySystem)
-            *keySystem = system;
         m_currentSourceNode = source;
         m_nextChildNodeToConsider = source->nextSibling();
     } else {
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/HTMLMediaElement.h
index 6d9157f..e6741a8 100644
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.h
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.h
@@ -66,7 +66,7 @@
     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElement);
     WILL_BE_USING_PRE_FINALIZER(HTMLMediaElement, dispose);
 public:
-    static WebMimeRegistry::SupportsType supportsType(const ContentType&, const String& keySystem = String());
+    static WebMimeRegistry::SupportsType supportsType(const ContentType&);
 
     static void setMediaStreamRegistry(URLRegistry*);
     static bool isMediaStreamURL(const String& url);
@@ -111,7 +111,7 @@
 
     TimeRanges* buffered() const;
     void load();
-    String canPlayType(const String& mimeType, const String& keySystem = String()) const;
+    String canPlayType(const String& mimeType) const;
 
     // ready state
     enum ReadyState { HAVE_NOTHING, HAVE_METADATA, HAVE_CURRENT_DATA, HAVE_FUTURE_DATA, HAVE_ENOUGH_DATA };
@@ -340,7 +340,7 @@
     void prepareForLoad();
     void loadInternal();
     void selectMediaResource();
-    void loadResource(const KURL&, ContentType&, const String& keySystem);
+    void loadResource(const KURL&, ContentType&);
     void startPlayerLoad();
     void setPlayerPreload();
     WebMediaPlayer::LoadType loadType() const;
@@ -355,7 +355,7 @@
     void waitForSourceChange();
     void prepareToPlay();
 
-    KURL selectNextSourceChild(ContentType*, String* keySystem, InvalidURLAction);
+    KURL selectNextSourceChild(ContentType*, InvalidURLAction);
 
     void mediaLoadingFailed(WebMediaPlayer::NetworkState);
 
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.idl b/third_party/WebKit/Source/core/html/HTMLMediaElement.idl
index 196f025..9a13393 100644
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.idl
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.idl
@@ -87,7 +87,6 @@
     [RaisesException] TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
 
     // Non-standard APIs
-    [RuntimeEnabled=PrefixedEncryptedMedia, DeprecateAs=CanPlayTypeKeySystem] DOMString canPlayType(DOMString type, [TreatUndefinedAs=NullString] DOMString? keySystem);
     // The number of bytes consumed by the media decoder.
     [MeasureAs=PrefixedAudioDecodedByteCount] readonly attribute unsigned long webkitAudioDecodedByteCount;
     [MeasureAs=PrefixedVideoDecodedByteCount] readonly attribute unsigned long webkitVideoDecodedByteCount;
diff --git a/third_party/WebKit/Source/core/html/MediaKeyError.h b/third_party/WebKit/Source/core/html/MediaKeyError.h
deleted file mode 100644
index d5ca94f..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyError.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MediaKeyError_h
-#define MediaKeyError_h
-
-#include "bindings/core/v8/ScriptWrappable.h"
-#include "core/CoreExport.h"
-#include "platform/heap/Handle.h"
-
-namespace blink {
-
-class CORE_EXPORT MediaKeyError final : public GarbageCollected<MediaKeyError>, public ScriptWrappable {
-    DEFINE_WRAPPERTYPEINFO();
-public:
-    enum {
-        MEDIA_KEYERR_UNKNOWN = 1,
-        MEDIA_KEYERR_CLIENT,
-        MEDIA_KEYERR_SERVICE,
-        MEDIA_KEYERR_OUTPUT,
-        MEDIA_KEYERR_HARDWARECHANGE,
-        MEDIA_KEYERR_DOMAIN
-    };
-    typedef unsigned short Code;
-
-    static MediaKeyError* create(Code code, unsigned systemCode = 0)
-    {
-        return new MediaKeyError(code, systemCode);
-    }
-
-    Code code() const { return m_code; }
-    unsigned systemCode() { return m_systemCode; }
-
-    DEFINE_INLINE_TRACE() { }
-
-private:
-    MediaKeyError(Code code, unsigned systemCode)
-        : m_code(code)
-        , m_systemCode(systemCode)
-    {
-    }
-
-    Code m_code;
-    unsigned m_systemCode;
-};
-
-} // namespace blink
-
-#endif // MediaKeyError_h
diff --git a/third_party/WebKit/Source/core/html/MediaKeyError.idl b/third_party/WebKit/Source/core/html/MediaKeyError.idl
deleted file mode 100644
index 3a17a73..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyError.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    GarbageCollected,
-    RuntimeEnabled=PrefixedEncryptedMedia,
-] interface MediaKeyError {
-    const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
-    const unsigned short MEDIA_KEYERR_CLIENT = 2;
-    const unsigned short MEDIA_KEYERR_SERVICE = 3;
-    const unsigned short MEDIA_KEYERR_OUTPUT = 4;
-    const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
-    const unsigned short MEDIA_KEYERR_DOMAIN = 6;
-    readonly attribute unsigned short code;
-    [RuntimeEnabled=EncryptedMedia] readonly attribute unsigned long systemCode;
-};
diff --git a/third_party/WebKit/Source/core/html/MediaKeyEvent.cpp b/third_party/WebKit/Source/core/html/MediaKeyEvent.cpp
deleted file mode 100644
index 1f6f902..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyEvent.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "core/html/MediaKeyEvent.h"
-
-namespace blink {
-
-MediaKeyEvent::MediaKeyEvent()
-{
-}
-
-MediaKeyEvent::MediaKeyEvent(const AtomicString& type, const MediaKeyEventInit& initializer)
-    : Event(type, initializer)
-    , m_systemCode(0)
-{
-    if (initializer.hasKeySystem())
-        m_keySystem = initializer.keySystem();
-    if (initializer.hasSessionId())
-        m_sessionId = initializer.sessionId();
-    if (initializer.hasInitData())
-        m_initData = initializer.initData();
-    if (initializer.hasMessage())
-        m_message = initializer.message();
-    if (initializer.hasDefaultURL())
-        m_defaultURL = initializer.defaultURL();
-    if (initializer.hasErrorCode())
-        m_errorCode = initializer.errorCode();
-    if (initializer.hasSystemCode())
-        m_systemCode = initializer.systemCode();
-}
-
-MediaKeyEvent::~MediaKeyEvent()
-{
-}
-
-const AtomicString& MediaKeyEvent::interfaceName() const
-{
-    return EventNames::MediaKeyEvent;
-}
-
-DEFINE_TRACE(MediaKeyEvent)
-{
-    visitor->trace(m_errorCode);
-    Event::trace(visitor);
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/core/html/MediaKeyEvent.h b/third_party/WebKit/Source/core/html/MediaKeyEvent.h
deleted file mode 100644
index 37bfacb..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyEvent.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MediaKeyEvent_h
-#define MediaKeyEvent_h
-
-#include "core/CoreExport.h"
-#include "core/dom/DOMTypedArray.h"
-#include "core/events/Event.h"
-#include "core/html/MediaKeyError.h"
-#include "core/html/MediaKeyEventInit.h"
-
-namespace blink {
-
-class CORE_EXPORT MediaKeyEvent final : public Event {
-    DEFINE_WRAPPERTYPEINFO();
-public:
-    ~MediaKeyEvent() override;
-
-    static PassRefPtrWillBeRawPtr<MediaKeyEvent> create()
-    {
-        return adoptRefWillBeNoop(new MediaKeyEvent);
-    }
-
-    static PassRefPtrWillBeRawPtr<MediaKeyEvent> create(const AtomicString& type, const MediaKeyEventInit& initializer)
-    {
-        return adoptRefWillBeNoop(new MediaKeyEvent(type, initializer));
-    }
-
-    const AtomicString& interfaceName() const override;
-
-    String keySystem() const { return m_keySystem; }
-    String sessionId() const { return m_sessionId; }
-    DOMUint8Array* initData() const { return m_initData.get(); }
-    DOMUint8Array* message() const { return m_message.get(); }
-    String defaultURL() const { return m_defaultURL; }
-    MediaKeyError* errorCode() const { return m_errorCode.get(); }
-    unsigned short systemCode() const { return m_systemCode; }
-
-    DECLARE_VIRTUAL_TRACE();
-
-private:
-    MediaKeyEvent();
-    MediaKeyEvent(const AtomicString& type, const MediaKeyEventInit& initializer);
-
-    String m_keySystem;
-    String m_sessionId;
-    RefPtr<DOMUint8Array> m_initData;
-    RefPtr<DOMUint8Array> m_message;
-    String m_defaultURL;
-    PersistentWillBeMember<MediaKeyError> m_errorCode;
-    unsigned short m_systemCode;
-};
-
-} // namespace blink
-
-#endif // MediaKeyEvent_h
diff --git a/third_party/WebKit/Source/core/html/MediaKeyEvent.idl b/third_party/WebKit/Source/core/html/MediaKeyEvent.idl
deleted file mode 100644
index 1159db0..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyEvent.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    Constructor(DOMString type, optional MediaKeyEventInit eventInitDict),
-    RuntimeEnabled=PrefixedEncryptedMedia,
-] interface MediaKeyEvent : Event {
-    readonly attribute DOMString keySystem;
-    readonly attribute DOMString sessionId;
-    readonly attribute Uint8Array initData;
-    readonly attribute Uint8Array message;
-    readonly attribute DOMString defaultURL;
-    readonly attribute MediaKeyError? errorCode;
-    readonly attribute unsigned short systemCode;
-};
-
diff --git a/third_party/WebKit/Source/core/html/MediaKeyEventInit.idl b/third_party/WebKit/Source/core/html/MediaKeyEventInit.idl
deleted file mode 100644
index b8eb75a..0000000
--- a/third_party/WebKit/Source/core/html/MediaKeyEventInit.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-dictionary MediaKeyEventInit : EventInit {
-    DOMString keySystem;
-    DOMString sessionId;
-    Uint8Array initData;
-    Uint8Array message;
-    DOMString defaultURL;
-    MediaKeyError? errorCode;
-    unsigned short systemCode;
-};
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
index bab33a8f..ac87706 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
@@ -13,8 +13,6 @@
 #include "core/dom/DOMTypedArray.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/html/HTMLMediaElement.h"
-#include "core/html/MediaKeyError.h"
-#include "core/html/MediaKeyEvent.h"
 #include "modules/encryptedmedia/ContentDecryptionModuleResultPromise.h"
 #include "modules/encryptedmedia/EncryptedMediaUtils.h"
 #include "modules/encryptedmedia/MediaEncryptedEvent.h"
@@ -26,26 +24,6 @@
 
 namespace blink {
 
-static void throwExceptionIfMediaKeyExceptionOccurred(const String& keySystem, const String& sessionId, WebMediaPlayer::MediaKeyException exception, ExceptionState& exceptionState)
-{
-    switch (exception) {
-    case WebMediaPlayer::MediaKeyExceptionNoError:
-        return;
-    case WebMediaPlayer::MediaKeyExceptionInvalidPlayerState:
-        exceptionState.throwDOMException(InvalidStateError, "The player is in an invalid state.");
-        return;
-    case WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported:
-        exceptionState.throwDOMException(NotSupportedError, "The key system provided ('" + keySystem +"') is not supported.");
-        return;
-    case WebMediaPlayer::MediaKeyExceptionInvalidAccess:
-        exceptionState.throwDOMException(InvalidAccessError, "The session ID provided ('" + sessionId + "') is invalid.");
-        return;
-    }
-
-    ASSERT_NOT_REACHED();
-    return;
-}
-
 // This class allows MediaKeys to be set asynchronously.
 class SetMediaKeysHandler : public ScriptPromiseResolver {
     WTF_MAKE_NONCOPYABLE(SetMediaKeysHandler);
@@ -292,7 +270,6 @@
 
 HTMLMediaElementEncryptedMedia::HTMLMediaElementEncryptedMedia(HTMLMediaElement& element)
     : m_mediaElement(&element)
-    , m_emeMode(EmeModeNotSelected)
     , m_isWaitingForKey(false)
 {
 }
@@ -321,15 +298,6 @@
     return *supplement;
 }
 
-bool HTMLMediaElementEncryptedMedia::setEmeMode(EmeMode emeMode)
-{
-    if (m_emeMode != EmeModeNotSelected && m_emeMode != emeMode)
-        return false;
-
-    m_emeMode = emeMode;
-    return true;
-}
-
 MediaKeys* HTMLMediaElementEncryptedMedia::mediaKeys(HTMLMediaElement& element)
 {
     HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia::from(element);
@@ -341,9 +309,6 @@
     HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia::from(element);
     WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::setMediaKeys current(%p), new(%p)", thisElement.m_mediaKeys.get(), mediaKeys);
 
-    if (!thisElement.setEmeMode(EmeModeUnprefixed))
-        return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "Mixed use of EME prefixed and unprefixed API not allowed."));
-
     // 1. If mediaKeys and the mediaKeys attribute are the same object, return
     //    a promise resolved with undefined.
     if (thisElement.m_mediaKeys == mediaKeys)
@@ -365,198 +330,6 @@
     return MediaEncryptedEvent::create(EventTypeNames::encrypted, initializer);
 }
 
-// Create a 'needkey' MediaKeyEvent for v0.1b EME.
-static PassRefPtrWillBeRawPtr<Event> createWebkitNeedKeyEvent(const unsigned char* initData, unsigned initDataLength)
-{
-    MediaKeyEventInit webkitInitializer;
-    webkitInitializer.setInitData(DOMUint8Array::create(initData, initDataLength));
-
-    return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitializer);
-}
-
-void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& element, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionState& exceptionState)
-{
-    HTMLMediaElementEncryptedMedia::from(element).generateKeyRequest(element.webMediaPlayer(), keySystem, initData, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::generateKeyRequest(WebMediaPlayer* webMediaPlayer, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionState& exceptionState)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest");
-
-    if (!setEmeMode(EmeModePrefixed)) {
-        exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME prefixed and unprefixed API not allowed.");
-        return;
-    }
-
-    if (keySystem.isEmpty()) {
-        exceptionState.throwDOMException(SyntaxError, "The key system provided is empty.");
-        return;
-    }
-
-    if (!webMediaPlayer) {
-        exceptionState.throwDOMException(InvalidStateError, "No media has been loaded.");
-        return;
-    }
-
-    const unsigned char* initDataPointer = 0;
-    unsigned initDataLength = 0;
-    if (initData) {
-        initDataPointer = initData->data();
-        initDataLength = initData->length();
-    }
-
-    WebMediaPlayer::MediaKeyException result = webMediaPlayer->generateKeyRequest(keySystem, initDataPointer, initDataLength);
-    throwExceptionIfMediaKeyExceptionOccurred(keySystem, String(), result, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& mediaElement, const String& keySystem, ExceptionState& exceptionState)
-{
-    webkitGenerateKeyRequest(mediaElement, keySystem, DOMUint8Array::create(0), exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& element, const String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> initData, const String& sessionId, ExceptionState& exceptionState)
-{
-    HTMLMediaElementEncryptedMedia::from(element).addKey(element.webMediaPlayer(), keySystem, key, initData, sessionId, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::addKey(WebMediaPlayer* webMediaPlayer, const String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> initData, const String& sessionId, ExceptionState& exceptionState)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitAddKey");
-
-    if (!setEmeMode(EmeModePrefixed)) {
-        exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME prefixed and unprefixed API not allowed.");
-        return;
-    }
-
-    if (keySystem.isEmpty()) {
-        exceptionState.throwDOMException(SyntaxError, "The key system provided is empty.");
-        return;
-    }
-
-    if (!key) {
-        exceptionState.throwDOMException(SyntaxError, "The key provided is invalid.");
-        return;
-    }
-
-    if (!key->length()) {
-        exceptionState.throwDOMException(TypeMismatchError, "The key provided is invalid.");
-        return;
-    }
-
-    if (!webMediaPlayer) {
-        exceptionState.throwDOMException(InvalidStateError, "No media has been loaded.");
-        return;
-    }
-
-    const unsigned char* initDataPointer = 0;
-    unsigned initDataLength = 0;
-    if (initData) {
-        initDataPointer = initData->data();
-        initDataLength = initData->length();
-    }
-
-    WebMediaPlayer::MediaKeyException result = webMediaPlayer->addKey(keySystem, key->data(), key->length(), initDataPointer, initDataLength, sessionId);
-    throwExceptionIfMediaKeyExceptionOccurred(keySystem, sessionId, result, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& mediaElement, const String& keySystem, PassRefPtr<DOMUint8Array> key, ExceptionState& exceptionState)
-{
-    webkitAddKey(mediaElement, keySystem, key, DOMUint8Array::create(0), String(), exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest(HTMLMediaElement& element, const String& keySystem, const String& sessionId, ExceptionState& exceptionState)
-{
-    HTMLMediaElementEncryptedMedia::from(element).cancelKeyRequest(element.webMediaPlayer(), keySystem, sessionId, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::cancelKeyRequest(WebMediaPlayer* webMediaPlayer, const String& keySystem, const String& sessionId, ExceptionState& exceptionState)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest");
-
-    if (!setEmeMode(EmeModePrefixed)) {
-        exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME prefixed and unprefixed API not allowed.");
-        return;
-    }
-
-    if (keySystem.isEmpty()) {
-        exceptionState.throwDOMException(SyntaxError, "The key system provided is empty.");
-        return;
-    }
-
-    if (!webMediaPlayer) {
-        exceptionState.throwDOMException(InvalidStateError, "No media has been loaded.");
-        return;
-    }
-
-    WebMediaPlayer::MediaKeyException result = webMediaPlayer->cancelKeyRequest(keySystem, sessionId);
-    throwExceptionIfMediaKeyExceptionOccurred(keySystem, sessionId, result, exceptionState);
-}
-
-void HTMLMediaElementEncryptedMedia::keyAdded(const WebString& keySystem, const WebString& sessionId)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyAdded");
-
-    MediaKeyEventInit initializer;
-    initializer.setKeySystem(keySystem);
-    initializer.setSessionId(sessionId);
-
-    RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyadded, initializer);
-    event->setTarget(m_mediaElement);
-    m_mediaElement->scheduleEvent(event.release());
-}
-
-void HTMLMediaElementEncryptedMedia::keyError(const WebString& keySystem, const WebString& sessionId, WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode errorCode, unsigned short systemCode)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyError: sessionID=%s, errorCode=%d, systemCode=%d", sessionId.utf8().data(), errorCode, systemCode);
-
-    MediaKeyError::Code mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN;
-    switch (errorCode) {
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeUnknown:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN;
-        break;
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeClient:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_CLIENT;
-        break;
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeService:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_SERVICE;
-        break;
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeOutput:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_OUTPUT;
-        break;
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeHardwareChange:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_HARDWARECHANGE;
-        break;
-    case WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCodeDomain:
-        mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_DOMAIN;
-        break;
-    }
-
-    MediaKeyEventInit initializer;
-    initializer.setKeySystem(keySystem);
-    initializer.setSessionId(sessionId);
-    initializer.setErrorCode(MediaKeyError::create(mediaKeyErrorCode));
-    initializer.setSystemCode(systemCode);
-
-    RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyerror, initializer);
-    event->setTarget(m_mediaElement);
-    m_mediaElement->scheduleEvent(event.release());
-}
-
-void HTMLMediaElementEncryptedMedia::keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL)
-{
-    WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessionID=%s", sessionId.utf8().data());
-
-    MediaKeyEventInit initializer;
-    initializer.setKeySystem(keySystem);
-    initializer.setSessionId(sessionId);
-    initializer.setMessage(DOMUint8Array::create(message, messageLength));
-    initializer.setDefaultURL(KURL(defaultURL));
-
-    RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeymessage, initializer);
-    event->setTarget(m_mediaElement);
-    m_mediaElement->scheduleEvent(event.release());
-}
-
 void HTMLMediaElementEncryptedMedia::encrypted(WebEncryptedMediaInitDataType initDataType, const unsigned char* initData, unsigned initDataLength)
 {
     WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::encrypted");
@@ -575,13 +348,6 @@
         event->setTarget(m_mediaElement);
         m_mediaElement->scheduleEvent(event.release());
     }
-
-    if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) {
-        // Send event for v0.1b EME.
-        RefPtrWillBeRawPtr<Event> event = createWebkitNeedKeyEvent(initData, initDataLength);
-        event->setTarget(m_mediaElement);
-        m_mediaElement->scheduleEvent(event.release());
-    }
 }
 
 void HTMLMediaElementEncryptedMedia::didBlockPlaybackWaitingForKey()
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
index 64f02233..5664b37 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
@@ -28,27 +28,11 @@
     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementEncryptedMedia);
     USING_FAST_MALLOC_WILL_BE_REMOVED(HTMLMediaElementEncryptedMedia);
 public:
-    // encrypted media extensions (v0.1b)
-    static void webkitGenerateKeyRequest(HTMLMediaElement&, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionState&);
-    static void webkitGenerateKeyRequest(HTMLMediaElement&, const String& keySystem, ExceptionState&);
-    static void webkitAddKey(HTMLMediaElement&, const String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> initData, const String& sessionId, ExceptionState&);
-    static void webkitAddKey(HTMLMediaElement&, const String& keySystem, PassRefPtr<DOMUint8Array> key, ExceptionState&);
-    static void webkitCancelKeyRequest(HTMLMediaElement&, const String& keySystem, const String& sessionId, ExceptionState&);
-
-    DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(webkitkeyadded);
-    DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(webkitkeyerror);
-    DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(webkitkeymessage);
-    DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(webkitneedkey);
-
-    // encrypted media extensions (WD)
     static MediaKeys* mediaKeys(HTMLMediaElement&);
     static ScriptPromise setMediaKeys(ScriptState*, HTMLMediaElement&, MediaKeys*);
     DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(encrypted);
 
     // WebMediaPlayerEncryptedMediaClient methods
-    void keyAdded(const WebString& keySystem, const WebString& sessionId) final;
-    void keyError(const WebString& keySystem, const WebString& sessionId, WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode, unsigned short systemCode) final;
-    void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) final;
     void encrypted(WebEncryptedMediaInitDataType, const unsigned char* initData, unsigned initDataLength) final;
     void didBlockPlaybackWaitingForKey() final;
     void didResumePlaybackBlockedForKey() final;
@@ -65,26 +49,12 @@
     friend class SetMediaKeysHandler;
 
     HTMLMediaElementEncryptedMedia(HTMLMediaElement&);
-    void generateKeyRequest(WebMediaPlayer*, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionState&);
-    void addKey(WebMediaPlayer*, const String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> initData, const String& sessionId, ExceptionState&);
-    void cancelKeyRequest(WebMediaPlayer*, const String& keySystem, const String& sessionId, ExceptionState&);
 
     // EventTarget
     bool setAttributeEventListener(const AtomicString& eventType, PassRefPtrWillBeRawPtr<EventListener>);
     EventListener* getAttributeEventListener(const AtomicString& eventType);
 
-    // Currently we have both EME v0.1b and EME WD implemented in media element.
-    // But we do not want to support both at the same time. The one used first
-    // will be supported. Use |m_emeMode| to track this selection.
-    // FIXME: Remove EmeMode once EME v0.1b support is removed. See crbug.com/249976.
-    enum EmeMode { EmeModeNotSelected, EmeModePrefixed, EmeModeUnprefixed };
-
-    // check (and set if necessary) the encrypted media extensions (EME) mode
-    // (v0.1b or WD). Returns whether the mode is allowed and successfully set.
-    bool setEmeMode(EmeMode);
-
     RawPtrWillBeMember<HTMLMediaElement> m_mediaElement;
-    EmeMode m_emeMode;
 
     bool m_isWaitingForKey;
 
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
index 3d47a088..f096397 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
+++ b/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
@@ -3,15 +3,6 @@
 // found in the LICENSE file.
 
 partial interface HTMLMediaElement {
-    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaGenerateKeyRequest, LegacyInterfaceTypeChecking] void webkitGenerateKeyRequest([TreatUndefinedAs=NullString] DOMString? keySystem, optional Uint8Array initData);
-    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaAddKey, LegacyInterfaceTypeChecking] void webkitAddKey([TreatUndefinedAs=NullString] DOMString? keySystem, Uint8Array key, optional Uint8Array initData, optional DOMString sessionId = null);
-    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaCancelKeyRequest] void webkitCancelKeyRequest([TreatUndefinedAs=NullString] DOMString? keySystem, optional DOMString sessionId = null);
-
-    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyadded;
-    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyerror;
-    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeymessage;
-    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitneedkey;
-
     [RuntimeEnabled=EncryptedMedia] readonly attribute MediaKeys mediaKeys;
     [RuntimeEnabled=EncryptedMedia, CallWith=ScriptState] Promise setMediaKeys(MediaKeys? mediaKeys);
     [RuntimeEnabled=EncryptedMedia] attribute EventHandler onencrypted;
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
index 044a42a..29666c0c 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeyMessageEvent.h
@@ -27,7 +27,6 @@
 #ifndef MediaKeyMessageEvent_h
 #define MediaKeyMessageEvent_h
 
-#include "core/html/MediaKeyError.h"
 #include "modules/EventModules.h"
 #include "modules/encryptedmedia/MediaKeyMessageEventInit.h"
 
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
index f01ae7f..d9ac427 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp
@@ -34,7 +34,6 @@
 #include "core/dom/ExceptionCode.h"
 #include "core/events/Event.h"
 #include "core/events/GenericEventQueue.h"
-#include "core/html/MediaKeyError.h"
 #include "modules/encryptedmedia/ContentDecryptionModuleResultPromise.h"
 #include "modules/encryptedmedia/EncryptedMediaUtils.h"
 #include "modules/encryptedmedia/MediaKeyMessageEvent.h"
diff --git a/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp b/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
index 0243901a..6db9457 100644
--- a/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
+++ b/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
@@ -251,7 +251,7 @@
 
     // Note: MediaSource.isTypeSupported() returning true implies that HTMLMediaElement.canPlayType() will return "maybe" or "probably"
     // since it does not make sense for a MediaSource to support a type the HTMLMediaElement knows it cannot play.
-    if (HTMLMediaElement::supportsType(contentType, String()) == WebMimeRegistry::IsNotSupported) {
+    if (HTMLMediaElement::supportsType(contentType) == WebMimeRegistry::IsNotSupported) {
         WTF_LOG(Media, "MediaSource::isTypeSupported(%s) -> false (not supported by HTMLMediaElement)", type.ascii().data());
         return false;
     }
diff --git a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
index d6187a7..7713541 100644
--- a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
+++ b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
@@ -68,6 +68,7 @@
 ForceDisplayList2dCanvas
 // See crbug.com/585250.
 ForceDisable2dCanvasCopyOnWrite
+// See https://crbug.com/582618.
 EncryptedMedia status=stable
 ExecCommandInJavaScript status=test
 ComputedAccessibilityInfo status=experimental
@@ -144,7 +145,6 @@
 PermissionsRequestRevoke status=experimental
 PointerEvent
 PreciseMemoryInfo
-PrefixedEncryptedMedia status=test
 // This feature is deprecated and we are evangelizing affected sites.
 // See https://crbug.com/346236 for current status.
 PrefixedVideoFullscreen status=stable
diff --git a/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp b/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
index c5ba5da..8c8dc85 100644
--- a/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
+++ b/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
@@ -115,16 +115,6 @@
     return RuntimeEnabledFeatures::encryptedMediaEnabled();
 }
 
-void WebRuntimeFeatures::enablePrefixedEncryptedMedia(bool enable)
-{
-    RuntimeEnabledFeatures::setPrefixedEncryptedMediaEnabled(enable);
-}
-
-bool WebRuntimeFeatures::isPrefixedEncryptedMediaEnabled()
-{
-    return RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled();
-}
-
 void WebRuntimeFeatures::enableExperimentalCanvasFeatures(bool enable)
 {
     RuntimeEnabledFeatures::setExperimentalCanvasFeaturesEnabled(enable);
diff --git a/third_party/WebKit/public/platform/WebMediaPlayer.h b/third_party/WebKit/public/platform/WebMediaPlayer.h
index 47f3022..b3739b4d 100644
--- a/third_party/WebKit/public/platform/WebMediaPlayer.h
+++ b/third_party/WebKit/public/platform/WebMediaPlayer.h
@@ -82,15 +82,6 @@
         Aggressive,
     };
 
-    // Represents synchronous exceptions that can be thrown from the Encrypted
-    // Media methods. This is different from the asynchronous MediaKeyError.
-    enum MediaKeyException {
-        MediaKeyExceptionNoError,
-        MediaKeyExceptionInvalidPlayerState,
-        MediaKeyExceptionKeySystemNotSupported,
-        MediaKeyExceptionInvalidAccess,
-    };
-
     enum CORSMode {
         CORSModeUnspecified,
         CORSModeAnonymous,
@@ -184,11 +175,6 @@
 
     virtual WebAudioSourceProvider* audioSourceProvider() { return nullptr; }
 
-    // Returns whether keySystem is supported. If true, the result will be
-    // reported by an event.
-    virtual MediaKeyException generateKeyRequest(const WebString& keySystem, const unsigned char* initData, unsigned initDataLength) { return MediaKeyExceptionKeySystemNotSupported; }
-    virtual MediaKeyException addKey(const WebString& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
-    virtual MediaKeyException cancelKeyRequest(const WebString& keySystem, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
     virtual void setContentDecryptionModule(WebContentDecryptionModule* cdm, WebContentDecryptionModuleResult result) { result.completeWithError(WebContentDecryptionModuleExceptionNotSupportedError, 0, "ERROR"); }
 
     // Sets the poster image URL.
diff --git a/third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h b/third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h
index 98a6076..5519a3d9 100644
--- a/third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h
+++ b/third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h
@@ -41,18 +41,6 @@
 
 class BLINK_PLATFORM_EXPORT WebMediaPlayerEncryptedMediaClient {
 public:
-    enum MediaKeyErrorCode {
-        MediaKeyErrorCodeUnknown = 1,
-        MediaKeyErrorCodeClient,
-        MediaKeyErrorCodeService,
-        MediaKeyErrorCodeOutput,
-        MediaKeyErrorCodeHardwareChange,
-        MediaKeyErrorCodeDomain
-    };
-
-    virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) = 0;
-    virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) = 0;
-    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) = 0;
     virtual void encrypted(WebEncryptedMediaInitDataType, const unsigned char* initData, unsigned initDataLength) = 0;
     virtual void didBlockPlaybackWaitingForKey() = 0;
     virtual void didResumePlaybackBlockedForKey() = 0;
diff --git a/third_party/WebKit/public/platform/WebMimeRegistry.h b/third_party/WebKit/public/platform/WebMimeRegistry.h
index bbd84e3..1598d208 100644
--- a/third_party/WebKit/public/platform/WebMimeRegistry.h
+++ b/third_party/WebKit/public/platform/WebMimeRegistry.h
@@ -43,7 +43,7 @@
     virtual SupportsType supportsImageMIMEType(const WebString& mimeType) = 0;
     virtual SupportsType supportsImagePrefixedMIMEType(const WebString& mimeType) = 0;
     virtual SupportsType supportsJavaScriptMIMEType(const WebString& mimeType) = 0;
-    virtual SupportsType supportsMediaMIMEType(const WebString& mimeType, const WebString& codecs, const WebString& keySystem) = 0;
+    virtual SupportsType supportsMediaMIMEType(const WebString& mimeType, const WebString& codecs) = 0;
 
     virtual bool supportsMediaSourceMIMEType(const WebString& mimeType, const WebString& codecs) = 0;
 
diff --git a/third_party/WebKit/public/web/WebRuntimeFeatures.h b/third_party/WebKit/public/web/WebRuntimeFeatures.h
index b49ed7c..f96ba67 100644
--- a/third_party/WebKit/public/web/WebRuntimeFeatures.h
+++ b/third_party/WebKit/public/web/WebRuntimeFeatures.h
@@ -73,9 +73,6 @@
     BLINK_EXPORT static void enableEncryptedMedia(bool);
     BLINK_EXPORT static bool isEncryptedMediaEnabled();
 
-    BLINK_EXPORT static void enablePrefixedEncryptedMedia(bool);
-    BLINK_EXPORT static bool isPrefixedEncryptedMediaEnabled();
-
     BLINK_EXPORT static void enableCompositorAnimationTimelines(bool);
 
     BLINK_EXPORT static void enableExperimentalCanvasFeatures(bool);
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 6bc9436..91827ae 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -19361,11 +19361,17 @@
 </histogram>
 
 <histogram name="Media.EME.ClearKey.addKey" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>addKey result using the Clear Key key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.ClearKey.cancelKeyRequest" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>cancelKeyRequest result using the Clear Key key system.</summary>
 </histogram>
@@ -19379,22 +19385,34 @@
 
 <histogram name="Media.EME.ClearKey.generateKeyRequest"
     enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>generateKeyRequest result using the Clear Key key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.ClearKey.KeyAdded">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyAdded event count using the Clear Key key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.ClearKey.KeyError" enum="MediaKeyError">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyError event count using the Clear Key key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.KeySystemSupport.Widevine"
     enum="MediaKeySystemSupportStatus">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>
     Key system support query status and result. Each enum value will be reported
@@ -19434,11 +19452,17 @@
 </histogram>
 
 <histogram name="Media.EME.Unknown.addKey" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>addKey result using an unknown key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Unknown.cancelKeyRequest" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>cancelKeyRequest result using an unknown key system.</summary>
 </histogram>
@@ -19451,16 +19475,25 @@
 </histogram>
 
 <histogram name="Media.EME.Unknown.generateKeyRequest" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>generateKeyRequest result using an unknown key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Unknown.KeyAdded">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyAdded event count using an unknown key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Unknown.KeyError" enum="MediaKeyError">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyError event count using an unknown key system.</summary>
 </histogram>
@@ -19479,11 +19512,17 @@
 </histogram>
 
 <histogram name="Media.EME.Widevine.addKey" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>addKey result using the Widevine key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Widevine.cancelKeyRequest" enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>cancelKeyRequest result using the Widevine key system.</summary>
 </histogram>
@@ -19497,16 +19536,25 @@
 
 <histogram name="Media.EME.Widevine.generateKeyRequest"
     enum="MediaKeyException">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>generateKeyRequest result using the Widevine key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Widevine.KeyAdded">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyAdded event count using the Widevine key system.</summary>
 </histogram>
 
 <histogram name="Media.EME.Widevine.KeyError" enum="MediaKeyError">
+  <obsolete>
+    Deprecated 02/2016 with removal of prefixed EME.
+  </obsolete>
   <owner>xhwang@chromium.org</owner>
   <summary>KeyError event count using the Widevine key system.</summary>
 </histogram>