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

Side by Side Diff: media/base/mock_filters.h

Issue 5744002: Refactor PipelineImpl to use CompositeFilter to manage Filter state transitions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CR nits & remove dead code. Created 9 years, 11 months 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/base/composite_filter_unittest.cc ('k') | media/base/mock_filters.cc » ('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) 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 // A new breed of mock media filters, this time using gmock! Feel free to add 5 // A new breed of mock media filters, this time using gmock! Feel free to add
6 // actions if you need interesting side-effects (i.e., copying data to the 6 // actions if you need interesting side-effects (i.e., copying data to the
7 // buffer passed into MockDataSource::Read()). 7 // buffer passed into MockDataSource::Read()).
8 // 8 //
9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock 9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock
10 // filters to fail the test or do nothing when an unexpected method is called. 10 // filters to fail the test or do nothing when an unexpected method is called.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 private: 43 private:
44 DISALLOW_COPY_AND_ASSIGN(Destroyable); 44 DISALLOW_COPY_AND_ASSIGN(Destroyable);
45 }; 45 };
46 46
47 // Helper class used to test that callbacks are executed. It is recommend you 47 // Helper class used to test that callbacks are executed. It is recommend you
48 // combine this class with StrictMock<> to verify that the callback is executed. 48 // combine this class with StrictMock<> to verify that the callback is executed.
49 // You can reuse the same instance of a MockFilterCallback many times since 49 // You can reuse the same instance of a MockFilterCallback many times since
50 // gmock will track the number of times the methods are executed. 50 // gmock will track the number of times the methods are executed.
51 class MockFilterCallback { 51 class MockFilterCallback {
52 public: 52 public:
53 MockFilterCallback() {} 53 MockFilterCallback() : run_destroy_callback_(true) {
54 }
55
56 MockFilterCallback(bool run_destroy_callback) :
57 run_destroy_callback_(run_destroy_callback) {
58 }
54 virtual ~MockFilterCallback() {} 59 virtual ~MockFilterCallback() {}
55 60
56 MOCK_METHOD0(OnCallbackDestroyed, void()); 61 MOCK_METHOD0(OnCallbackDestroyed, void());
57 MOCK_METHOD0(OnFilterCallback, void()); 62 MOCK_METHOD0(OnFilterCallback, void());
58 63
59 // Helper method to create a new callback for this mock. The callback will 64 // Helper method to create a new callback for this mock. The callback will
60 // call OnFilterCallback() when executed and OnCallbackDestroyed() when 65 // call OnFilterCallback() when executed and OnCallbackDestroyed() when
61 // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the 66 // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the
62 // test. 67 // test.
63 FilterCallback* NewCallback() { 68 FilterCallback* NewCallback() {
64 return new CallbackImpl(this); 69 return new CallbackImpl(this, run_destroy_callback_);
65 } 70 }
66 71
67 private: 72 private:
68 // Private implementation of CallbackRunner used to trigger expectations on 73 // Private implementation of CallbackRunner used to trigger expectations on
69 // MockFilterCallback. 74 // MockFilterCallback.
70 class CallbackImpl : public CallbackRunner<Tuple0> { 75 class CallbackImpl : public CallbackRunner<Tuple0> {
71 public: 76 public:
72 explicit CallbackImpl(MockFilterCallback* mock_callback) 77 explicit CallbackImpl(MockFilterCallback* mock_callback,
73 : mock_callback_(mock_callback) { 78 bool run_destroy_callback)
79 : mock_callback_(mock_callback),
80 run_destroy_callback_(run_destroy_callback) {
74 } 81 }
75 82
76 virtual ~CallbackImpl() { 83 virtual ~CallbackImpl() {
77 mock_callback_->OnCallbackDestroyed(); 84 if (run_destroy_callback_)
85 mock_callback_->OnCallbackDestroyed();
78 } 86 }
79 87
80 virtual void RunWithParams(const Tuple0& params) { 88 virtual void RunWithParams(const Tuple0& params) {
81 mock_callback_->OnFilterCallback(); 89 mock_callback_->OnFilterCallback();
82 } 90 }
83 91
84 private: 92 private:
85 MockFilterCallback* mock_callback_; 93 MockFilterCallback* mock_callback_;
94 bool run_destroy_callback_;
86 95
87 DISALLOW_COPY_AND_ASSIGN(CallbackImpl); 96 DISALLOW_COPY_AND_ASSIGN(CallbackImpl);
88 }; 97 };
89 98
99 bool run_destroy_callback_;
90 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback); 100 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback);
91 }; 101 };
92 102
103 class MockFilter : public Filter {
104 public:
105 MockFilter();
106 MockFilter(bool requires_message_loop);
107
108 // Filter implementation.
109 virtual bool requires_message_loop() const;
110 virtual const char* message_loop_name() const;
111
112 MOCK_METHOD1(Play, void(FilterCallback* callback));
113 MOCK_METHOD1(Pause, void(FilterCallback* callback));
114 MOCK_METHOD1(Flush, void(FilterCallback* callback));
115 MOCK_METHOD1(Stop, void(FilterCallback* callback));
116 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
117 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
118 MOCK_METHOD0(OnAudioRendererDisabled, void());
119
120 protected:
121 virtual ~MockFilter();
122
123 private:
124 bool requires_message_loop_;
125
126 DISALLOW_COPY_AND_ASSIGN(MockFilter);
127 };
128
93 class MockDataSource : public DataSource { 129 class MockDataSource : public DataSource {
94 public: 130 public:
95 MockDataSource() {} 131 MockDataSource() {}
96 132
97 // Filter implementation. 133 // Filter implementation.
98 MOCK_METHOD1(Stop, void(FilterCallback* callback)); 134 MOCK_METHOD1(Stop, void(FilterCallback* callback));
99 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); 135 MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
100 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); 136 MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback));
101 MOCK_METHOD0(OnAudioRendererDisabled, void()); 137 MOCK_METHOD0(OnAudioRendererDisabled, void());
102 138
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 390
355 // Helper gmock action that calls DisableAudioRenderer() on behalf of the 391 // Helper gmock action that calls DisableAudioRenderer() on behalf of the
356 // provided filter. 392 // provided filter.
357 ACTION_P(DisableAudioRenderer, filter) { 393 ACTION_P(DisableAudioRenderer, filter) {
358 filter->host()->DisableAudioRenderer(); 394 filter->host()->DisableAudioRenderer();
359 } 395 }
360 396
361 } // namespace media 397 } // namespace media
362 398
363 #endif // MEDIA_BASE_MOCK_FILTERS_H_ 399 #endif // MEDIA_BASE_MOCK_FILTERS_H_
OLDNEW
« no previous file with comments | « media/base/composite_filter_unittest.cc ('k') | media/base/mock_filters.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698