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

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

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