Replace FINAL and OVERRIDE with their C++11 counterparts in content/renderer
[chromium-blink-merge.git] / content / renderer / media / audio_message_filter_unittest.cc
blob9036b32cd9f3124aeeed3401398504810700ef69
1 // Copyright (c) 2012 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.
5 #include "base/message_loop/message_loop.h"
6 #include "content/common/media/audio_messages.h"
7 #include "content/renderer/media/audio_message_filter.h"
8 #include "media/audio/audio_output_ipc.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace content {
12 namespace {
14 const int kRenderViewId = 1;
15 const int kRenderFrameId = 2;
17 class MockAudioDelegate : public media::AudioOutputIPCDelegate {
18 public:
19 MockAudioDelegate() {
20 Reset();
23 virtual void OnStateChanged(
24 media::AudioOutputIPCDelegate::State state) override {
25 state_changed_received_ = true;
26 state_ = state;
29 virtual void OnStreamCreated(base::SharedMemoryHandle handle,
30 base::SyncSocket::Handle,
31 int length) override {
32 created_received_ = true;
33 handle_ = handle;
34 length_ = length;
37 virtual void OnIPCClosed() override {}
39 void Reset() {
40 state_changed_received_ = false;
41 state_ = media::AudioOutputIPCDelegate::kError;
43 created_received_ = false;
44 handle_ = base::SharedMemory::NULLHandle();
45 length_ = 0;
47 volume_received_ = false;
48 volume_ = 0;
51 bool state_changed_received() { return state_changed_received_; }
52 media::AudioOutputIPCDelegate::State state() { return state_; }
54 bool created_received() { return created_received_; }
55 base::SharedMemoryHandle handle() { return handle_; }
56 uint32 length() { return length_; }
58 private:
59 bool state_changed_received_;
60 media::AudioOutputIPCDelegate::State state_;
62 bool created_received_;
63 base::SharedMemoryHandle handle_;
64 int length_;
66 bool volume_received_;
67 double volume_;
69 DISALLOW_COPY_AND_ASSIGN(MockAudioDelegate);
72 } // namespace
74 TEST(AudioMessageFilterTest, Basic) {
75 base::MessageLoopForIO message_loop;
77 scoped_refptr<AudioMessageFilter> filter(new AudioMessageFilter(
78 message_loop.message_loop_proxy()));
80 MockAudioDelegate delegate;
81 const scoped_ptr<media::AudioOutputIPC> ipc =
82 filter->CreateAudioOutputIPC(kRenderViewId, kRenderFrameId);
83 static const int kSessionId = 0;
84 ipc->CreateStream(&delegate, media::AudioParameters(), kSessionId);
85 static const int kStreamId = 1;
86 EXPECT_EQ(&delegate, filter->delegates_.Lookup(kStreamId));
88 // AudioMsg_NotifyStreamCreated
89 base::SyncSocket::TransitDescriptor socket_descriptor;
90 const uint32 kLength = 1024;
91 EXPECT_FALSE(delegate.created_received());
92 filter->OnMessageReceived(AudioMsg_NotifyStreamCreated(
93 kStreamId, base::SharedMemory::NULLHandle(), socket_descriptor, kLength));
94 EXPECT_TRUE(delegate.created_received());
95 EXPECT_FALSE(base::SharedMemory::IsHandleValid(delegate.handle()));
96 EXPECT_EQ(kLength, delegate.length());
97 delegate.Reset();
99 // AudioMsg_NotifyStreamStateChanged
100 EXPECT_FALSE(delegate.state_changed_received());
101 filter->OnMessageReceived(
102 AudioMsg_NotifyStreamStateChanged(
103 kStreamId, media::AudioOutputIPCDelegate::kPlaying));
104 EXPECT_TRUE(delegate.state_changed_received());
105 EXPECT_EQ(media::AudioOutputIPCDelegate::kPlaying, delegate.state());
106 delegate.Reset();
108 message_loop.RunUntilIdle();
110 ipc->CloseStream();
111 EXPECT_EQ(static_cast<media::AudioOutputIPCDelegate*>(NULL),
112 filter->delegates_.Lookup(kStreamId));
115 TEST(AudioMessageFilterTest, Delegates) {
116 base::MessageLoopForIO message_loop;
118 scoped_refptr<AudioMessageFilter> filter(new AudioMessageFilter(
119 message_loop.message_loop_proxy()));
121 MockAudioDelegate delegate1;
122 MockAudioDelegate delegate2;
123 const scoped_ptr<media::AudioOutputIPC> ipc1 =
124 filter->CreateAudioOutputIPC(kRenderViewId, kRenderFrameId);
125 const scoped_ptr<media::AudioOutputIPC> ipc2 =
126 filter->CreateAudioOutputIPC(kRenderViewId, kRenderFrameId);
127 static const int kSessionId = 0;
128 ipc1->CreateStream(&delegate1, media::AudioParameters(), kSessionId);
129 ipc2->CreateStream(&delegate2, media::AudioParameters(), kSessionId);
130 static const int kStreamId1 = 1;
131 static const int kStreamId2 = 2;
132 EXPECT_EQ(&delegate1, filter->delegates_.Lookup(kStreamId1));
133 EXPECT_EQ(&delegate2, filter->delegates_.Lookup(kStreamId2));
135 // Send an IPC message. Make sure the correct delegate gets called.
136 EXPECT_FALSE(delegate1.state_changed_received());
137 EXPECT_FALSE(delegate2.state_changed_received());
138 filter->OnMessageReceived(
139 AudioMsg_NotifyStreamStateChanged(
140 kStreamId1, media::AudioOutputIPCDelegate::kPlaying));
141 EXPECT_TRUE(delegate1.state_changed_received());
142 EXPECT_FALSE(delegate2.state_changed_received());
143 delegate1.Reset();
145 EXPECT_FALSE(delegate1.state_changed_received());
146 EXPECT_FALSE(delegate2.state_changed_received());
147 filter->OnMessageReceived(
148 AudioMsg_NotifyStreamStateChanged(
149 kStreamId2, media::AudioOutputIPCDelegate::kPlaying));
150 EXPECT_FALSE(delegate1.state_changed_received());
151 EXPECT_TRUE(delegate2.state_changed_received());
152 delegate2.Reset();
154 message_loop.RunUntilIdle();
156 ipc1->CloseStream();
157 ipc2->CloseStream();
158 EXPECT_EQ(static_cast<media::AudioOutputIPCDelegate*>(NULL),
159 filter->delegates_.Lookup(kStreamId1));
160 EXPECT_EQ(static_cast<media::AudioOutputIPCDelegate*>(NULL),
161 filter->delegates_.Lookup(kStreamId2));
164 } // namespace content