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

Side by Side Diff: webkit/glue/media/simple_data_source_unittest.cc

Issue 6350001: Replace MockFilterCallback with MockCallback and simplify unit tests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: forgot some files 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 | « webkit/glue/media/buffered_data_source_unittest.cc ('k') | no next file » | 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) 2011 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 "base/callback.h"
6 #include "media/base/filters.h" 5 #include "media/base/filters.h"
6 #include "media/base/mock_callback.h"
7 #include "media/base/mock_filter_host.h" 7 #include "media/base/mock_filter_host.h"
8 #include "media/base/mock_filters.h" 8 #include "media/base/mock_filters.h"
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 10 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
11 #include "third_party/WebKit/WebKit/chromium/public/WebURLError.h" 11 #include "third_party/WebKit/WebKit/chromium/public/WebURLError.h"
12 #include "third_party/WebKit/WebKit/chromium/public/WebURLLoader.h" 12 #include "third_party/WebKit/WebKit/chromium/public/WebURLLoader.h"
13 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" 13 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
14 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" 14 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h"
15 #include "webkit/glue/media/simple_data_source.h" 15 #include "webkit/glue/media/simple_data_source.h"
16 #include "webkit/mocks/mock_webframe.h" 16 #include "webkit/mocks/mock_webframe.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 SimpleDataSourceTest() { 52 SimpleDataSourceTest() {
53 for (int i = 0; i < kDataSize; ++i) { 53 for (int i = 0; i < kDataSize; ++i) {
54 data_[i] = i; 54 data_[i] = i;
55 } 55 }
56 } 56 }
57 57
58 virtual ~SimpleDataSourceTest() { 58 virtual ~SimpleDataSourceTest() {
59 ignore_result(frame_.release()); 59 ignore_result(frame_.release());
60 } 60 }
61 61
62 void InitializeDataSource(const char* url) { 62 void InitializeDataSource(const char* url,
63 media::MockCallback* callback) {
63 gurl_ = GURL(url); 64 gurl_ = GURL(url);
64 65
65 frame_.reset(new NiceMock<MockWebFrame>()); 66 frame_.reset(new NiceMock<MockWebFrame>());
66 url_loader_ = new NiceMock<MockWebURLLoader>(); 67 url_loader_ = new NiceMock<MockWebURLLoader>();
67 68
68 data_source_ = new SimpleDataSource(MessageLoop::current(), 69 data_source_ = new SimpleDataSource(MessageLoop::current(),
69 frame_.get()); 70 frame_.get());
70 71
71 // There is no need to provide a message loop to data source. 72 // There is no need to provide a message loop to data source.
72 data_source_->set_host(&host_); 73 data_source_->set_host(&host_);
73 data_source_->SetURLLoaderForTest(url_loader_); 74 data_source_->SetURLLoaderForTest(url_loader_);
74 75
75 InSequence s; 76 data_source_->Initialize(url, callback);
76
77 data_source_->Initialize(url, callback_.NewCallback());
78 MessageLoop::current()->RunAllPending(); 77 MessageLoop::current()->RunAllPending();
79 } 78 }
80 79
81 void RequestSucceeded(bool is_loaded) { 80 void RequestSucceeded(bool is_loaded) {
82 WebURLResponse response(gurl_); 81 WebURLResponse response(gurl_);
83 response.setExpectedContentLength(kDataSize); 82 response.setExpectedContentLength(kDataSize);
84 83
85 data_source_->didReceiveResponse(NULL, response); 84 data_source_->didReceiveResponse(NULL, response);
86 int64 size; 85 int64 size;
87 EXPECT_TRUE(data_source_->GetSize(&size)); 86 EXPECT_TRUE(data_source_->GetSize(&size));
88 EXPECT_EQ(kDataSize, size); 87 EXPECT_EQ(kDataSize, size);
89 88
90 for (int i = 0; i < kDataSize; ++i) { 89 for (int i = 0; i < kDataSize; ++i) {
91 data_source_->didReceiveData(NULL, data_ + i, 1); 90 data_source_->didReceiveData(NULL, data_ + i, 1);
92 } 91 }
93 92
94 EXPECT_CALL(host_, SetLoaded(is_loaded)); 93 EXPECT_CALL(host_, SetLoaded(is_loaded));
95 94
96 InSequence s; 95 InSequence s;
97 EXPECT_CALL(host_, SetTotalBytes(kDataSize)); 96 EXPECT_CALL(host_, SetTotalBytes(kDataSize));
98 EXPECT_CALL(host_, SetBufferedBytes(kDataSize)); 97 EXPECT_CALL(host_, SetBufferedBytes(kDataSize));
99 EXPECT_CALL(callback_, OnFilterCallback());
100 EXPECT_CALL(callback_, OnCallbackDestroyed());
101 98
102 data_source_->didFinishLoading(NULL, 0); 99 data_source_->didFinishLoading(NULL, 0);
103 100
104 // Let the tasks to be executed. 101 // Let the tasks to be executed.
105 MessageLoop::current()->RunAllPending(); 102 MessageLoop::current()->RunAllPending();
106 } 103 }
107 104
108 void RequestFailed() { 105 void RequestFailed() {
109 InSequence s; 106 InSequence s;
110 EXPECT_CALL(host_, SetError(media::PIPELINE_ERROR_NETWORK)); 107 EXPECT_CALL(host_, SetError(media::PIPELINE_ERROR_NETWORK));
111 EXPECT_CALL(callback_, OnFilterCallback());
112 EXPECT_CALL(callback_, OnCallbackDestroyed());
113 108
114 WebURLError error; 109 WebURLError error;
115 error.reason = net::ERR_FAILED; 110 error.reason = net::ERR_FAILED;
116 data_source_->didFail(NULL, error); 111 data_source_->didFail(NULL, error);
117 112
118 // Let the tasks to be executed. 113 // Let the tasks to be executed.
119 MessageLoop::current()->RunAllPending(); 114 MessageLoop::current()->RunAllPending();
120 } 115 }
121 116
122 void DestroyDataSource() { 117 void DestroyDataSource() {
123 StrictMock<media::MockFilterCallback> callback; 118 data_source_->Stop(media::NewExpectedCallback());
124 EXPECT_CALL(callback, OnFilterCallback());
125 EXPECT_CALL(callback, OnCallbackDestroyed());
126
127 data_source_->Stop(callback.NewCallback());
128 MessageLoop::current()->RunAllPending(); 119 MessageLoop::current()->RunAllPending();
129 120
130 data_source_ = NULL; 121 data_source_ = NULL;
131 } 122 }
132 123
133 void AsyncRead() { 124 void AsyncRead() {
134 for (int i = 0; i < kDataSize; ++i) { 125 for (int i = 0; i < kDataSize; ++i) {
135 uint8 buffer[1]; 126 uint8 buffer[1];
136 127
137 EXPECT_CALL(*this, ReadCallback(1)); 128 EXPECT_CALL(*this, ReadCallback(1));
138 data_source_->Read( 129 data_source_->Read(
139 i, 1, buffer, 130 i, 1, buffer,
140 NewCallback(this, &SimpleDataSourceTest::ReadCallback)); 131 NewCallback(this, &SimpleDataSourceTest::ReadCallback));
141 EXPECT_EQ(static_cast<uint8>(data_[i]), buffer[0]); 132 EXPECT_EQ(static_cast<uint8>(data_[i]), buffer[0]);
142 } 133 }
143 } 134 }
144 135
145 MOCK_METHOD1(ReadCallback, void(size_t size)); 136 MOCK_METHOD1(ReadCallback, void(size_t size));
146 137
147 protected: 138 protected:
148 GURL gurl_; 139 GURL gurl_;
149 scoped_ptr<MessageLoop> message_loop_; 140 scoped_ptr<MessageLoop> message_loop_;
150 NiceMock<MockWebURLLoader>* url_loader_; 141 NiceMock<MockWebURLLoader>* url_loader_;
151 scoped_refptr<SimpleDataSource> data_source_; 142 scoped_refptr<SimpleDataSource> data_source_;
152 StrictMock<media::MockFilterHost> host_; 143 StrictMock<media::MockFilterHost> host_;
153 StrictMock<media::MockFilterCallback> callback_;
154 scoped_ptr<NiceMock<MockWebFrame> > frame_; 144 scoped_ptr<NiceMock<MockWebFrame> > frame_;
155 145
156 char data_[kDataSize]; 146 char data_[kDataSize];
157 147
158 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest); 148 DISALLOW_COPY_AND_ASSIGN(SimpleDataSourceTest);
159 }; 149 };
160 150
161 TEST_F(SimpleDataSourceTest, InitializeHTTP) { 151 TEST_F(SimpleDataSourceTest, InitializeHTTP) {
162 InitializeDataSource(kHttpUrl); 152 InitializeDataSource(kHttpUrl, media::NewExpectedCallback());
163 RequestSucceeded(false); 153 RequestSucceeded(false);
164 DestroyDataSource(); 154 DestroyDataSource();
165 } 155 }
166 156
167 TEST_F(SimpleDataSourceTest, InitializeHTTPS) { 157 TEST_F(SimpleDataSourceTest, InitializeHTTPS) {
168 InitializeDataSource(kHttpsUrl); 158 InitializeDataSource(kHttpsUrl, media::NewExpectedCallback());
169 RequestSucceeded(false); 159 RequestSucceeded(false);
170 DestroyDataSource(); 160 DestroyDataSource();
171 } 161 }
172 162
173 TEST_F(SimpleDataSourceTest, InitializeFile) { 163 TEST_F(SimpleDataSourceTest, InitializeFile) {
174 InitializeDataSource(kFileUrl); 164 InitializeDataSource(kFileUrl, media::NewExpectedCallback());
175 RequestSucceeded(true); 165 RequestSucceeded(true);
176 DestroyDataSource(); 166 DestroyDataSource();
177 } 167 }
178 168
179 TEST_F(SimpleDataSourceTest, InitializeData) { 169 TEST_F(SimpleDataSourceTest, InitializeData) {
180 frame_.reset(new NiceMock<MockWebFrame>()); 170 frame_.reset(new NiceMock<MockWebFrame>());
181 url_loader_ = new NiceMock<MockWebURLLoader>(); 171 url_loader_ = new NiceMock<MockWebURLLoader>();
182 172
183 data_source_ = new SimpleDataSource(MessageLoop::current(), 173 data_source_ = new SimpleDataSource(MessageLoop::current(),
184 frame_.get()); 174 frame_.get());
185 EXPECT_TRUE(data_source_->IsUrlSupported(kDataUrl)); 175 EXPECT_TRUE(data_source_->IsUrlSupported(kDataUrl));
186 176
187 // There is no need to provide a message loop to data source. 177 // There is no need to provide a message loop to data source.
188 data_source_->set_host(&host_); 178 data_source_->set_host(&host_);
189 data_source_->SetURLLoaderForTest(url_loader_); 179 data_source_->SetURLLoaderForTest(url_loader_);
190 180
191 EXPECT_CALL(host_, SetLoaded(true)); 181 EXPECT_CALL(host_, SetLoaded(true));
192 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded))); 182 EXPECT_CALL(host_, SetTotalBytes(sizeof(kDataUrlDecoded)));
193 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded))); 183 EXPECT_CALL(host_, SetBufferedBytes(sizeof(kDataUrlDecoded)));
194 EXPECT_CALL(callback_, OnFilterCallback());
195 EXPECT_CALL(callback_, OnCallbackDestroyed());
196 184
197 data_source_->Initialize(kDataUrl, callback_.NewCallback()); 185 data_source_->Initialize(kDataUrl, media::NewExpectedCallback());
198 MessageLoop::current()->RunAllPending(); 186 MessageLoop::current()->RunAllPending();
199 187
200 DestroyDataSource(); 188 DestroyDataSource();
201 } 189 }
202 190
203 TEST_F(SimpleDataSourceTest, RequestFailed) { 191 TEST_F(SimpleDataSourceTest, RequestFailed) {
204 InitializeDataSource(kHttpUrl); 192 InitializeDataSource(kHttpUrl, media::NewExpectedCallback());
205 RequestFailed(); 193 RequestFailed();
206 DestroyDataSource(); 194 DestroyDataSource();
207 } 195 }
208 196
209 TEST_F(SimpleDataSourceTest, StopWhenDownloading) { 197 TEST_F(SimpleDataSourceTest, StopWhenDownloading) {
210 InitializeDataSource(kHttpUrl); 198 // The callback should be deleted, but not executed.
199 // TODO(scherkus): should this really be the behaviour? Seems strange...
200 StrictMock<media::MockCallback>* callback =
201 new StrictMock<media::MockCallback>();
202 EXPECT_CALL(*callback, Destructor());
203
204 InitializeDataSource(kHttpUrl, callback);
211 205
212 EXPECT_CALL(*url_loader_, cancel()); 206 EXPECT_CALL(*url_loader_, cancel());
213 EXPECT_CALL(callback_, OnCallbackDestroyed());
214 DestroyDataSource(); 207 DestroyDataSource();
215 } 208 }
216 209
217 TEST_F(SimpleDataSourceTest, AsyncRead) { 210 TEST_F(SimpleDataSourceTest, AsyncRead) {
218 InitializeDataSource(kFileUrl); 211 InitializeDataSource(kFileUrl, media::NewExpectedCallback());
219 RequestSucceeded(true); 212 RequestSucceeded(true);
220 AsyncRead(); 213 AsyncRead();
221 DestroyDataSource(); 214 DestroyDataSource();
222 } 215 }
223 216
224 } // namespace webkit_glue 217 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/glue/media/buffered_data_source_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698