summaryrefslogtreecommitdiffstats
path: root/media/cdm
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 04:23:29 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 04:23:29 +0000
commita27d34ab68aa875f665b043129b6315dd9e62224 (patch)
tree59c2630c3b54d0d6810b5c644b5f247cbc360a3f /media/cdm
parent7819ffcdd83a316cf2f010fcfd22ed89c355d5d9 (diff)
downloadchromium_src-a27d34ab68aa875f665b043129b6315dd9e62224.zip
chromium_src-a27d34ab68aa875f665b043129b6315dd9e62224.tar.gz
chromium_src-a27d34ab68aa875f665b043129b6315dd9e62224.tar.bz2
Handle plugin instance crash in ContentDecryptorDelegate.
BUG=chrome-os-partner:17801 TEST=Kill Widevine CDM process and we get decode error. Review URL: https://codereview.chromium.org/116443009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243762 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/cdm')
-rw-r--r--media/cdm/ppapi/external_clear_key/clear_key_cdm.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc b/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc
index 9dfea99..9cdd9c3 100644
--- a/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc
+++ b/media/cdm/ppapi/external_clear_key/clear_key_cdm.cc
@@ -66,6 +66,9 @@ const char kExternalClearKeyDecryptOnlyKeySystem[] =
"org.chromium.externalclearkey.decryptonly";
const char kExternalClearKeyFileIOTestKeySystem[] =
"org.chromium.externalclearkey.fileiotest";
+const char kExternalClearKeyCrashKeySystem[] =
+ "org.chromium.externalclearkey.crash";
+
const int64 kSecondsPerMinute = 60;
const int64 kMsPerSecond = 1000;
const int64 kInitialTimerDelayMs = 200;
@@ -147,7 +150,8 @@ void* CreateCdmInstance(int cdm_interface_version,
std::string key_system_string(key_system, key_system_size);
if (key_system_string != kExternalClearKeyKeySystem &&
key_system_string != kExternalClearKeyDecryptOnlyKeySystem &&
- key_system_string != kExternalClearKeyFileIOTestKeySystem) {
+ key_system_string != kExternalClearKeyFileIOTestKeySystem &&
+ key_system_string != kExternalClearKeyCrashKeySystem) {
DVLOG(1) << "Unsupported key system:" << key_system_string;
return NULL;
}
@@ -391,6 +395,10 @@ cdm::Status ClearKeyCdm::DecryptAndDecodeSamples(
cdm::AudioFrames* audio_frames) {
DVLOG(1) << "DecryptAndDecodeSamples()";
+ // Trigger a crash on purpose for testing purpose.
+ if (key_system_ == kExternalClearKeyCrashKeySystem)
+ CHECK(false);
+
scoped_refptr<media::DecoderBuffer> buffer;
cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer);