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

Side by Side Diff: media/filters/video_renderer_base_unittest.cc

Issue 11359100: Add RunCallback to invoke a callback parameter in unittests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rename Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/filters/ffmpeg_video_decoder_unittest.cc ('k') | media/media.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 <algorithm>
6
5 #include "base/bind.h" 7 #include "base/bind.h"
6 #include "base/callback.h" 8 #include "base/callback.h"
7 #include "base/stl_util.h" 9 #include "base/stl_util.h"
8 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
9 #include "base/synchronization/condition_variable.h" 11 #include "base/synchronization/condition_variable.h"
10 #include "base/synchronization/lock.h" 12 #include "base/synchronization/lock.h"
11 #include "base/synchronization/waitable_event.h" 13 #include "base/synchronization/waitable_event.h"
12 #include "base/test/test_timeouts.h" 14 #include "base/test/test_timeouts.h"
13 #include "media/base/data_buffer.h" 15 #include "media/base/data_buffer.h"
16 #include "media/base/gmock_callback_support.h"
14 #include "media/base/limits.h" 17 #include "media/base/limits.h"
15 #include "media/base/mock_callback.h" 18 #include "media/base/mock_callback.h"
16 #include "media/base/mock_filters.h" 19 #include "media/base/mock_filters.h"
17 #include "media/base/video_frame.h" 20 #include "media/base/video_frame.h"
18 #include "media/filters/video_renderer_base.h" 21 #include "media/filters/video_renderer_base.h"
19 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
20 23
21 using ::testing::_; 24 using ::testing::_;
22 using ::testing::AnyNumber; 25 using ::testing::AnyNumber;
23 using ::testing::InSequence; 26 using ::testing::InSequence;
24 using ::testing::Invoke; 27 using ::testing::Invoke;
25 using ::testing::NotNull; 28 using ::testing::NotNull;
26 using ::testing::Return; 29 using ::testing::Return;
27 using ::testing::ReturnRef; 30 using ::testing::ReturnRef;
28 using ::testing::StrictMock; 31 using ::testing::StrictMock;
29 32
30 namespace media { 33 namespace media {
31 34
32 static const int kFrameDuration = 10; 35 static const int kFrameDuration = 10;
33 static const int kVideoDuration = kFrameDuration * 100; 36 static const int kVideoDuration = kFrameDuration * 100;
34 static const int kEndOfStream = -1; 37 static const int kEndOfStream = -1;
35 static const gfx::Size kNaturalSize(16u, 16u); 38 static const gfx::Size kNaturalSize(16u, 16u);
36 39
37 ACTION_P(RunPipelineStatusCB1, status) {
38 arg1.Run(status);
39 }
40
41 class VideoRendererBaseTest : public ::testing::Test { 40 class VideoRendererBaseTest : public ::testing::Test {
42 public: 41 public:
43 VideoRendererBaseTest() 42 VideoRendererBaseTest()
44 : decoder_(new MockVideoDecoder()), 43 : decoder_(new MockVideoDecoder()),
45 demuxer_stream_(new MockDemuxerStream()), 44 demuxer_stream_(new MockDemuxerStream()),
46 cv_(&lock_), 45 cv_(&lock_),
47 event_(false, false), 46 event_(false, false),
48 timeout_(TestTimeouts::action_timeout()), 47 timeout_(TestTimeouts::action_timeout()),
49 prerolling_(false), 48 prerolling_(false),
50 next_frame_timestamp_(0), 49 next_frame_timestamp_(0),
51 paint_cv_(&lock_), 50 paint_cv_(&lock_),
52 paint_was_called_(false), 51 paint_was_called_(false),
53 should_queue_read_cb_(false) { 52 should_queue_read_cb_(false) {
54 renderer_ = new VideoRendererBase( 53 renderer_ = new VideoRendererBase(
55 base::Bind(&VideoRendererBaseTest::Paint, base::Unretained(this)), 54 base::Bind(&VideoRendererBaseTest::Paint, base::Unretained(this)),
56 base::Bind(&VideoRendererBaseTest::OnSetOpaque, base::Unretained(this)), 55 base::Bind(&VideoRendererBaseTest::OnSetOpaque, base::Unretained(this)),
57 true); 56 true);
58 57
59 EXPECT_CALL(*demuxer_stream_, type()) 58 EXPECT_CALL(*demuxer_stream_, type())
60 .WillRepeatedly(Return(DemuxerStream::VIDEO)); 59 .WillRepeatedly(Return(DemuxerStream::VIDEO));
61 60
62 // We expect these to be called but we don't care how/when. 61 // We expect these to be called but we don't care how/when.
63 EXPECT_CALL(*decoder_, Stop(_)) 62 EXPECT_CALL(*decoder_, Stop(_))
64 .WillRepeatedly(RunClosure()); 63 .WillRepeatedly(RunClosure<0>());
65 EXPECT_CALL(statistics_cb_object_, OnStatistics(_)) 64 EXPECT_CALL(statistics_cb_object_, OnStatistics(_))
66 .Times(AnyNumber()); 65 .Times(AnyNumber());
67 EXPECT_CALL(*this, OnTimeUpdate(_)) 66 EXPECT_CALL(*this, OnTimeUpdate(_))
68 .Times(AnyNumber()); 67 .Times(AnyNumber());
69 EXPECT_CALL(*this, OnSetOpaque(_)) 68 EXPECT_CALL(*this, OnSetOpaque(_))
70 .Times(AnyNumber()); 69 .Times(AnyNumber());
71 } 70 }
72 71
73 virtual ~VideoRendererBaseTest() { 72 virtual ~VideoRendererBaseTest() {
74 read_queue_.clear(); 73 read_queue_.clear();
(...skipping 25 matching lines...) Expand all
100 // Monitor reads from the decoder. 99 // Monitor reads from the decoder.
101 EXPECT_CALL(*decoder_, Read(_)) 100 EXPECT_CALL(*decoder_, Read(_))
102 .WillRepeatedly(Invoke(this, &VideoRendererBaseTest::FrameRequested)); 101 .WillRepeatedly(Invoke(this, &VideoRendererBaseTest::FrameRequested));
103 102
104 EXPECT_CALL(*decoder_, Reset(_)) 103 EXPECT_CALL(*decoder_, Reset(_))
105 .WillRepeatedly(Invoke(this, &VideoRendererBaseTest::FlushRequested)); 104 .WillRepeatedly(Invoke(this, &VideoRendererBaseTest::FlushRequested));
106 105
107 InSequence s; 106 InSequence s;
108 107
109 EXPECT_CALL(*decoder_, Initialize(_, _, _)) 108 EXPECT_CALL(*decoder_, Initialize(_, _, _))
110 .WillOnce(RunPipelineStatusCB1(PIPELINE_OK)); 109 .WillOnce(RunCallback<1>(PIPELINE_OK));
111 110
112 // Set playback rate before anything else happens. 111 // Set playback rate before anything else happens.
113 renderer_->SetPlaybackRate(1.0f); 112 renderer_->SetPlaybackRate(1.0f);
114 113
115 // Initialize, we shouldn't have any reads. 114 // Initialize, we shouldn't have any reads.
116 InitializeRenderer(PIPELINE_OK); 115 InitializeRenderer(PIPELINE_OK);
117 116
118 // We expect the video size to be set. 117 // We expect the video size to be set.
119 EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize)); 118 EXPECT_CALL(*this, OnNaturalSizeChanged(kNaturalSize));
120 119
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 StartPrerolling(kFrameDuration * 6, PIPELINE_OK); 686 StartPrerolling(kFrameDuration * 6, PIPELINE_OK);
688 AbortRead(); 687 AbortRead();
689 VerifyNotPrerolling(); 688 VerifyNotPrerolling();
690 Shutdown(); 689 Shutdown();
691 } 690 }
692 691
693 TEST_F(VideoRendererBaseTest, VideoDecoder_InitFailure) { 692 TEST_F(VideoRendererBaseTest, VideoDecoder_InitFailure) {
694 InSequence s; 693 InSequence s;
695 694
696 EXPECT_CALL(*decoder_, Initialize(_, _, _)) 695 EXPECT_CALL(*decoder_, Initialize(_, _, _))
697 .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE)); 696 .WillOnce(RunCallback<1>(PIPELINE_ERROR_DECODE));
698 InitializeRenderer(PIPELINE_ERROR_DECODE); 697 InitializeRenderer(PIPELINE_ERROR_DECODE);
699 } 698 }
700 699
701 } // namespace media 700 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/ffmpeg_video_decoder_unittest.cc ('k') | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698