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

Unified Diff: media/remoting/rpc/rpc_unittest.cc

Issue 2261503002: Define remote playback proto buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add OWNERS file Created 4 years, 3 months 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
« media/remoting/rpc/rpc.cc ('K') | « media/remoting/rpc/rpc.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/remoting/rpc/rpc_unittest.cc
diff --git a/media/remoting/rpc/rpc_unittest.cc b/media/remoting/rpc/rpc_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e3a1ec6177b649d7df18a123fee88b2b3ca3c8b3
--- /dev/null
+++ b/media/remoting/rpc/rpc_unittest.cc
@@ -0,0 +1,641 @@
+// Copyright 2016 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/remoting/rpc/rpc.h"
+
+#include <memory>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "media/base/audio_decoder_config.h"
+#include "media/base/cdm_config.h"
+#include "media/base/cdm_key_information.h"
+#include "media/base/demuxer_stream.h"
+#include "media/base/eme_constants.h"
+#include "media/base/media_keys.h"
+#include "media/base/video_decoder_config.h"
+#include "media/remoting/remoting_rpc_message.pb.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+using testing::Invoke;
+using testing::Return;
+
+namespace media {
+namespace remoting {
+
+class RemotingRpcTest : public testing::Test {
+ protected:
+ void SetUp() override {}
+};
+
+TEST_F(RemotingRpcTest, GarbageInput) {
+ std::string proto_buffer_string("$%@#$@$%$&%^&^%*^&^&....");
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(!to_rpc);
+}
+
+// Test RPC message which has single integer message.
+TEST_F(RemotingRpcTest, AcquireRendererRpc) {
+ int rpc_handle = 3;
+
+ // Convert RPC data structure into proto buffer string
+ int value = 0;
+ scoped_refptr<Rpc> from_rpc(new AcquireRendererRpc(rpc_handle, value));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ AcquireRendererRpc* actual_to_rpc =
+ static_cast<AcquireRendererRpc*>(to_rpc.get());
+ ASSERT_EQ(value, actual_to_rpc->value());
+}
+
+// Test RPC message which has single double message.
+TEST_F(RemotingRpcTest, RendererSetPlaybackRateRpc) {
+ int rpc_handle = 3;
+
+ // Convert RPC data structure into proto buffer string
+ double value = 1.1;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererSetPlaybackRateRpc(rpc_handle, value));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererSetPlaybackRateRpc* actual_to_rpc =
+ static_cast<RendererSetPlaybackRateRpc*>(to_rpc.get());
+ ASSERT_EQ(value, actual_to_rpc->value());
+}
+
+// Test RPC message which has single boolean message.
+TEST_F(RemotingRpcTest, RendererInitializeCallbackRpc) {
+ int rpc_handle = 3;
+
+ // Convert RPC data structure into proto buffer string
+ bool value = true;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererInitializeCallbackRpc(rpc_handle, value));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererInitializeCallbackRpc* actual_to_rpc =
+ static_cast<RendererInitializeCallbackRpc*>(to_rpc.get());
+ ASSERT_EQ(value, actual_to_rpc->value());
+}
+
+// Test RPC message which has no additional message.
+TEST_F(RemotingRpcTest, RendererFlushUntilCallbackRpc) {
+ int rpc_handle = 3;
+
+ // Convert RPC data structure into proto buffer string
+ scoped_refptr<Rpc> from_rpc(new RendererFlushUntilCallbackRpc(rpc_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+}
+
+// Following are the RPC message which have various data structure.
+TEST_F(RemotingRpcTest, RendererInitializeRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ int client_handle = 4;
+ int audio_demuxer_handle = 5;
+ int video_demuxer_handle = 6;
+ int callback_handle = 7;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererInitializeRpc(rpc_handle, client_handle, audio_demuxer_handle,
+ video_demuxer_handle, callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererInitializeRpc* actual_to_rpc =
+ static_cast<RendererInitializeRpc*>(to_rpc.get());
+ ASSERT_EQ(client_handle, actual_to_rpc->client_handle());
+ ASSERT_EQ(audio_demuxer_handle, actual_to_rpc->audio_demuxer_handle());
+ ASSERT_EQ(video_demuxer_handle, actual_to_rpc->video_demuxer_handle());
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, RendererFlushUntilRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ uint32_t audio_frame_id = 4;
+ uint32_t video_frame_id = 5;
+ int callback_handle = 6;
+ scoped_refptr<Rpc> from_rpc(new RendererFlushUntilRpc(
+ rpc_handle, audio_frame_id, video_frame_id, callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererFlushUntilRpc* actual_to_rpc =
+ static_cast<RendererFlushUntilRpc*>(to_rpc.get());
+ ASSERT_EQ(audio_frame_id, actual_to_rpc->audio_frame_id());
+ ASSERT_EQ(video_frame_id, actual_to_rpc->video_frame_id());
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, RendererSetCdmRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ int cdm_id = 2;
+ int callback_handle = 1;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererSetCdmRpc(rpc_handle, cdm_id, callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererSetCdmRpc* actual_to_rpc =
+ static_cast<RendererSetCdmRpc*>(to_rpc.get());
+ ASSERT_EQ(cdm_id, actual_to_rpc->cdm_id());
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, RendererClientOnTimeUpdateRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ int time_usec = 2;
+ int max_time_usec = 1;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererClientOnTimeUpdateRpc(rpc_handle, time_usec, max_time_usec));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererClientOnTimeUpdateRpc* actual_to_rpc =
+ static_cast<RendererClientOnTimeUpdateRpc*>(to_rpc.get());
+ ASSERT_EQ(time_usec, actual_to_rpc->time_usec());
+ ASSERT_EQ(max_time_usec, actual_to_rpc->max_time_usec());
+}
+
+TEST_F(RemotingRpcTest, RendererClientOnVideoNaturalSizeChangeRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ gfx::Size size(640, 480);
+ scoped_refptr<Rpc> from_rpc(
+ new RendererClientOnVideoNaturalSizeChangeRpc(rpc_handle, size));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererClientOnVideoNaturalSizeChangeRpc* actual_to_rpc =
+ static_cast<RendererClientOnVideoNaturalSizeChangeRpc*>(to_rpc.get());
+ ASSERT_EQ(size, actual_to_rpc->size());
+}
+
+TEST_F(RemotingRpcTest, RendererClientOnStatisticsUpdateRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ ::media::PipelineStatistics stats;
+ stats.audio_bytes_decoded = 1;
+ stats.video_bytes_decoded = 2;
+ stats.video_frames_decoded = 3;
+ stats.video_frames_dropped = 4;
+ stats.audio_memory_usage = 5;
+ stats.video_memory_usage = 6;
+ scoped_refptr<Rpc> from_rpc(
+ new RendererClientOnStatisticsUpdateRpc(rpc_handle, stats));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ RendererClientOnStatisticsUpdateRpc* actual_to_rpc =
+ static_cast<RendererClientOnStatisticsUpdateRpc*>(to_rpc.get());
+ ::media::PipelineStatistics to_stats = actual_to_rpc->stats();
+ ASSERT_EQ(stats.audio_bytes_decoded, to_stats.audio_bytes_decoded);
+ ASSERT_EQ(stats.video_bytes_decoded, to_stats.video_bytes_decoded);
+ ASSERT_EQ(stats.video_frames_decoded, to_stats.video_frames_decoded);
+ ASSERT_EQ(stats.video_frames_dropped, to_stats.video_frames_dropped);
+ ASSERT_EQ(stats.audio_memory_usage, to_stats.audio_memory_usage);
+ ASSERT_EQ(stats.video_memory_usage, to_stats.video_memory_usage);
+}
+
+TEST_F(RemotingRpcTest, DemuxerStreamReadUntilRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ uint32_t frame_id = 2;
+ int callback_handle = 1;
+ scoped_refptr<Rpc> from_rpc(
+ new DemuxerStreamReadUntilRpc(rpc_handle, frame_id, callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ DemuxerStreamReadUntilRpc* actual_to_rpc =
+ static_cast<DemuxerStreamReadUntilRpc*>(to_rpc.get());
+ ASSERT_EQ(frame_id, actual_to_rpc->frame_id());
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, DemuxerStreamInitializeCallbackRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ ::media::DemuxerStream::Type type = ::media::DemuxerStream::VIDEO;
+ ::media::AudioDecoderConfig audio_config;
+ ::media::VideoDecoderConfig video_config;
+ scoped_refptr<Rpc> from_rpc(new DemuxerStreamInitializeCallbackRpc(
+ rpc_handle, type, audio_config, video_config));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ DemuxerStreamInitializeCallbackRpc* actual_to_rpc =
+ static_cast<DemuxerStreamInitializeCallbackRpc*>(to_rpc.get());
+ ASSERT_EQ(type, actual_to_rpc->type());
+ // TODO(erickung) compare |audio_config| and |video_config|;
+}
+
+TEST_F(RemotingRpcTest, DemuxerStreamReadUntilCallbackRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ uint32_t frame_id = 100;
+ ::media::DemuxerStream::Status status = ::media::DemuxerStream::kOk;
+ ::media::AudioDecoderConfig audio_config;
+ ::media::VideoDecoderConfig video_config;
+ scoped_refptr<Rpc> from_rpc(new DemuxerStreamReadUntilCallbackRpc(
+ rpc_handle, frame_id, status, audio_config, video_config));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ DemuxerStreamReadUntilCallbackRpc* actual_to_rpc =
+ static_cast<DemuxerStreamReadUntilCallbackRpc*>(to_rpc.get());
+ ASSERT_EQ(frame_id, actual_to_rpc->frame_id());
+ ASSERT_EQ(status, actual_to_rpc->status());
+ // TODO(erickung) compare |audio_config| and |video_config|;
+}
+
+TEST_F(RemotingRpcTest, CdmInitializeRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string key_system;
+ std::string security_origin;
+ ::media::CdmConfig cdm_config;
+ cdm_config.allow_distinctive_identifier = true;
+ cdm_config.allow_persistent_state = false;
+ cdm_config.use_hw_secure_codecs = true;
+ int callback_handle = 4;
+ scoped_refptr<Rpc> from_rpc(new CdmInitializeRpc(
+ rpc_handle, key_system, security_origin, cdm_config, callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmInitializeRpc* actual_to_rpc =
+ static_cast<CdmInitializeRpc*>(to_rpc.get());
+ ASSERT_EQ(key_system, actual_to_rpc->key_system());
+ ASSERT_EQ(security_origin, actual_to_rpc->security_origin());
+ ::media::CdmConfig cdm_config_out = actual_to_rpc->cdm_config();
+ ASSERT_EQ(cdm_config.allow_distinctive_identifier,
+ cdm_config_out.allow_distinctive_identifier);
+ ASSERT_EQ(cdm_config.allow_persistent_state,
+ cdm_config_out.allow_persistent_state);
+ ASSERT_EQ(cdm_config.use_hw_secure_codecs,
+ cdm_config_out.use_hw_secure_codecs);
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, CdmSetServerCertificateRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string data_blob("HereIsTestBlob");
+ std::vector<uint8_t> certificate_data(data_blob.begin(), data_blob.end());
+ int callback_handle = 4;
+ scoped_refptr<Rpc> from_rpc(
+ new CdmSetServerCertificateRpc(rpc_handle, &certificate_data[0],
+ certificate_data.size(), callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmSetServerCertificateRpc* actual_to_rpc =
+ static_cast<CdmSetServerCertificateRpc*>(to_rpc.get());
+ ASSERT_EQ(certificate_data.size(), actual_to_rpc->certificate_data_size());
+ std::string data_out_blob(actual_to_rpc->certificate_data(),
+ actual_to_rpc->certificate_data() +
+ actual_to_rpc->certificate_data_size());
+ ASSERT_EQ(data_blob, data_out_blob);
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, CdmCreateSessionAndGenerateRequestRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ ::media::MediaKeys::SessionType session_type =
+ ::media::MediaKeys::TEMPORARY_SESSION;
+ ::media::EmeInitDataType init_data_type = ::media::EmeInitDataType::CENC;
+ std::string data_blob("Arbitrary##Data@@@");
+ std::vector<uint8_t> init_data(data_blob.begin(), data_blob.end());
+ int callback_handle = 4;
+ scoped_refptr<Rpc> from_rpc(new CdmCreateSessionAndGenerateRequestRpc(
+ rpc_handle, session_type, init_data_type, &init_data[0], init_data.size(),
+ callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmCreateSessionAndGenerateRequestRpc* actual_to_rpc =
+ static_cast<CdmCreateSessionAndGenerateRequestRpc*>(to_rpc.get());
+ ASSERT_EQ(session_type, actual_to_rpc->session_type());
+ ASSERT_EQ(init_data_type, actual_to_rpc->init_data_type());
+ ASSERT_EQ(init_data.size(), actual_to_rpc->init_data_size());
+ std::string data_out_blob(
+ actual_to_rpc->init_data(),
+ actual_to_rpc->init_data() + actual_to_rpc->init_data_size());
+ ASSERT_EQ(data_blob, data_out_blob);
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, CdmUpdateSessionRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string session_id;
+ std::string data_blob("___!!AS#HGSTU");
+ std::vector<uint8_t> response(data_blob.begin(), data_blob.end());
+ int callback_handle = 4;
+ scoped_refptr<Rpc> from_rpc(new CdmUpdateSessionRpc(
+ rpc_handle, session_id, &response[0], response.size(), callback_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmUpdateSessionRpc* actual_to_rpc =
+ static_cast<CdmUpdateSessionRpc*>(to_rpc.get());
+ ASSERT_EQ(session_id, actual_to_rpc->session_id());
+ ASSERT_EQ(response.size(), actual_to_rpc->response_size());
+ std::string data_out_blob(
+ actual_to_rpc->response(),
+ actual_to_rpc->response() + actual_to_rpc->response_size());
+ ASSERT_EQ(data_blob, data_out_blob);
+ ASSERT_EQ(callback_handle, actual_to_rpc->callback_handle());
+}
+
+TEST_F(RemotingRpcTest, CdmSetServerCertificateCallbackRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ bool success = false;
+ CdmPromiseResult result(::media::MediaKeys::UNKNOWN_ERROR, 3, "");
+ scoped_refptr<Rpc> from_rpc(
+ new CdmSetServerCertificateCallbackRpc(rpc_handle, result));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmSetServerCertificateCallbackRpc* actual_to_rpc =
+ static_cast<CdmSetServerCertificateCallbackRpc*>(to_rpc.get());
+ const CdmPromiseResult result_out = actual_to_rpc->result();
+ ASSERT_EQ(success, result_out.success());
+ ASSERT_EQ(result.exception(), result_out.exception());
+ ASSERT_EQ(result.system_code(), result_out.system_code());
+ ASSERT_EQ(result.error_message(), result_out.error_message());
+}
+
+TEST_F(RemotingRpcTest, CdmCreateSessionAndGenerateRequestCallbackRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ bool success = true;
+ std::string session_id;
+ CdmPromiseResult result(CdmPromiseResult::SuccessResult());
+ scoped_refptr<Rpc> from_rpc(new CdmCreateSessionAndGenerateRequestCallbackRpc(
+ rpc_handle, result, session_id));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmCreateSessionAndGenerateRequestCallbackRpc* actual_to_rpc =
+ static_cast<CdmCreateSessionAndGenerateRequestCallbackRpc*>(to_rpc.get());
+ const CdmPromiseResult result_out = actual_to_rpc->result();
+ ASSERT_EQ(success, result_out.success());
+ ASSERT_EQ(session_id, actual_to_rpc->session_id());
+}
+
+TEST_F(RemotingRpcTest, CdmInitializeCallbackRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ bool success = true;
+ CdmPromiseResult result(CdmPromiseResult::SuccessResult());
+ int cdm_id = 4;
+ int decryptor_handle = 5;
+ scoped_refptr<Rpc> from_rpc(new CdmInitializeCallbackRpc(
+ rpc_handle, result, cdm_id, decryptor_handle));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmInitializeCallbackRpc* actual_to_rpc =
+ static_cast<CdmInitializeCallbackRpc*>(to_rpc.get());
+ const CdmPromiseResult result_out = actual_to_rpc->result();
+ ASSERT_EQ(success, result_out.success());
+ ASSERT_EQ(cdm_id, actual_to_rpc->cdm_id());
+ ASSERT_EQ(decryptor_handle, actual_to_rpc->decryptor_handle());
+}
+
+TEST_F(RemotingRpcTest, CdmClientOnSessionMessageRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string session_id;
+ ::media::MediaKeys::MessageType message_type =
+ ::media::MediaKeys::LICENSE_RELEASE;
+ uint8_t message[1] = {0xAB};
+ scoped_refptr<Rpc> from_rpc(new CdmClientOnSessionMessageRpc(
+ rpc_handle, session_id, message_type, message, sizeof(message)));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmClientOnSessionMessageRpc* actual_to_rpc =
+ static_cast<CdmClientOnSessionMessageRpc*>(to_rpc.get());
+ ASSERT_EQ(session_id, actual_to_rpc->session_id());
+ ASSERT_EQ(message_type, actual_to_rpc->message_type());
+ ASSERT_EQ(message[0], actual_to_rpc->message()[0]);
+ ASSERT_EQ(size_t(1), actual_to_rpc->message_size());
+}
+
+TEST_F(RemotingRpcTest, CdmClientOnSessionKeysChangeRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string session_id;
+ bool has_additional_usable_key = false;
+ scoped_refptr<Rpc> from_rpc(new CdmClientOnSessionKeysChangeRpc(
+ rpc_handle, session_id, has_additional_usable_key, nullptr, 0));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmClientOnSessionKeysChangeRpc* actual_to_rpc =
+ static_cast<CdmClientOnSessionKeysChangeRpc*>(to_rpc.get());
+ ASSERT_EQ(session_id, actual_to_rpc->session_id());
+ ASSERT_EQ(has_additional_usable_key,
+ actual_to_rpc->has_additional_usable_key());
+ ASSERT_EQ(nullptr, actual_to_rpc->key_information());
+ ASSERT_EQ(static_cast<size_t>(0), actual_to_rpc->key_information_size());
+}
+
+TEST_F(RemotingRpcTest, CdmClientOnSessionExpirationUpdateRpc) {
+ // Convert RPC data structure into proto buffer string
+ int rpc_handle = 3;
+ std::string session_id;
+ double new_expiry_time_sec = 3600.2;
+ scoped_refptr<Rpc> from_rpc(new CdmClientOnSessionExpirationUpdateRpc(
+ rpc_handle, session_id, new_expiry_time_sec));
+ ASSERT_EQ(rpc_handle, from_rpc->handle());
+ int proc = from_rpc->GetProc();
+ std::string proto_buffer_string = from_rpc->ToMessage();
+
+ // Convert proto buffer string back to RPC data structure.
+ scoped_refptr<remoting::Rpc> to_rpc = Rpc::FromMessage(proto_buffer_string);
+ DCHECK(to_rpc);
+ ASSERT_EQ(proc, to_rpc->GetProc());
+ ASSERT_EQ(rpc_handle, to_rpc->handle());
+
+ CdmClientOnSessionExpirationUpdateRpc* actual_to_rpc =
+ static_cast<CdmClientOnSessionExpirationUpdateRpc*>(to_rpc.get());
+ ASSERT_EQ(session_id, actual_to_rpc->session_id());
+ ASSERT_EQ(new_expiry_time_sec, actual_to_rpc->new_expiry_time_sec());
+}
+
+} // namespace remoting
+} // namespace media
« media/remoting/rpc/rpc.cc ('K') | « media/remoting/rpc/rpc.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698