1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/renderer/media/cast_ipc_dispatcher.h"
6 
7 #include "base/test/simple_test_tick_clock.h"
8 #include "base/test/task_environment.h"
9 #include "base/threading/thread_task_runner_handle.h"
10 #include "chrome/common/cast_messages.h"
11 #include "ipc/ipc_message_macros.h"
12 #include "media/cast/logging/logging_defines.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 
15 namespace {
16 
17 class CastIPCDispatcherTest : public testing::Test {
18  public:
CastIPCDispatcherTest()19   CastIPCDispatcherTest() {
20     dispatcher_ = new CastIPCDispatcher(base::ThreadTaskRunnerHandle::Get());
21   }
22 
23  protected:
FakeSend(const IPC::Message & message)24   void FakeSend(const IPC::Message& message) {
25     EXPECT_TRUE(dispatcher_->OnMessageReceived(message));
26   }
27 
28   scoped_refptr<CastIPCDispatcher> dispatcher_;
29   base::test::SingleThreadTaskEnvironment task_environment_{
30       base::test::SingleThreadTaskEnvironment::MainThreadType::IO};
31 };
32 
TEST_F(CastIPCDispatcherTest,RawEvents)33 TEST_F(CastIPCDispatcherTest, RawEvents) {
34   const int kChannelId = 17;
35 
36   media::cast::PacketEvent packet_event;
37   packet_event.rtp_timestamp =
38       media::cast::RtpTimeTicks().Expand(UINT32_C(100));
39   packet_event.max_packet_id = 10;
40   packet_event.packet_id = 5;
41   packet_event.size = 512;
42   packet_event.timestamp = base::SimpleTestTickClock().NowTicks();
43   packet_event.type = media::cast::PACKET_SENT_TO_NETWORK;
44   packet_event.media_type = media::cast::VIDEO_EVENT;
45   std::vector<media::cast::PacketEvent> packet_events;
46   packet_events.push_back(packet_event);
47 
48   media::cast::FrameEvent frame_event;
49   frame_event.rtp_timestamp = media::cast::RtpTimeTicks().Expand(UINT32_C(100));
50   frame_event.frame_id = media::cast::FrameId::first() + 5;
51   frame_event.size = 512;
52   frame_event.timestamp = base::SimpleTestTickClock().NowTicks();
53   frame_event.media_type = media::cast::VIDEO_EVENT;
54   std::vector<media::cast::FrameEvent> frame_events;
55   frame_events.push_back(frame_event);
56 
57   packet_events.push_back(packet_event);
58   CastMsg_RawEvents raw_events_msg(kChannelId, packet_events,
59                                    frame_events);
60 
61   FakeSend(raw_events_msg);
62 }
63 
64 }  // namespace
65