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

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

Issue 5619002: Revert 68094 - Refactoring BufferedDataSource to work with WebURLLoader inste... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years 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.cc ('k') | webkit/glue/media/simple_data_source.h » ('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 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "media/base/filters.h" 12 #include "media/base/filters.h"
13 #include "media/base/mock_filter_host.h" 13 #include "media/base/mock_filter_host.h"
14 #include "media/base/mock_filters.h" 14 #include "media/base/mock_filters.h"
15 #include "net/base/net_errors.h" 15 #include "net/base/net_errors.h"
16 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 16 #include "net/http/http_response_headers.h"
17 #include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h"
18 #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
19 #include "third_party/WebKit/WebKit/chromium/public/WebURLError.h"
20 #include "third_party/WebKit/WebKit/chromium/public/WebURLLoader.h"
21 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
22 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h"
23 #include "third_party/WebKit/WebKit/chromium/public/WebView.h"
24 #include "webkit/glue/media/buffered_data_source.h" 17 #include "webkit/glue/media/buffered_data_source.h"
25 #include "webkit/glue/mock_webframe.h" 18 #include "webkit/glue/media/mock_media_resource_loader_bridge_factory.h"
26 #include "webkit/glue/mock_weburlloader_impl.h" 19 #include "webkit/glue/mock_resource_loader_bridge.h"
27 20
28 using ::testing::_; 21 using ::testing::_;
29 using ::testing::Assign; 22 using ::testing::Assign;
30 using ::testing::AtLeast;
31 using ::testing::DeleteArg; 23 using ::testing::DeleteArg;
32 using ::testing::DoAll; 24 using ::testing::DoAll;
33 using ::testing::InSequence; 25 using ::testing::InSequence;
34 using ::testing::Invoke; 26 using ::testing::Invoke;
35 using ::testing::InvokeWithoutArgs; 27 using ::testing::InvokeWithoutArgs;
36 using ::testing::NotNull; 28 using ::testing::NotNull;
37 using ::testing::Return; 29 using ::testing::Return;
38 using ::testing::ReturnRef; 30 using ::testing::ReturnRef;
39 using ::testing::SetArgumentPointee; 31 using ::testing::SetArgumentPointee;
40 using ::testing::StrictMock; 32 using ::testing::StrictMock;
41 using ::testing::NiceMock; 33 using ::testing::NiceMock;
42 using ::testing::WithArgs; 34 using ::testing::WithArgs;
43 35
44 using WebKit::WebURLError;
45 using WebKit::WebFrame;
46 using WebKit::WebFrameClient;
47 using WebKit::WebString;
48 using WebKit::WebURLLoader;
49 using WebKit::WebURLRequest;
50 using WebKit::WebURLResponse;
51 using WebKit::WebView;
52
53 namespace { 36 namespace {
54 37
55 const char* kHttpUrl = "http://test"; 38 const char* kHttpUrl = "http://test";
56 const char* kFileUrl = "file://test"; 39 const char* kFileUrl = "file://test";
57 const int kDataSize = 1024; 40 const int kDataSize = 1024;
58 const int kHttpOK = 200;
59 const int kHttpPartialContent = 206;
60 41
61 enum NetworkState { 42 enum NetworkState {
62 NONE, 43 NONE,
63 LOADED, 44 LOADED,
64 LOADING 45 LOADING
65 }; 46 };
66 47
67 } // namespace 48 } // namespace
68 49
69 namespace webkit_glue { 50 namespace webkit_glue {
70 51
71 // Submit a request completed event to the resource loader due to request 52 // Submit a request completed event to the resource loader due to request
72 // being canceled. Pretending the event is from external. 53 // being canceled. Pretending the event is from external.
73 ACTION_P(RequestCanceled, loader) { 54 ACTION_P(RequestCanceled, loader) {
74 WebURLError error; 55 URLRequestStatus status;
75 error.reason = net::ERR_ABORTED; 56 status.set_status(URLRequestStatus::CANCELED);
76 error.domain = WebString::fromUTF8(net::kErrorDomain); 57 status.set_os_error(net::ERR_ABORTED);
77 loader->didFail(NULL, error); 58 loader->OnCompletedRequest(status, "", base::Time());
78 } 59 }
79 60
80 class BufferedResourceLoaderTest : public testing::Test { 61 class BufferedResourceLoaderTest : public testing::Test {
81 public: 62 public:
82 BufferedResourceLoaderTest() { 63 BufferedResourceLoaderTest() {
83 url_loader_ = new NiceMock<MockWebURLLoader>(); 64 bridge_.reset(new StrictMock<MockResourceLoaderBridge>());
84 65
85 for (int i = 0; i < kDataSize; ++i) 66 for (int i = 0; i < kDataSize; ++i)
86 data_[i] = i; 67 data_[i] = i;
87 } 68 }
88 69
89 virtual ~BufferedResourceLoaderTest() { 70 ~BufferedResourceLoaderTest() {
90 ignore_result(frame_.release()); 71 if (bridge_.get())
72 EXPECT_CALL(*bridge_, OnDestroy());
73 EXPECT_CALL(bridge_factory_, OnDestroy());
91 } 74 }
92 75
93 void Initialize(const char* url, int first_position, int last_position) { 76 void Initialize(const char* url, int first_position, int last_position) {
94 gurl_ = GURL(url); 77 gurl_ = GURL(url);
95 first_position_ = first_position; 78 first_position_ = first_position;
96 last_position_ = last_position; 79 last_position_ = last_position;
97 80
98 frame_.reset(new NiceMock<MockWebFrame>()); 81 loader_ = new BufferedResourceLoader(&bridge_factory_, gurl_,
99
100 loader_ = new BufferedResourceLoader(gurl_,
101 first_position_, last_position_); 82 first_position_, last_position_);
102 loader_->SetURLLoaderForTest(url_loader_);
103 } 83 }
104 84
105 void SetLoaderBuffer(size_t forward_capacity, size_t backward_capacity) { 85 void SetLoaderBuffer(size_t forward_capacity, size_t backward_capacity) {
106 loader_->buffer_.reset( 86 loader_->buffer_.reset(
107 new media::SeekableBuffer(backward_capacity, forward_capacity)); 87 new media::SeekableBuffer(backward_capacity, forward_capacity));
108 } 88 }
109 89
110 void Start() { 90 void Start() {
111 InSequence s; 91 InSequence s;
112 EXPECT_CALL(*url_loader_, loadAsynchronously(_, loader_.get())); 92 EXPECT_CALL(bridge_factory_,
93 CreateBridge(gurl_, _, first_position_, last_position_))
94 .WillOnce(Return(bridge_.get()));
95 EXPECT_CALL(*bridge_, Start(loader_.get()));
113 loader_->Start( 96 loader_->Start(
114 NewCallback(this, &BufferedResourceLoaderTest::StartCallback), 97 NewCallback(this, &BufferedResourceLoaderTest::StartCallback),
115 NewCallback(this, &BufferedResourceLoaderTest::NetworkCallback), 98 NewCallback(this, &BufferedResourceLoaderTest::NetworkCallback));
116 frame_.get());
117 } 99 }
118 100
119 void FullResponse(int64 instance_size) { 101 void FullResponse(int64 instance_size) {
120 EXPECT_CALL(*this, StartCallback(net::OK)); 102 EXPECT_CALL(*this, StartCallback(net::OK));
121 103 ResourceResponseInfo info;
122 WebURLResponse response(gurl_); 104 std::string header = base::StringPrintf("HTTP/1.1 200 OK\n"
123 response.setHTTPHeaderField(WebString::fromUTF8("Content-Length"), 105 "Content-Length: %" PRId64,
124 WebString::fromUTF8(base::StringPrintf("%" 106 instance_size);
125 PRId64, instance_size))); 107 replace(header.begin(), header.end(), '\n', '\0');
126 response.setExpectedContentLength(instance_size); 108 info.headers = new net::HttpResponseHeaders(header);
127 response.setHTTPStatusCode(kHttpOK); 109 info.content_length = instance_size;
128 loader_->didReceiveResponse(url_loader_, response); 110 loader_->OnReceivedResponse(info, false);
129 EXPECT_EQ(instance_size, loader_->content_length()); 111 EXPECT_EQ(instance_size, loader_->content_length());
130 EXPECT_EQ(instance_size, loader_->instance_size()); 112 EXPECT_EQ(instance_size, loader_->instance_size());
131 EXPECT_FALSE(loader_->partial_response()); 113 EXPECT_FALSE(loader_->partial_response());
132 } 114 }
133 115
134 void PartialResponse(int64 first_position, int64 last_position, 116 void PartialResponse(int64 first_position, int64 last_position,
135 int64 instance_size) { 117 int64 instance_size) {
136 EXPECT_CALL(*this, StartCallback(net::OK)); 118 EXPECT_CALL(*this, StartCallback(net::OK));
137 int64 content_length = last_position - first_position + 1; 119 int64 content_length = last_position - first_position + 1;
138 120 ResourceResponseInfo info;
139 WebURLResponse response(gurl_); 121 std::string header = base::StringPrintf("HTTP/1.1 206 Partial Content\n"
140 response.setHTTPHeaderField(WebString::fromUTF8("Content-Range"), 122 "Content-Range: bytes "
141 WebString::fromUTF8(base::StringPrintf("bytes "
142 "%" PRId64 "-%" PRId64 "/%" PRId64, 123 "%" PRId64 "-%" PRId64 "/%" PRId64,
143 first_position, 124 first_position,
144 last_position, 125 last_position,
145 instance_size))); 126 instance_size);
146 response.setExpectedContentLength(content_length); 127 replace(header.begin(), header.end(), '\n', '\0');
147 response.setHTTPStatusCode(kHttpPartialContent); 128 info.headers = new net::HttpResponseHeaders(header);
148 loader_->didReceiveResponse(url_loader_, response); 129 info.content_length = content_length;
130 loader_->OnReceivedResponse(info, false);
149 EXPECT_EQ(content_length, loader_->content_length()); 131 EXPECT_EQ(content_length, loader_->content_length());
150 EXPECT_EQ(instance_size, loader_->instance_size()); 132 EXPECT_EQ(instance_size, loader_->instance_size());
151 EXPECT_TRUE(loader_->partial_response()); 133 EXPECT_TRUE(loader_->partial_response());
152 } 134 }
153 135
154 void StopWhenLoad() { 136 void StopWhenLoad() {
155 InSequence s; 137 InSequence s;
156 EXPECT_CALL(*url_loader_, cancel()) 138 EXPECT_CALL(*bridge_, Cancel())
157 .WillOnce(RequestCanceled(loader_)); 139 .WillOnce(RequestCanceled(loader_));
140 EXPECT_CALL(*bridge_, OnDestroy())
141 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
158 loader_->Stop(); 142 loader_->Stop();
159 } 143 }
160 144
145 void ReleaseBridge() {
146 ignore_result(bridge_.release());
147 }
148
161 // Helper method to write to |loader_| from |data_|. 149 // Helper method to write to |loader_| from |data_|.
162 void WriteLoader(int position, int size) { 150 void WriteLoader(int position, int size) {
163 EXPECT_CALL(*this, NetworkCallback()) 151 EXPECT_CALL(*this, NetworkCallback())
164 .RetiresOnSaturation(); 152 .RetiresOnSaturation();
165 loader_->didReceiveData(url_loader_, 153 loader_->OnReceivedData(reinterpret_cast<char*>(data_ + position), size);
166 reinterpret_cast<char*>(data_ + position), size);
167 } 154 }
168 155
169 // Helper method to read from |loader_|. 156 // Helper method to read from |loader_|.
170 void ReadLoader(int64 position, int size, uint8* buffer) { 157 void ReadLoader(int64 position, int size, uint8* buffer) {
171 loader_->Read(position, size, buffer, 158 loader_->Read(position, size, buffer,
172 NewCallback(this, &BufferedResourceLoaderTest::ReadCallback)); 159 NewCallback(this, &BufferedResourceLoaderTest::ReadCallback));
173 } 160 }
174 161
175 // Verifis that data in buffer[0...size] is equal to data_[pos...pos+size]. 162 // Verifis that data in buffer[0...size] is equal to data_[pos...pos+size].
176 void VerifyBuffer(uint8* buffer, int pos, int size) { 163 void VerifyBuffer(uint8* buffer, int pos, int size) {
177 EXPECT_EQ(0, memcmp(buffer, data_ + pos, size)); 164 EXPECT_EQ(0, memcmp(buffer, data_ + pos, size));
178 } 165 }
179 166
180 // Helper method to disallow deferring in |loader_|. 167 // Helper method to disallow deferring in |loader_|.
181 void DisallowLoaderDefer() { 168 void DisallowLoaderDefer() {
182 if (loader_->deferred_) { 169 if (loader_->deferred_) {
183 EXPECT_CALL(*url_loader_, setDefersLoading(false)); 170 EXPECT_CALL(*bridge_, SetDefersLoading(false));
184 EXPECT_CALL(*this, NetworkCallback()); 171 EXPECT_CALL(*this, NetworkCallback());
185 } 172 }
186 loader_->SetAllowDefer(false); 173 loader_->SetAllowDefer(false);
187 } 174 }
188 175
189 // Helper method to allow deferring in |loader_|. 176 // Helper method to allow deferring in |loader_|.
190 void AllowLoaderDefer() { 177 void AllowLoaderDefer() {
191 loader_->SetAllowDefer(true); 178 loader_->SetAllowDefer(true);
192 } 179 }
193 180
194 MOCK_METHOD1(StartCallback, void(int error)); 181 MOCK_METHOD1(StartCallback, void(int error));
195 MOCK_METHOD1(ReadCallback, void(int error)); 182 MOCK_METHOD1(ReadCallback, void(int error));
196 MOCK_METHOD0(NetworkCallback, void()); 183 MOCK_METHOD0(NetworkCallback, void());
197 184
198 protected: 185 protected:
199 GURL gurl_; 186 GURL gurl_;
200 int64 first_position_; 187 int64 first_position_;
201 int64 last_position_; 188 int64 last_position_;
202 189
203 scoped_refptr<BufferedResourceLoader> loader_; 190 scoped_refptr<BufferedResourceLoader> loader_;
204 NiceMock<MockWebURLLoader>* url_loader_; 191 StrictMock<MockMediaResourceLoaderBridgeFactory> bridge_factory_;
205 scoped_ptr<NiceMock<MockWebFrame> > frame_; 192 scoped_ptr<StrictMock<MockResourceLoaderBridge> > bridge_;
206 193
207 uint8 data_[kDataSize]; 194 uint8 data_[kDataSize];
208 195
209 private: 196 private:
210 DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoaderTest); 197 DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoaderTest);
211 }; 198 };
212 199
213 TEST_F(BufferedResourceLoaderTest, StartStop) { 200 TEST_F(BufferedResourceLoaderTest, StartStop) {
214 Initialize(kHttpUrl, -1, -1); 201 Initialize(kHttpUrl, -1, -1);
215 Start(); 202 Start();
216 StopWhenLoad(); 203 StopWhenLoad();
217 } 204 }
218 205
206 // Tests that HTTP header is missing in the response.
207 TEST_F(BufferedResourceLoaderTest, MissingHttpHeader) {
208 Initialize(kHttpUrl, -1, -1);
209 Start();
210
211 EXPECT_CALL(*this, StartCallback(net::ERR_INVALID_RESPONSE));
212 EXPECT_CALL(*bridge_, Cancel())
213 .WillOnce(RequestCanceled(loader_));
214 EXPECT_CALL(*bridge_, OnDestroy())
215 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
216
217 ResourceResponseInfo info;
218 loader_->OnReceivedResponse(info, false);
219 }
220
219 // Tests that a bad HTTP response is recived, e.g. file not found. 221 // Tests that a bad HTTP response is recived, e.g. file not found.
220 TEST_F(BufferedResourceLoaderTest, BadHttpResponse) { 222 TEST_F(BufferedResourceLoaderTest, BadHttpResponse) {
221 Initialize(kHttpUrl, -1, -1); 223 Initialize(kHttpUrl, -1, -1);
222 Start(); 224 Start();
223 225
224 EXPECT_CALL(*this, StartCallback(net::ERR_FAILED)); 226 EXPECT_CALL(*this, StartCallback(net::ERR_FAILED));
225 EXPECT_CALL(*url_loader_, cancel()) 227 EXPECT_CALL(*bridge_, Cancel())
226 .WillOnce(RequestCanceled(loader_)); 228 .WillOnce(RequestCanceled(loader_));
229 EXPECT_CALL(*bridge_, OnDestroy())
230 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
227 231
228 WebURLResponse response(gurl_); 232 ResourceResponseInfo info;
229 response.setHTTPStatusCode(404); 233 info.headers = new net::HttpResponseHeaders("HTTP/1.1 404 Not Found\n");
230 response.setHTTPStatusText("Not Found\n"); 234 loader_->OnReceivedResponse(info, false);
231 loader_->didReceiveResponse(url_loader_, response);
232 } 235 }
233 236
234 // Tests that partial content is requested but not fulfilled. 237 // Tests that partial content is requested but not fulfilled.
235 TEST_F(BufferedResourceLoaderTest, NotPartialResponse) { 238 TEST_F(BufferedResourceLoaderTest, NotPartialResponse) {
236 Initialize(kHttpUrl, 100, -1); 239 Initialize(kHttpUrl, 100, -1);
237 Start(); 240 Start();
238 FullResponse(1024); 241 FullResponse(1024);
239 StopWhenLoad(); 242 StopWhenLoad();
240 } 243 }
241 244
(...skipping 12 matching lines...) Expand all
254 PartialResponse(100, 200, 1024); 257 PartialResponse(100, 200, 1024);
255 StopWhenLoad(); 258 StopWhenLoad();
256 } 259 }
257 260
258 // Tests that an invalid partial response is received. 261 // Tests that an invalid partial response is received.
259 TEST_F(BufferedResourceLoaderTest, InvalidPartialResponse) { 262 TEST_F(BufferedResourceLoaderTest, InvalidPartialResponse) {
260 Initialize(kHttpUrl, 0, 10); 263 Initialize(kHttpUrl, 0, 10);
261 Start(); 264 Start();
262 265
263 EXPECT_CALL(*this, StartCallback(net::ERR_INVALID_RESPONSE)); 266 EXPECT_CALL(*this, StartCallback(net::ERR_INVALID_RESPONSE));
264 EXPECT_CALL(*url_loader_, cancel()) 267 EXPECT_CALL(*bridge_, Cancel())
265 .WillOnce(RequestCanceled(loader_)); 268 .WillOnce(RequestCanceled(loader_));
269 EXPECT_CALL(*bridge_, OnDestroy())
270 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
266 271
267 WebURLResponse response(gurl_); 272 ResourceResponseInfo info;
268 response.setHTTPHeaderField(WebString::fromUTF8("Content-Range"), 273 std::string header = base::StringPrintf("HTTP/1.1 206 Partial Content\n"
269 WebString::fromUTF8(base::StringPrintf("bytes " 274 "Content-Range: bytes %d-%d/%d",
270 "%d-%d/%d", 1, 10, 1024))); 275 1, 10, 1024);
271 response.setExpectedContentLength(10); 276 replace(header.begin(), header.end(), '\n', '\0');
272 response.setHTTPStatusCode(kHttpPartialContent); 277 info.headers = new net::HttpResponseHeaders(header);
273 loader_->didReceiveResponse(url_loader_, response); 278 info.content_length = 10;
279 loader_->OnReceivedResponse(info, false);
274 } 280 }
275 281
276 // Tests the logic of sliding window for data buffering and reading. 282 // Tests the logic of sliding window for data buffering and reading.
277 TEST_F(BufferedResourceLoaderTest, BufferAndRead) { 283 TEST_F(BufferedResourceLoaderTest, BufferAndRead) {
278 Initialize(kHttpUrl, 10, 29); 284 Initialize(kHttpUrl, 10, 29);
279 Start(); 285 Start();
280 PartialResponse(10, 29, 30); 286 PartialResponse(10, 29, 30);
281 287
282 uint8 buffer[10]; 288 uint8 buffer[10];
283 InSequence s; 289 InSequence s;
(...skipping 17 matching lines...) Expand all
301 EXPECT_CALL(*this, ReadCallback(10)); 307 EXPECT_CALL(*this, ReadCallback(10));
302 ReadLoader(10, 10, buffer); 308 ReadLoader(10, 10, buffer);
303 VerifyBuffer(buffer, 10, 10); 309 VerifyBuffer(buffer, 10, 10);
304 310
305 // Read backward outside buffer. 311 // Read backward outside buffer.
306 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS)); 312 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS));
307 ReadLoader(9, 10, buffer); 313 ReadLoader(9, 10, buffer);
308 314
309 // Response has completed. 315 // Response has completed.
310 EXPECT_CALL(*this, NetworkCallback()); 316 EXPECT_CALL(*this, NetworkCallback());
311 loader_->didFinishLoading(url_loader_, 0); 317 EXPECT_CALL(*bridge_, OnDestroy())
318 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
319 URLRequestStatus status;
320 status.set_status(URLRequestStatus::SUCCESS);
321 loader_->OnCompletedRequest(status, "", base::Time());
312 322
313 // Try to read 10 from position 25 will just return with 5 bytes. 323 // Try to read 10 from position 25 will just return with 5 bytes.
314 EXPECT_CALL(*this, ReadCallback(5)); 324 EXPECT_CALL(*this, ReadCallback(5));
315 ReadLoader(25, 10, buffer); 325 ReadLoader(25, 10, buffer);
316 VerifyBuffer(buffer, 25, 5); 326 VerifyBuffer(buffer, 25, 5);
317 327
318 // Try to read outside buffered range after request has completed. 328 // Try to read outside buffered range after request has completed.
319 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS)); 329 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS));
320 ReadLoader(5, 10, buffer); 330 ReadLoader(5, 10, buffer);
321 331
(...skipping 21 matching lines...) Expand all
343 // Writing to loader will fulfill the read request. 353 // Writing to loader will fulfill the read request.
344 EXPECT_CALL(*this, ReadCallback(10)); 354 EXPECT_CALL(*this, ReadCallback(10));
345 WriteLoader(10, 20); 355 WriteLoader(10, 20);
346 VerifyBuffer(buffer, 10, 10); 356 VerifyBuffer(buffer, 10, 10);
347 357
348 // The following call cannot be fulfilled now. 358 // The following call cannot be fulfilled now.
349 ReadLoader(25, 10, buffer); 359 ReadLoader(25, 10, buffer);
350 360
351 EXPECT_CALL(*this, ReadCallback(5)); 361 EXPECT_CALL(*this, ReadCallback(5));
352 EXPECT_CALL(*this, NetworkCallback()); 362 EXPECT_CALL(*this, NetworkCallback());
353 loader_->didFinishLoading(url_loader_, 0); 363 EXPECT_CALL(*bridge_, OnDestroy())
364 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
365 URLRequestStatus status;
366 status.set_status(URLRequestStatus::SUCCESS);
367 loader_->OnCompletedRequest(status, "", base::Time());
354 } 368 }
355 369
356 TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) { 370 TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) {
357 Initialize(kHttpUrl, 10, 29); 371 Initialize(kHttpUrl, 10, 29);
358 Start(); 372 Start();
359 PartialResponse(10, 29, 30); 373 PartialResponse(10, 29, 30);
360 374
361 uint8 buffer[10]; 375 uint8 buffer[10];
362 InSequence s; 376 InSequence s;
363 377
364 ReadLoader(10, 10, buffer); 378 ReadLoader(10, 10, buffer);
365 EXPECT_CALL(*this, ReadCallback(net::ERR_FAILED)); 379 EXPECT_CALL(*this, ReadCallback(net::ERR_FAILED));
366 EXPECT_CALL(*this, NetworkCallback()); 380 EXPECT_CALL(*this, NetworkCallback());
367 WebURLError error; 381 EXPECT_CALL(*bridge_, OnDestroy())
368 error.reason = net::ERR_FAILED; 382 .WillOnce(Invoke(this, &BufferedResourceLoaderTest::ReleaseBridge));
369 loader_->didFail(url_loader_, error); 383 URLRequestStatus status;
384 status.set_status(URLRequestStatus::FAILED);
385 loader_->OnCompletedRequest(status, "", base::Time());
370 } 386 }
371 387
372 // Tests the logic of caching data to disk when media is paused. 388 // Tests the logic of caching data to disk when media is paused.
373 TEST_F(BufferedResourceLoaderTest, AllowDefer_NoDataReceived) { 389 TEST_F(BufferedResourceLoaderTest, AllowDefer_NoDataReceived) {
374 Initialize(kHttpUrl, 10, 99); 390 Initialize(kHttpUrl, 10, 99);
375 SetLoaderBuffer(10, 20); 391 SetLoaderBuffer(10, 20);
376 Start(); 392 Start();
377 PartialResponse(10, 99, 100); 393 PartialResponse(10, 99, 100);
378 394
379 // Start in undeferred state, then disallow defer, then allow defer 395 // Start in undeferred state, then disallow defer, then allow defer
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredNoDataReceived) { 442 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredNoDataReceived) {
427 Initialize(kHttpUrl, 10, 99); 443 Initialize(kHttpUrl, 10, 99);
428 SetLoaderBuffer(10, 20); 444 SetLoaderBuffer(10, 20);
429 Start(); 445 Start();
430 PartialResponse(10, 99, 100); 446 PartialResponse(10, 99, 100);
431 447
432 uint8 buffer[10]; 448 uint8 buffer[10];
433 449
434 // Start in deferred state, then disallow defer, receive no data, and 450 // Start in deferred state, then disallow defer, receive no data, and
435 // allow defer and read. 451 // allow defer and read.
436 EXPECT_CALL(*url_loader_, setDefersLoading(true)); 452 EXPECT_CALL(*bridge_, SetDefersLoading(true));
437 EXPECT_CALL(*this, NetworkCallback()); 453 EXPECT_CALL(*this, NetworkCallback());
438 WriteLoader(10, 40); 454 WriteLoader(10, 40);
439 455
440 DisallowLoaderDefer(); 456 DisallowLoaderDefer();
441 AllowLoaderDefer(); 457 AllowLoaderDefer();
442 458
443 EXPECT_CALL(*this, ReadCallback(10)); 459 EXPECT_CALL(*this, ReadCallback(10));
444 ReadLoader(20, 10, buffer); 460 ReadLoader(20, 10, buffer);
445 VerifyBuffer(buffer, 20, 10); 461 VerifyBuffer(buffer, 20, 10);
446 StopWhenLoad(); 462 StopWhenLoad();
447 } 463 }
448 464
449 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredReadSameWindow) { 465 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredReadSameWindow) {
450 Initialize(kHttpUrl, 10, 99); 466 Initialize(kHttpUrl, 10, 99);
451 SetLoaderBuffer(10, 20); 467 SetLoaderBuffer(10, 20);
452 Start(); 468 Start();
453 PartialResponse(10, 99, 100); 469 PartialResponse(10, 99, 100);
454 470
455 uint8 buffer[10]; 471 uint8 buffer[10];
456 472
457 // Start in deferred state, disallow defer, receive data and shift buffer 473 // Start in deferred state, disallow defer, receive data and shift buffer
458 // window, allow defer, and read in a place that's still in the window. 474 // window, allow defer, and read in a place that's still in the window.
459 EXPECT_CALL(*url_loader_, setDefersLoading(true)); 475 EXPECT_CALL(*bridge_, SetDefersLoading(true));
460 EXPECT_CALL(*this, NetworkCallback()); 476 EXPECT_CALL(*this, NetworkCallback());
461 WriteLoader(10, 30); 477 WriteLoader(10, 30);
462 478
463 DisallowLoaderDefer(); 479 DisallowLoaderDefer();
464 WriteLoader(40, 5); 480 WriteLoader(40, 5);
465 AllowLoaderDefer(); 481 AllowLoaderDefer();
466 482
467 EXPECT_CALL(*this, ReadCallback(10)); 483 EXPECT_CALL(*this, ReadCallback(10));
468 ReadLoader(20, 10, buffer); 484 ReadLoader(20, 10, buffer);
469 VerifyBuffer(buffer, 20, 10); 485 VerifyBuffer(buffer, 20, 10);
470 StopWhenLoad(); 486 StopWhenLoad();
471 } 487 }
472 488
473 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredReadPastWindow) { 489 TEST_F(BufferedResourceLoaderTest, AllowDefer_DeferredReadPastWindow) {
474 Initialize(kHttpUrl, 10, 99); 490 Initialize(kHttpUrl, 10, 99);
475 SetLoaderBuffer(10, 20); 491 SetLoaderBuffer(10, 20);
476 Start(); 492 Start();
477 PartialResponse(10, 99, 100); 493 PartialResponse(10, 99, 100);
478 494
479 uint8 buffer[10]; 495 uint8 buffer[10];
480 496
481 // Start in deferred state, disallow defer, receive data and shift buffer 497 // Start in deferred state, disallow defer, receive data and shift buffer
482 // window, allow defer, and read outside of the buffer window. 498 // window, allow defer, and read outside of the buffer window.
483 EXPECT_CALL(*url_loader_, setDefersLoading(true)); 499 EXPECT_CALL(*bridge_, SetDefersLoading(true));
484 EXPECT_CALL(*this, NetworkCallback()); 500 EXPECT_CALL(*this, NetworkCallback());
485 WriteLoader(10, 40); 501 WriteLoader(10, 40);
486 502
487 DisallowLoaderDefer(); 503 DisallowLoaderDefer();
488 WriteLoader(50, 20); 504 WriteLoader(50, 20);
489 WriteLoader(70, 40); 505 WriteLoader(70, 40);
490 AllowLoaderDefer(); 506 AllowLoaderDefer();
491 507
492 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS)); 508 EXPECT_CALL(*this, ReadCallback(net::ERR_CACHE_MISS));
493 ReadLoader(20, 5, buffer); 509 ReadLoader(20, 5, buffer);
494 StopWhenLoad(); 510 StopWhenLoad();
495 } 511 }
512
496 // TODO(hclam): add unit test for defer loading. 513 // TODO(hclam): add unit test for defer loading.
497 514
498 class MockBufferedResourceLoader : public BufferedResourceLoader { 515 class MockBufferedResourceLoader : public BufferedResourceLoader {
499 public: 516 public:
500 MockBufferedResourceLoader() : BufferedResourceLoader(GURL(), 0, 0) { 517 MockBufferedResourceLoader() : BufferedResourceLoader(NULL, GURL(), 0, 0) {
501 } 518 }
502 519
503 MOCK_METHOD3(Start, void(net::CompletionCallback* read_callback, 520 MOCK_METHOD2(Start, void(net::CompletionCallback* read_callback,
504 NetworkEventCallback* network_callback, 521 NetworkEventCallback* network_callback));
505 WebFrame* frame));
506 MOCK_METHOD0(Stop, void()); 522 MOCK_METHOD0(Stop, void());
507 MOCK_METHOD4(Read, void(int64 position, int read_size, uint8* buffer, 523 MOCK_METHOD4(Read, void(int64 position, int read_size, uint8* buffer,
508 net::CompletionCallback* callback)); 524 net::CompletionCallback* callback));
509 MOCK_METHOD0(content_length, int64()); 525 MOCK_METHOD0(content_length, int64());
510 MOCK_METHOD0(instance_size, int64()); 526 MOCK_METHOD0(instance_size, int64());
511 MOCK_METHOD0(partial_response, bool()); 527 MOCK_METHOD0(partial_response, bool());
512 MOCK_METHOD0(network_activity, bool()); 528 MOCK_METHOD0(network_activity, bool());
513 MOCK_METHOD0(url, const GURL&()); 529 MOCK_METHOD0(url, const GURL&());
514 MOCK_METHOD0(GetBufferedFirstBytePosition, int64()); 530 MOCK_METHOD0(GetBufferedFirstBytePosition, int64());
515 MOCK_METHOD0(GetBufferedLastBytePosition, int64()); 531 MOCK_METHOD0(GetBufferedLastBytePosition, int64());
516 532
517 protected: 533 protected:
518 ~MockBufferedResourceLoader() {} 534 ~MockBufferedResourceLoader() {}
519 535
520 DISALLOW_COPY_AND_ASSIGN(MockBufferedResourceLoader); 536 DISALLOW_COPY_AND_ASSIGN(MockBufferedResourceLoader);
521 }; 537 };
522 538
523 // A mock BufferedDataSource to inject mock BufferedResourceLoader through 539 // A mock BufferedDataSource to inject mock BufferedResourceLoader through
524 // CreateResourceLoader() method. 540 // CreateResourceLoader() method.
525 class MockBufferedDataSource : public BufferedDataSource { 541 class MockBufferedDataSource : public BufferedDataSource {
526 public: 542 public:
527 MockBufferedDataSource( 543 MockBufferedDataSource(
528 MessageLoop* message_loop, WebFrame* frame) 544 MessageLoop* message_loop, MediaResourceLoaderBridgeFactory* factory)
529 : BufferedDataSource(message_loop, frame) { 545 : BufferedDataSource(message_loop, factory) {
530 } 546 }
531 547
532 virtual base::TimeDelta GetTimeoutMilliseconds() { 548 virtual base::TimeDelta GetTimeoutMilliseconds() {
533 // It is 100 ms because we don't want the test to run too long. 549 // It is 100 ms because we don't want the test to run too long.
534 return base::TimeDelta::FromMilliseconds(100); 550 return base::TimeDelta::FromMilliseconds(100);
535 } 551 }
536 552
537 MOCK_METHOD2(CreateResourceLoader, BufferedResourceLoader*( 553 MOCK_METHOD2(CreateResourceLoader, BufferedResourceLoader*(
538 int64 first_position, int64 last_position)); 554 int64 first_position, int64 last_position));
539 555
540 private: 556 private:
541 DISALLOW_COPY_AND_ASSIGN(MockBufferedDataSource); 557 DISALLOW_COPY_AND_ASSIGN(MockBufferedDataSource);
542 }; 558 };
543 559
544 class BufferedDataSourceTest : public testing::Test { 560 class BufferedDataSourceTest : public testing::Test {
545 public: 561 public:
546 BufferedDataSourceTest() { 562 BufferedDataSourceTest() {
547 message_loop_ = MessageLoop::current(); 563 message_loop_ = MessageLoop::current();
564 bridge_factory_.reset(
565 new StrictMock<MockMediaResourceLoaderBridgeFactory>());
548 566
549 // Prepare test data. 567 // Prepare test data.
550 for (size_t i = 0; i < sizeof(data_); ++i) { 568 for (size_t i = 0; i < sizeof(data_); ++i) {
551 data_[i] = i; 569 data_[i] = i;
552 } 570 }
553 } 571 }
554 572
555 virtual ~BufferedDataSourceTest() { 573 virtual ~BufferedDataSourceTest() {
556 ignore_result(frame_.release()); 574 if (data_source_) {
575 // Release the bridge factory because we don't own it.
576 // Expects bridge factory to be destroyed along with data source.
577 EXPECT_CALL(*bridge_factory_, OnDestroy())
578 .WillOnce(Invoke(this,
579 &BufferedDataSourceTest::ReleaseBridgeFactory));
580 }
557 } 581 }
558 582
559 void ExpectCreateAndStartResourceLoader(int start_error) { 583 void ExpectCreateAndStartResourceLoader(int start_error) {
560 EXPECT_CALL(*data_source_, CreateResourceLoader(_, _)) 584 EXPECT_CALL(*data_source_, CreateResourceLoader(_, _))
561 .WillOnce(Return(loader_.get())); 585 .WillOnce(Return(loader_.get()));
562 586
563 EXPECT_CALL(*loader_, Start(NotNull(), NotNull(), NotNull())) 587 EXPECT_CALL(*loader_, Start(NotNull(), NotNull()))
564 .WillOnce( 588 .WillOnce(
565 DoAll(Assign(&error_, start_error), 589 DoAll(Assign(&error_, start_error),
566 Invoke(this, 590 Invoke(this,
567 &BufferedDataSourceTest::InvokeStartCallback))); 591 &BufferedDataSourceTest::InvokeStartCallback)));
568 } 592 }
569 593
570 void InitializeDataSource(const char* url, int error, 594 void InitializeDataSource(const char* url, int error,
571 bool partial_response, int64 instance_size, 595 bool partial_response, int64 instance_size,
572 NetworkState networkState) { 596 NetworkState networkState) {
573 // Saves the url first. 597 // Saves the url first.
574 gurl_ = GURL(url); 598 gurl_ = GURL(url);
575 599
576 frame_.reset(new NiceMock<MockWebFrame>()); 600 media::MediaFormat url_format;
601 url_format.SetAsString(media::MediaFormat::kMimeType,
602 media::mime_type::kURL);
603 url_format.SetAsString(media::MediaFormat::kURL, url);
604 data_source_ = new MockBufferedDataSource(MessageLoop::current(),
605 bridge_factory_.get());
606 CHECK(data_source_);
577 607
578 data_source_ = new MockBufferedDataSource(MessageLoop::current(), 608 // There is no need to provide a message loop to data source.
579 frame_.get());
580 data_source_->set_host(&host_); 609 data_source_->set_host(&host_);
581 610
582 scoped_refptr<NiceMock<MockBufferedResourceLoader> > first_loader( 611 scoped_refptr<NiceMock<MockBufferedResourceLoader> > first_loader(
583 new NiceMock<MockBufferedResourceLoader>()); 612 new NiceMock<MockBufferedResourceLoader>());
584 613
585 // Creates the mock loader to be injected. 614 // Creates the mock loader to be injected.
586 loader_ = first_loader; 615 loader_ = first_loader;
587 616
588 bool initialized_ok = (error == net::OK); 617 bool initialized_ok = (error == net::OK);
589 bool loaded = networkState == LOADED; 618 bool loaded = networkState == LOADED;
590 { 619 {
591 InSequence s; 620 InSequence s;
592 ExpectCreateAndStartResourceLoader(error); 621 ExpectCreateAndStartResourceLoader(error);
593 622
594 // In the case of an invalid partial response we expect a second loader 623 // In the case of an invalid partial response we expect a second loader
595 // to be created. 624 // to be created.
596 if (partial_response && (error == net::ERR_INVALID_RESPONSE)) { 625 if (partial_response && (error == net::ERR_INVALID_RESPONSE)) {
597 // Verify that the initial loader is stopped. 626 // Verify that the initial loader is stopped.
598 EXPECT_CALL(*loader_, url()) 627 EXPECT_CALL(*loader_, url())
599 .WillRepeatedly(ReturnRef(gurl_)); 628 .WillRepeatedly(ReturnRef(gurl_));
600 EXPECT_CALL(*loader_, Stop()); 629 EXPECT_CALL(*loader_, Stop());
601 630
602 // Replace loader_ with a new instance. 631 // Replace loader_ with a new instance.
603 loader_ = new NiceMock<MockBufferedResourceLoader>(); 632 loader_ = new NiceMock<MockBufferedResourceLoader>();
604 633
605 // Create and start. Make sure Start() is called on the new loader. 634 // Create and start Make sure Start() is called the new loader.
606 ExpectCreateAndStartResourceLoader(net::OK); 635 ExpectCreateAndStartResourceLoader(net::OK);
607 636
608 // Update initialization variable since we know the second loader will 637 // Update initialization variable since we know the second loader will
609 // return OK. 638 // return OK.
610 initialized_ok = true; 639 initialized_ok = true;
611 } 640 }
612 } 641 }
613 642
614 // Attach a static function that deletes the memory referred by the 643 // Attach a static function that deletes the memory referred by the
615 // "callback" parameter. 644 // "callback" parameter.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 EXPECT_CALL(*loader_, Stop()); 698 EXPECT_CALL(*loader_, Stop());
670 } 699 }
671 700
672 StrictMock<media::MockFilterCallback> callback; 701 StrictMock<media::MockFilterCallback> callback;
673 EXPECT_CALL(callback, OnFilterCallback()); 702 EXPECT_CALL(callback, OnFilterCallback());
674 EXPECT_CALL(callback, OnCallbackDestroyed()); 703 EXPECT_CALL(callback, OnCallbackDestroyed());
675 data_source_->Stop(callback.NewCallback()); 704 data_source_->Stop(callback.NewCallback());
676 message_loop_->RunAllPending(); 705 message_loop_->RunAllPending();
677 } 706 }
678 707
708 void ReleaseBridgeFactory() {
709 ignore_result(bridge_factory_.release());
710 }
711
679 void InvokeStartCallback( 712 void InvokeStartCallback(
680 net::CompletionCallback* callback, 713 net::CompletionCallback* callback,
681 BufferedResourceLoader::NetworkEventCallback* network_callback, 714 BufferedResourceLoader::NetworkEventCallback* network_callback) {
682 WebFrame* frame) {
683 callback->RunWithParams(Tuple1<int>(error_)); 715 callback->RunWithParams(Tuple1<int>(error_));
684 delete callback; 716 delete callback;
685 // TODO(hclam): Save this callback. 717 // TODO(hclam): Save this callback.
686 delete network_callback; 718 delete network_callback;
687 } 719 }
688 720
689 void InvokeReadCallback(int64 position, int size, uint8* buffer, 721 void InvokeReadCallback(int64 position, int size, uint8* buffer,
690 net::CompletionCallback* callback) { 722 net::CompletionCallback* callback) {
691 if (error_ > 0) 723 if (error_ > 0)
692 memcpy(buffer, data_ + static_cast<int>(position), error_); 724 memcpy(buffer, data_ + static_cast<int>(position), error_);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 EXPECT_CALL(*loader_, Stop()); 783 EXPECT_CALL(*loader_, Stop());
752 } 784 }
753 785
754 // 2. Then the current loader will be stop and destroyed. 786 // 2. Then the current loader will be stop and destroyed.
755 NiceMock<MockBufferedResourceLoader> *new_loader = 787 NiceMock<MockBufferedResourceLoader> *new_loader =
756 new NiceMock<MockBufferedResourceLoader>(); 788 new NiceMock<MockBufferedResourceLoader>();
757 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1)) 789 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1))
758 .WillOnce(Return(new_loader)); 790 .WillOnce(Return(new_loader));
759 791
760 // 3. Then the new loader will be started. 792 // 3. Then the new loader will be started.
761 EXPECT_CALL(*new_loader, Start(NotNull(), NotNull(), NotNull())) 793 EXPECT_CALL(*new_loader, Start(NotNull(), NotNull()))
762 .WillOnce(DoAll(Assign(&error_, net::OK), 794 .WillOnce(DoAll(Assign(&error_, net::OK),
763 Invoke(this, 795 Invoke(this,
764 &BufferedDataSourceTest::InvokeStartCallback))); 796 &BufferedDataSourceTest::InvokeStartCallback)));
765 EXPECT_CALL(*new_loader, partial_response()) 797 EXPECT_CALL(*new_loader, partial_response())
766 .WillRepeatedly(Return(loader_->partial_response())); 798 .WillRepeatedly(Return(loader_->partial_response()));
767 799
768 // 4. Then again a read request is made to the new loader. 800 // 4. Then again a read request is made to the new loader.
769 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), NotNull())) 801 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), NotNull()))
770 .WillOnce(DoAll(Assign(&error_, size), 802 .WillOnce(DoAll(Assign(&error_, size),
771 Invoke(this, 803 Invoke(this,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 849
818 // 2. Then the current loader will be stop and destroyed. 850 // 2. Then the current loader will be stop and destroyed.
819 NiceMock<MockBufferedResourceLoader> *new_loader = 851 NiceMock<MockBufferedResourceLoader> *new_loader =
820 new NiceMock<MockBufferedResourceLoader>(); 852 new NiceMock<MockBufferedResourceLoader>();
821 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1)) 853 EXPECT_CALL(*data_source_, CreateResourceLoader(position, -1))
822 .WillOnce(Return(new_loader)); 854 .WillOnce(Return(new_loader));
823 855
824 // 3. Then the new loader will be started and respond to queries about 856 // 3. Then the new loader will be started and respond to queries about
825 // whether this is a partial response using the value of the previous 857 // whether this is a partial response using the value of the previous
826 // loader. 858 // loader.
827 EXPECT_CALL(*new_loader, Start(NotNull(), NotNull(), NotNull())) 859 EXPECT_CALL(*new_loader, Start(NotNull(), NotNull()))
828 .WillOnce(DoAll(Assign(&error_, net::OK), 860 .WillOnce(DoAll(Assign(&error_, net::OK),
829 Invoke(this, 861 Invoke(this,
830 &BufferedDataSourceTest::InvokeStartCallback))); 862 &BufferedDataSourceTest::InvokeStartCallback)));
831 EXPECT_CALL(*new_loader, partial_response()) 863 EXPECT_CALL(*new_loader, partial_response())
832 .WillRepeatedly(Return(loader_->partial_response())); 864 .WillRepeatedly(Return(loader_->partial_response()));
833 865
834 // 4. Then again a read request is made to the new loader. 866 // 4. Then again a read request is made to the new loader.
835 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), NotNull())) 867 EXPECT_CALL(*new_loader, Read(position, size, NotNull(), NotNull()))
836 .WillOnce(DoAll(Assign(&error_, size), 868 .WillOnce(DoAll(Assign(&error_, size),
837 Invoke(this, 869 Invoke(this,
(...skipping 12 matching lines...) Expand all
850 message_loop_->Run(); 882 message_loop_->Run();
851 883
852 // Make sure data is correct. 884 // Make sure data is correct.
853 EXPECT_EQ(0, memcmp(buffer_, data_ + static_cast<int>(position), size)); 885 EXPECT_EQ(0, memcmp(buffer_, data_ + static_cast<int>(position), size));
854 886
855 loader_ = new_loader; 887 loader_ = new_loader;
856 } 888 }
857 889
858 MOCK_METHOD1(ReadCallback, void(size_t size)); 890 MOCK_METHOD1(ReadCallback, void(size_t size));
859 891
892 scoped_ptr<StrictMock<MockMediaResourceLoaderBridgeFactory> >
893 bridge_factory_;
860 scoped_refptr<NiceMock<MockBufferedResourceLoader> > loader_; 894 scoped_refptr<NiceMock<MockBufferedResourceLoader> > loader_;
861 scoped_refptr<MockBufferedDataSource> data_source_; 895 scoped_refptr<MockBufferedDataSource> data_source_;
862 scoped_ptr<NiceMock<MockWebFrame> > frame_;
863 896
864 StrictMock<media::MockFilterHost> host_; 897 StrictMock<media::MockFilterHost> host_;
865 GURL gurl_; 898 GURL gurl_;
866 MessageLoop* message_loop_; 899 MessageLoop* message_loop_;
867 900
868 int error_; 901 int error_;
869 uint8 buffer_[1024]; 902 uint8 buffer_[1024];
870 uint8 data_[1024]; 903 uint8 data_[1024];
871 904
872 private: 905 private:
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 StopDataSource(); 977 StopDataSource();
945 } 978 }
946 979
947 TEST_F(BufferedDataSourceTest, FileHasLoadedState) { 980 TEST_F(BufferedDataSourceTest, FileHasLoadedState) {
948 InitializeDataSource(kFileUrl, net::OK, true, 1024, LOADED); 981 InitializeDataSource(kFileUrl, net::OK, true, 1024, LOADED);
949 ReadDataSourceTimesOut(20, 10); 982 ReadDataSourceTimesOut(20, 10);
950 StopDataSource(); 983 StopDataSource();
951 } 984 }
952 985
953 } // namespace webkit_glue 986 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/glue/media/buffered_data_source.cc ('k') | webkit/glue/media/simple_data_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698