| 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 |