OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <vector> | 5 #include <vector> |
6 | 6 |
7 #include "media/base/mock_filters.h" | 7 #include "media/base/mock_filters.h" |
8 #include "media/base/mock_task.h" | 8 #include "media/base/mock_task.h" |
9 #include "media/filters/decoder_base.h" | 9 #include "media/filters/decoder_base.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 } // namespace | 89 } // namespace |
90 | 90 |
91 namespace media { | 91 namespace media { |
92 | 92 |
93 ACTION(Initialize) { | 93 ACTION(Initialize) { |
94 AutoTaskRunner done_runner(arg2); | 94 AutoTaskRunner done_runner(arg2); |
95 *arg1 = true; | 95 *arg1 = true; |
96 } | 96 } |
97 | 97 |
98 ACTION_P(SaveDecodeRequest, list) { | 98 ACTION_P(SaveDecodeRequest, list) { |
99 scoped_refptr<Buffer> buffer = arg0; | 99 scoped_refptr<Buffer> buffer(arg0); |
100 list->push_back(buffer); | 100 list->push_back(buffer); |
101 } | 101 } |
102 | 102 |
103 ACTION(CompleteDemuxRequest) { | 103 ACTION(CompleteDemuxRequest) { |
104 arg0->Run(new MockBuffer()); | 104 arg0->Run(new MockBuffer()); |
105 delete arg0; | 105 delete arg0; |
106 } | 106 } |
107 | 107 |
108 // Test the flow control of decoder base by the following sequnce of actions: | 108 // Test the flow control of decoder base by the following sequnce of actions: |
109 // - Read() -> DecoderStream | 109 // - Read() -> DecoderStream |
110 // \ Read() -> DemuxerStream | 110 // \ Read() -> DemuxerStream |
111 // - Read() -> DecoderBase | 111 // - Read() -> DecoderBase |
112 // \ Read() -> DemixerStream | 112 // \ Read() -> DemixerStream |
113 // - ReadCallback() -> DecoderBase | 113 // - ReadCallback() -> DecoderBase |
114 // \ DoDecode() -> Decoder | 114 // \ DoDecode() -> Decoder |
115 // - ReadCallback() -> DecoderBase | 115 // - ReadCallback() -> DecoderBase |
116 // \ DoDecode() -> Decoder | 116 // \ DoDecode() -> Decoder |
117 // - DecodeCallback() -> DecoderBase | 117 // - DecodeCallback() -> DecoderBase |
118 // \ ReadCallback() -> client | 118 // \ ReadCallback() -> client |
119 // - DecodeCallback() -> DecoderBase | 119 // - DecodeCallback() -> DecoderBase |
120 // \ ReadCallback() -> client | 120 // \ ReadCallback() -> client |
121 TEST(DecoderBaseTest, FlowControl) { | 121 TEST(DecoderBaseTest, FlowControl) { |
122 MessageLoop message_loop; | 122 MessageLoop message_loop; |
123 scoped_refptr<MockDecoderImpl> decoder = new MockDecoderImpl(); | 123 scoped_refptr<MockDecoderImpl> decoder(new MockDecoderImpl()); |
124 MockDecoderCallback read_callback; | 124 MockDecoderCallback read_callback; |
125 decoder->set_consume_audio_samples_callback( | 125 decoder->set_consume_audio_samples_callback( |
126 NewCallback(&read_callback, &MockDecoderCallback::OnReadComplete)); | 126 NewCallback(&read_callback, &MockDecoderCallback::OnReadComplete)); |
127 scoped_refptr<MockDemuxerStream> demuxer_stream = new MockDemuxerStream(); | 127 scoped_refptr<MockDemuxerStream> demuxer_stream(new MockDemuxerStream()); |
128 StrictMock<MockFilterCallback> callback; | 128 StrictMock<MockFilterCallback> callback; |
129 decoder->set_message_loop(&message_loop); | 129 decoder->set_message_loop(&message_loop); |
130 | 130 |
131 // Initailize. | 131 // Initailize. |
132 EXPECT_CALL(callback, OnFilterCallback()); | 132 EXPECT_CALL(callback, OnFilterCallback()); |
133 EXPECT_CALL(callback, OnCallbackDestroyed()); | 133 EXPECT_CALL(callback, OnCallbackDestroyed()); |
134 EXPECT_CALL(*decoder, DoInitialize(NotNull(), NotNull(), NotNull())) | 134 EXPECT_CALL(*decoder, DoInitialize(NotNull(), NotNull(), NotNull())) |
135 .WillOnce(Initialize()); | 135 .WillOnce(Initialize()); |
136 decoder->Initialize(demuxer_stream.get(), callback.NewCallback()); | 136 decoder->Initialize(demuxer_stream.get(), callback.NewCallback()); |
137 message_loop.RunAllPending(); | 137 message_loop.RunAllPending(); |
(...skipping 23 matching lines...) Expand all Loading... |
161 // Stop. | 161 // Stop. |
162 EXPECT_CALL(*decoder, DoStop(_)) | 162 EXPECT_CALL(*decoder, DoStop(_)) |
163 .WillOnce(WithArg<0>(InvokeRunnable())); | 163 .WillOnce(WithArg<0>(InvokeRunnable())); |
164 EXPECT_CALL(callback, OnFilterCallback()); | 164 EXPECT_CALL(callback, OnFilterCallback()); |
165 EXPECT_CALL(callback, OnCallbackDestroyed()); | 165 EXPECT_CALL(callback, OnCallbackDestroyed()); |
166 decoder->Stop(callback.NewCallback()); | 166 decoder->Stop(callback.NewCallback()); |
167 message_loop.RunAllPending(); | 167 message_loop.RunAllPending(); |
168 } | 168 } |
169 | 169 |
170 } // namespace media | 170 } // namespace media |
OLD | NEW |