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

Side by Side Diff: content/browser/byte_stream_unittest.cc

Issue 18284005: Make ByteStream independent from DownloadInterruptReason (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: jam's comment Created 7 years, 4 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 | « content/browser/byte_stream.cc ('k') | content/browser/download/download_file_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/byte_stream.h" 5 #include "content/browser/byte_stream.h"
6 6
7 #include <deque> 7 #include <deque>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 3 * 1024, &byte_stream_input, &byte_stream_output); 108 3 * 1024, &byte_stream_input, &byte_stream_output);
109 109
110 // Push a series of IO buffers on; test pushback happening and 110 // Push a series of IO buffers on; test pushback happening and
111 // that it's advisory. 111 // that it's advisory.
112 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 112 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
114 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 114 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
115 EXPECT_FALSE(Write(byte_stream_input.get(), 1)); 115 EXPECT_FALSE(Write(byte_stream_input.get(), 1));
116 EXPECT_FALSE(Write(byte_stream_input.get(), 1024)); 116 EXPECT_FALSE(Write(byte_stream_input.get(), 1024));
117 // Flush 117 // Flush
118 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 118 byte_stream_input->Close(0);
119 message_loop_.RunUntilIdle(); 119 message_loop_.RunUntilIdle();
120 120
121 // Pull the IO buffers out; do we get the same buffers and do they 121 // Pull the IO buffers out; do we get the same buffers and do they
122 // have the same contents? 122 // have the same contents?
123 scoped_refptr<net::IOBuffer> output_io_buffer; 123 scoped_refptr<net::IOBuffer> output_io_buffer;
124 size_t output_length; 124 size_t output_length;
125 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 125 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
126 byte_stream_output->Read(&output_io_buffer, &output_length)); 126 byte_stream_output->Read(&output_io_buffer, &output_length));
127 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 127 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
128 128
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 byte_stream_output->Read(&output_io_buffer, &output_length)); 171 byte_stream_output->Read(&output_io_buffer, &output_length));
172 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 172 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
173 173
174 // Check that it's ok to Flush() an empty writer. 174 // Check that it's ok to Flush() an empty writer.
175 byte_stream_input->Flush(); 175 byte_stream_input->Flush();
176 message_loop_.RunUntilIdle(); 176 message_loop_.RunUntilIdle();
177 177
178 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 178 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
179 byte_stream_output->Read(&output_io_buffer, &output_length)); 179 byte_stream_output->Read(&output_io_buffer, &output_length));
180 180
181 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 181 byte_stream_input->Close(0);
182 message_loop_.RunUntilIdle(); 182 message_loop_.RunUntilIdle();
183 183
184 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 184 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
185 byte_stream_output->Read(&output_io_buffer, &output_length)); 185 byte_stream_output->Read(&output_io_buffer, &output_length));
186 } 186 }
187 187
188 // Same as above, only use knowledge of the internals to confirm 188 // Same as above, only use knowledge of the internals to confirm
189 // that we're getting pushback even when data's split across the two 189 // that we're getting pushback even when data's split across the two
190 // objects 190 // objects
191 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) { 191 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 244
245 scoped_refptr<net::IOBuffer> output_io_buffer; 245 scoped_refptr<net::IOBuffer> output_io_buffer;
246 size_t output_length; 246 size_t output_length;
247 247
248 // Empty stream, non-error case. 248 // Empty stream, non-error case.
249 CreateByteStream( 249 CreateByteStream(
250 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 250 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
251 3 * 1024, &byte_stream_input, &byte_stream_output); 251 3 * 1024, &byte_stream_input, &byte_stream_output);
252 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 252 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
253 byte_stream_output->Read(&output_io_buffer, &output_length)); 253 byte_stream_output->Read(&output_io_buffer, &output_length));
254 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 254 byte_stream_input->Close(0);
255 message_loop_.RunUntilIdle(); 255 message_loop_.RunUntilIdle();
256 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 256 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
257 byte_stream_output->Read(&output_io_buffer, &output_length)); 257 byte_stream_output->Read(&output_io_buffer, &output_length));
258 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NONE, 258 EXPECT_EQ(0, byte_stream_output->GetStatus());
259 byte_stream_output->GetStatus());
260 259
261 // Non-empty stream, non-error case. 260 // Non-empty stream, non-error case.
262 CreateByteStream( 261 CreateByteStream(
263 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 262 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
264 3 * 1024, &byte_stream_input, &byte_stream_output); 263 3 * 1024, &byte_stream_input, &byte_stream_output);
265 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 264 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
266 byte_stream_output->Read(&output_io_buffer, &output_length)); 265 byte_stream_output->Read(&output_io_buffer, &output_length));
267 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 266 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
268 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 267 byte_stream_input->Close(0);
269 message_loop_.RunUntilIdle(); 268 message_loop_.RunUntilIdle();
270 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 269 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
271 byte_stream_output->Read(&output_io_buffer, &output_length)); 270 byte_stream_output->Read(&output_io_buffer, &output_length));
272 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 271 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
273 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 272 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
274 byte_stream_output->Read(&output_io_buffer, &output_length)); 273 byte_stream_output->Read(&output_io_buffer, &output_length));
275 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NONE, 274 EXPECT_EQ(0, byte_stream_output->GetStatus());
276 byte_stream_output->GetStatus());
277 275
278 // Empty stream, non-error case. 276 const int kFakeErrorCode = 22;
277
278 // Empty stream, error case.
279 CreateByteStream( 279 CreateByteStream(
280 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 280 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
281 3 * 1024, &byte_stream_input, &byte_stream_output); 281 3 * 1024, &byte_stream_input, &byte_stream_output);
282 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 282 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
283 byte_stream_output->Read(&output_io_buffer, &output_length)); 283 byte_stream_output->Read(&output_io_buffer, &output_length));
284 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED); 284 byte_stream_input->Close(kFakeErrorCode);
285 message_loop_.RunUntilIdle(); 285 message_loop_.RunUntilIdle();
286 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 286 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
287 byte_stream_output->Read(&output_io_buffer, &output_length)); 287 byte_stream_output->Read(&output_io_buffer, &output_length));
288 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 288 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
289 byte_stream_output->GetStatus());
290 289
291 // Non-empty stream, non-error case. 290 // Non-empty stream, error case.
292 CreateByteStream( 291 CreateByteStream(
293 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 292 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
294 3 * 1024, &byte_stream_input, &byte_stream_output); 293 3 * 1024, &byte_stream_input, &byte_stream_output);
295 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 294 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
296 byte_stream_output->Read(&output_io_buffer, &output_length)); 295 byte_stream_output->Read(&output_io_buffer, &output_length));
297 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 296 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
298 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED); 297 byte_stream_input->Close(kFakeErrorCode);
299 message_loop_.RunUntilIdle(); 298 message_loop_.RunUntilIdle();
300 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 299 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
301 byte_stream_output->Read(&output_io_buffer, &output_length)); 300 byte_stream_output->Read(&output_io_buffer, &output_length));
302 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 301 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
303 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 302 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
304 byte_stream_output->Read(&output_io_buffer, &output_length)); 303 byte_stream_output->Read(&output_io_buffer, &output_length));
305 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 304 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
306 byte_stream_output->GetStatus());
307 } 305 }
308 306
309 // Confirm that callbacks on the sink side are triggered when they should be. 307 // Confirm that callbacks on the sink side are triggered when they should be.
310 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { 308 TEST_F(ByteStreamTest, ByteStream_SinkCallback) {
311 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 309 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
312 new base::TestSimpleTaskRunner()); 310 new base::TestSimpleTaskRunner());
313 311
314 scoped_ptr<ByteStreamWriter> byte_stream_input; 312 scoped_ptr<ByteStreamWriter> byte_stream_input;
315 scoped_ptr<ByteStreamReader> byte_stream_output; 313 scoped_ptr<ByteStreamReader> byte_stream_output;
316 CreateByteStream( 314 CreateByteStream(
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 10000, &byte_stream_input, &byte_stream_output); 529 10000, &byte_stream_input, &byte_stream_output);
532 530
533 base::Closure intermediate_callback; 531 base::Closure intermediate_callback;
534 532
535 // Record initial state. 533 // Record initial state.
536 int num_callbacks = 0; 534 int num_callbacks = 0;
537 byte_stream_output->RegisterCallback( 535 byte_stream_output->RegisterCallback(
538 base::Bind(CountCallbacks, &num_callbacks)); 536 base::Bind(CountCallbacks, &num_callbacks));
539 537
540 // Immediately close the stream. 538 // Immediately close the stream.
541 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 539 byte_stream_input->Close(0);
542 task_runner->RunUntilIdle(); 540 task_runner->RunUntilIdle();
543 EXPECT_EQ(1, num_callbacks); 541 EXPECT_EQ(1, num_callbacks);
544 } 542 }
545 543
546 } // namespace content 544 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/byte_stream.cc ('k') | content/browser/download/download_file_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698