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

Unified Diff: chrome/browser/media/cast_transport_host_filter_unittest.cc

Issue 138753004: Cast: IPC glue between cast library transport and encoders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add dep instead of export Created 6 years, 10 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
Index: chrome/browser/media/cast_transport_host_filter_unittest.cc
diff --git a/chrome/browser/media/cast_transport_host_filter_unittest.cc b/chrome/browser/media/cast_transport_host_filter_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..69200e834657ba832de1ee51b07d6cbdab27c1d5
--- /dev/null
+++ b/chrome/browser/media/cast_transport_host_filter_unittest.cc
@@ -0,0 +1,136 @@
+// 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 "base/callback.h"
+#include "base/message_loop/message_loop.h"
+#include "base/time/default_tick_clock.h"
+#include "chrome/browser/media/cast_transport_host_filter.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+class CastTransportHostFilterTest : public testing::Test {
+ public:
+ CastTransportHostFilterTest()
+ : browser_thread_bundle_(
+ content::TestBrowserThreadBundle::IO_MAINLOOP) {
+ }
+ protected:
+ virtual void SetUp() OVERRIDE {
+ filter_ = new cast::CastTransportHostFilter();
+ }
+
+ void FakeSend(const IPC::Message& message) {
+ bool message_was_ok;
+ EXPECT_TRUE(filter_->OnMessageReceived(message, &message_was_ok));
+ EXPECT_TRUE(message_was_ok);
+ }
+
+ content::TestBrowserThreadBundle browser_thread_bundle_;
+ scoped_refptr<content::BrowserMessageFilter> filter_;
+};
+
+TEST_F(CastTransportHostFilterTest, NewDelete) {
+ media::cast::transport::CastTransportConfig config;
+ config.local_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+ config.receiver_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+ CastHostMsg_New new_msg(17, config);
+ CastHostMsg_Delete delete_msg(17);
+
+ // New, then delete, as expected.
+ FakeSend(new_msg);
+ FakeSend(delete_msg);
+ FakeSend(new_msg);
+ FakeSend(delete_msg);
+ FakeSend(new_msg);
+ FakeSend(delete_msg);
+
+ // Now do it wrong.
+ FakeSend(new_msg);
+ FakeSend(new_msg);
+ FakeSend(new_msg);
+ FakeSend(delete_msg);
+ FakeSend(delete_msg);
+ FakeSend(delete_msg);
+}
+
+TEST_F(CastTransportHostFilterTest, NewMany) {
+ media::cast::transport::CastTransportConfig config;
+ config.local_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+ config.receiver_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+
+ for (int i = 0; i < 100; i++) {
+ CastHostMsg_New new_msg(i, config);
+ FakeSend(new_msg);
+ }
+
+ for (int i = 0; i < 60; i++) {
+ CastHostMsg_Delete delete_msg(i);
+ FakeSend(delete_msg);
+ }
+
+ // Leave some open, see what happens.
+}
+
+TEST_F(CastTransportHostFilterTest, SimpleMessages) {
+ // Create a cast transport sender.
+ media::cast::transport::CastTransportConfig config;
+ config.local_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+ config.receiver_endpoint = net::IPEndPoint(net::IPAddressNumber(4, 0), 0);
+ CastHostMsg_New new_msg(42, config);
+ FakeSend(new_msg);
+
+ media::cast::transport::EncodedAudioFrame audio_frame;
+ audio_frame.codec = media::cast::transport::kPcm16;
+ audio_frame.frame_id = 1;
+ audio_frame.rtp_timestamp = 47;
+ audio_frame.data = std::string(47 * 2 * 2, 'q');
+ CastHostMsg_InsertCodedAudioFrame insert_coded_audio_frame(
+ 42, audio_frame, base::TimeTicks::Now());
+ FakeSend(new_msg);
+
+ media::cast::transport::EncodedVideoFrame video_frame;
+ video_frame.codec = media::cast::transport::kVp8;
+ video_frame.key_frame = true;
+ video_frame.frame_id = 1;
+ video_frame.last_referenced_frame_id = 0;
+ video_frame.data = std::string(4711, 'p');
+ CastHostMsg_InsertCodedVideoFrame insert_coded_video_frame(
+ 42, video_frame, base::TimeTicks::Now());
+ FakeSend(new_msg);
+
+ media::cast::transport::SendRtcpFromRtpSenderData rtcp_data;
+ rtcp_data.packet_type_flags = 0;
+ rtcp_data.sending_ssrc = 0;
+ rtcp_data.c_name = "FNRD";
+ media::cast::transport::RtcpSenderInfo sender_info;
+ sender_info.ntp_seconds = 1;
+ sender_info.ntp_fraction = 2;
+ sender_info.rtp_timestamp = 3;
+ sender_info.send_packet_count = 4;
+ sender_info.send_octet_count = 5;
+ media::cast::transport::RtcpDlrrReportBlock dlrr;
+ dlrr.last_rr = 7;
+ dlrr.delay_since_last_rr = 8;
+ media::cast::transport::RtcpSenderLogMessage sender_log(1);
+ sender_log[0].frame_status =
+ media::cast::transport::kRtcpSenderFrameStatusSentToNetwork;
+ sender_log[0].rtp_timestamp = 9;
+ CastHostMsg_SendRtcpFromRtpSender rtcp_msg(
+ 42, rtcp_data, sender_info, dlrr, sender_log);
+ FakeSend(rtcp_msg);
+
+ media::cast::MissingFramesAndPacketsMap missing_packets;
+ missing_packets[1].insert(4);
+ missing_packets[3].insert(7);
+ CastHostMsg_ResendPackets resend_msg(
+ 42, false, missing_packets);
+ FakeSend(resend_msg);
+
+ CastHostMsg_Delete delete_msg(42);
+ FakeSend(delete_msg);
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698