Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: media/cdm/ppapi/clear_key_cdm.cc

Issue 93243003: Add CDM FileIO tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/cdm/ppapi/clear_key_cdm.cc
diff --git a/media/cdm/ppapi/clear_key_cdm.cc b/media/cdm/ppapi/clear_key_cdm.cc
index 3728eff905543c169e6792eaca1f8886a0d656bb..0e75e74833ac92057b3b51d354748266268167b7 100644
--- a/media/cdm/ppapi/clear_key_cdm.cc
+++ b/media/cdm/ppapi/clear_key_cdm.cc
@@ -15,6 +15,7 @@
#include "base/time/time.h"
#include "media/base/decoder_buffer.h"
#include "media/base/decrypt_config.h"
+#include "media/cdm/ppapi/cdm_file_io_test.h"
#include "media/cdm/ppapi/cdm_video_decoder.h"
#if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER)
@@ -68,6 +69,8 @@ const int64 kMaxTimerDelayMs = 1 * kSecondsPerMinute * kMsPerSecond;
// Heart beat message header. If a key message starts with |kHeartBeatHeader|,
// it's a heart beat message. Otherwise, it's a key request.
const char kHeartBeatHeader[] = "HEARTBEAT";
+// CDM file IO test result header.
+const char kCdmFileIOTestResultHeader[] = "CDMFILEIOTESTRESULT";
// Copies |input_buffer| into a media::DecoderBuffer. If the |input_buffer| is
// empty, an empty (end-of-stream) media::DecoderBuffer is returned.
@@ -105,6 +108,12 @@ static scoped_refptr<media::DecoderBuffer> CopyDecoderBufferFrom(
return output_buffer;
}
+std::string GetCdmFileIOTestResultMessage(bool success) {
+ std::string message(kCdmFileIOTestResultHeader);
+ message += success ? '1' : '0';
+ return message;
+}
+
template<typename Type>
class ScopedResetter {
public:
@@ -237,14 +246,18 @@ cdm::Status ClearKeyCdm::GenerateKeyRequest(const char* type,
return cdm::kSessionError;
}
+ std::string session_id = client_.session_id();
+
host_->SendKeyMessage(
- client_.session_id().data(), client_.session_id().size(),
+ session_id.data(), session_id.size(),
reinterpret_cast<const char*>(&client_.key_message()[0]),
client_.key_message().size(),
client_.default_url().data(), client_.default_url().size());
- // Only save the latest session ID for heartbeat messages.
- heartbeat_session_id_ = client_.session_id();
+ // Save the latest session ID for heartbeat and file IO test messages.
+ last_session_id_ = client_.session_id();
+
+ StartCdmFileIOTest();
return cdm::kSuccess;
}
@@ -310,7 +323,7 @@ void ClearKeyCdm::TimerExpired(void* context) {
const char url[] = "http://test.externalclearkey.chromium.org";
host_->SendKeyMessage(
- heartbeat_session_id_.data(), heartbeat_session_id_.size(),
+ last_session_id_.data(), last_session_id_.size(),
heartbeat_message.data(), heartbeat_message.size(),
url, arraysize(url) - 1);
@@ -604,4 +617,28 @@ cdm::Status ClearKeyCdm::GenerateFakeAudioFrames(
}
#endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER
+void ClearKeyCdm::StartCdmFileIOTest() {
+ cdm_file_io_test_.reset(new CdmFileIOTest());
+
+ cdm::CdmFileIO* cdm_file_io = host_->GetCdmFileIO(cdm_file_io_test_.get());
ddorwin 2013/12/04 05:27:08 Could/should we encapsulate this in the test file
xhwang 2013/12/10 01:24:25 Done.
+ if (!cdm_file_io) {
+ DVLOG(1) << "Cannot get CDM File IO interface";
+ OnCdmFileIOTestComplete(false);
+ return;
+ }
+
+ cdm_file_io_test_->Run(cdm_file_io,
+ base::Bind(&ClearKeyCdm::OnCdmFileIOTestComplete,
+ base::Unretained(this)));
+}
+
+void ClearKeyCdm::OnCdmFileIOTestComplete(bool success) {
+ DVLOG(1) << __FUNCTION__ << ": " << success;
+ std::string message = GetCdmFileIOTestResultMessage(success);
+ host_->SendKeyMessage(last_session_id_.data(), last_session_id_.size(),
+ message.data(), message.size(),
+ NULL, 0);
+ cdm_file_io_test_.reset();
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698