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

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: reupload with the change made for rdsmith'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
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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 205
206 scoped_refptr<net::IOBuffer> output_io_buffer; 206 scoped_refptr<net::IOBuffer> output_io_buffer;
207 size_t output_length; 207 size_t output_length;
208 208
209 // Empty stream, non-error case. 209 // Empty stream, non-error case.
210 CreateByteStream( 210 CreateByteStream(
211 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 211 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
212 3 * 1024, &byte_stream_input, &byte_stream_output); 212 3 * 1024, &byte_stream_input, &byte_stream_output);
213 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 213 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
214 byte_stream_output->Read(&output_io_buffer, &output_length)); 214 byte_stream_output->Read(&output_io_buffer, &output_length));
215 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 215 byte_stream_input->Close(0);
216 message_loop_.RunUntilIdle(); 216 message_loop_.RunUntilIdle();
217 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 217 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
218 byte_stream_output->Read(&output_io_buffer, &output_length)); 218 byte_stream_output->Read(&output_io_buffer, &output_length));
219 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NONE, 219 EXPECT_EQ(0, byte_stream_output->GetStatus());
220 byte_stream_output->GetStatus());
221 220
222 // Non-empty stream, non-error case. 221 // Non-empty stream, non-error case.
223 CreateByteStream( 222 CreateByteStream(
224 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 223 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
225 3 * 1024, &byte_stream_input, &byte_stream_output); 224 3 * 1024, &byte_stream_input, &byte_stream_output);
226 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 225 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
227 byte_stream_output->Read(&output_io_buffer, &output_length)); 226 byte_stream_output->Read(&output_io_buffer, &output_length));
228 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 227 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
229 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 228 byte_stream_input->Close(0);
230 message_loop_.RunUntilIdle(); 229 message_loop_.RunUntilIdle();
231 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 230 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
232 byte_stream_output->Read(&output_io_buffer, &output_length)); 231 byte_stream_output->Read(&output_io_buffer, &output_length));
233 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 232 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
234 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 233 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
235 byte_stream_output->Read(&output_io_buffer, &output_length)); 234 byte_stream_output->Read(&output_io_buffer, &output_length));
236 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NONE, 235 EXPECT_EQ(0, byte_stream_output->GetStatus());
237 byte_stream_output->GetStatus());
238 236
239 // Empty stream, non-error case. 237 const int kFakeErrorCode = 22;
238
239 // Empty stream, error case.
240 CreateByteStream( 240 CreateByteStream(
241 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 241 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
242 3 * 1024, &byte_stream_input, &byte_stream_output); 242 3 * 1024, &byte_stream_input, &byte_stream_output);
243 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 243 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
244 byte_stream_output->Read(&output_io_buffer, &output_length)); 244 byte_stream_output->Read(&output_io_buffer, &output_length));
245 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED); 245 byte_stream_input->Close(kFakeErrorCode);
246 message_loop_.RunUntilIdle(); 246 message_loop_.RunUntilIdle();
247 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 247 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
248 byte_stream_output->Read(&output_io_buffer, &output_length)); 248 byte_stream_output->Read(&output_io_buffer, &output_length));
249 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 249 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
250 byte_stream_output->GetStatus());
251 250
252 // Non-empty stream, non-error case. 251 // Non-empty stream, error case.
253 CreateByteStream( 252 CreateByteStream(
254 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), 253 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
255 3 * 1024, &byte_stream_input, &byte_stream_output); 254 3 * 1024, &byte_stream_input, &byte_stream_output);
256 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 255 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
257 byte_stream_output->Read(&output_io_buffer, &output_length)); 256 byte_stream_output->Read(&output_io_buffer, &output_length));
258 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 257 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
259 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED); 258 byte_stream_input->Close(kFakeErrorCode);
260 message_loop_.RunUntilIdle(); 259 message_loop_.RunUntilIdle();
261 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 260 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
262 byte_stream_output->Read(&output_io_buffer, &output_length)); 261 byte_stream_output->Read(&output_io_buffer, &output_length));
263 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 262 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
264 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 263 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
265 byte_stream_output->Read(&output_io_buffer, &output_length)); 264 byte_stream_output->Read(&output_io_buffer, &output_length));
266 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 265 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
267 byte_stream_output->GetStatus());
268 } 266 }
269 267
270 // Confirm that callbacks on the sink side are triggered when they should be. 268 // Confirm that callbacks on the sink side are triggered when they should be.
271 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { 269 TEST_F(ByteStreamTest, ByteStream_SinkCallback) {
272 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 270 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
273 new base::TestSimpleTaskRunner()); 271 new base::TestSimpleTaskRunner());
274 272
275 scoped_ptr<ByteStreamWriter> byte_stream_input; 273 scoped_ptr<ByteStreamWriter> byte_stream_input;
276 scoped_ptr<ByteStreamReader> byte_stream_output; 274 scoped_ptr<ByteStreamReader> byte_stream_output;
277 CreateByteStream( 275 CreateByteStream(
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 10000, &byte_stream_input, &byte_stream_output); 490 10000, &byte_stream_input, &byte_stream_output);
493 491
494 base::Closure intermediate_callback; 492 base::Closure intermediate_callback;
495 493
496 // Record initial state. 494 // Record initial state.
497 int num_callbacks = 0; 495 int num_callbacks = 0;
498 byte_stream_output->RegisterCallback( 496 byte_stream_output->RegisterCallback(
499 base::Bind(CountCallbacks, &num_callbacks)); 497 base::Bind(CountCallbacks, &num_callbacks));
500 498
501 // Immediately close the stream. 499 // Immediately close the stream.
502 byte_stream_input->Close(DOWNLOAD_INTERRUPT_REASON_NONE); 500 byte_stream_input->Close(0);
503 task_runner->RunUntilIdle(); 501 task_runner->RunUntilIdle();
504 EXPECT_EQ(1, num_callbacks); 502 EXPECT_EQ(1, num_callbacks);
505 } 503 }
506 504
507 } // namespace content 505 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698