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

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

Issue 2082343002: Remove calls to deprecated MessageLoop methods in content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <deque> 9 #include <deque>
10 #include <limits> 10 #include <limits>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/run_loop.h"
15 #include "base/test/test_simple_task_runner.h" 16 #include "base/test/test_simple_task_runner.h"
16 #include "net/base/io_buffer.h" 17 #include "net/base/io_buffer.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 namespace content { 20 namespace content {
20 namespace { 21 namespace {
21 22
22 void CountCallbacks(int* counter) { 23 void CountCallbacks(int* counter) {
23 ++*counter; 24 ++*counter;
24 } 25 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 // Push a series of IO buffers on; test pushback happening and 112 // Push a series of IO buffers on; test pushback happening and
112 // that it's advisory. 113 // that it's advisory.
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_TRUE(Write(byte_stream_input.get(), 1024));
115 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 116 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
116 EXPECT_FALSE(Write(byte_stream_input.get(), 1)); 117 EXPECT_FALSE(Write(byte_stream_input.get(), 1));
117 EXPECT_FALSE(Write(byte_stream_input.get(), 1024)); 118 EXPECT_FALSE(Write(byte_stream_input.get(), 1024));
118 // Flush 119 // Flush
119 byte_stream_input->Close(0); 120 byte_stream_input->Close(0);
120 EXPECT_EQ(4 * 1024U + 1U, byte_stream_input->GetTotalBufferedBytes()); 121 EXPECT_EQ(4 * 1024U + 1U, byte_stream_input->GetTotalBufferedBytes());
121 message_loop_.RunUntilIdle(); 122 base::RunLoop().RunUntilIdle();
122 // Data already sent to reader is also counted in. 123 // Data already sent to reader is also counted in.
123 EXPECT_EQ(4 * 1024U + 1U, byte_stream_input->GetTotalBufferedBytes()); 124 EXPECT_EQ(4 * 1024U + 1U, byte_stream_input->GetTotalBufferedBytes());
124 125
125 // Pull the IO buffers out; do we get the same buffers and do they 126 // Pull the IO buffers out; do we get the same buffers and do they
126 // have the same contents? 127 // have the same contents?
127 scoped_refptr<net::IOBuffer> output_io_buffer; 128 scoped_refptr<net::IOBuffer> output_io_buffer;
128 size_t output_length; 129 size_t output_length;
129 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 130 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
130 byte_stream_output->Read(&output_io_buffer, &output_length)); 131 byte_stream_output->Read(&output_io_buffer, &output_length));
131 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 132 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
(...skipping 10 matching lines...) Expand all
142 byte_stream_output->Read(&output_io_buffer, &output_length)); 143 byte_stream_output->Read(&output_io_buffer, &output_length));
143 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 144 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
144 145
145 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 146 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
146 byte_stream_output->Read(&output_io_buffer, &output_length)); 147 byte_stream_output->Read(&output_io_buffer, &output_length));
147 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 148 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
148 149
149 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 150 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
150 byte_stream_output->Read(&output_io_buffer, &output_length)); 151 byte_stream_output->Read(&output_io_buffer, &output_length));
151 152
152 message_loop_.RunUntilIdle(); 153 base::RunLoop().RunUntilIdle();
153 // Reader now knows that all data is read out. 154 // Reader now knows that all data is read out.
154 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes()); 155 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes());
155 } 156 }
156 157
157 // Confirm that Flush() method makes the writer to send written contents to 158 // Confirm that Flush() method makes the writer to send written contents to
158 // the reader. 159 // the reader.
159 TEST_F(ByteStreamTest, ByteStream_Flush) { 160 TEST_F(ByteStreamTest, ByteStream_Flush) {
160 std::unique_ptr<ByteStreamWriter> byte_stream_input; 161 std::unique_ptr<ByteStreamWriter> byte_stream_input;
161 std::unique_ptr<ByteStreamReader> byte_stream_output; 162 std::unique_ptr<ByteStreamReader> byte_stream_output;
162 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 163 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
163 1024, &byte_stream_input, &byte_stream_output); 164 1024, &byte_stream_input, &byte_stream_output);
164 165
165 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); 166 EXPECT_TRUE(Write(byte_stream_input.get(), 1));
166 message_loop_.RunUntilIdle(); 167 base::RunLoop().RunUntilIdle();
167 168
168 scoped_refptr<net::IOBuffer> output_io_buffer; 169 scoped_refptr<net::IOBuffer> output_io_buffer;
169 size_t output_length = 0; 170 size_t output_length = 0;
170 // Check that data is not sent to the reader yet. 171 // Check that data is not sent to the reader yet.
171 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 172 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
172 byte_stream_output->Read(&output_io_buffer, &output_length)); 173 byte_stream_output->Read(&output_io_buffer, &output_length));
173 174
174 byte_stream_input->Flush(); 175 byte_stream_input->Flush();
175 message_loop_.RunUntilIdle(); 176 base::RunLoop().RunUntilIdle();
176 177
177 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 178 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
178 byte_stream_output->Read(&output_io_buffer, &output_length)); 179 byte_stream_output->Read(&output_io_buffer, &output_length));
179 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 180 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
180 181
181 // Check that it's ok to Flush() an empty writer. 182 // Check that it's ok to Flush() an empty writer.
182 byte_stream_input->Flush(); 183 byte_stream_input->Flush();
183 message_loop_.RunUntilIdle(); 184 base::RunLoop().RunUntilIdle();
184 185
185 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 186 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
186 byte_stream_output->Read(&output_io_buffer, &output_length)); 187 byte_stream_output->Read(&output_io_buffer, &output_length));
187 188
188 byte_stream_input->Close(0); 189 byte_stream_input->Close(0);
189 message_loop_.RunUntilIdle(); 190 base::RunLoop().RunUntilIdle();
190 191
191 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 192 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
192 byte_stream_output->Read(&output_io_buffer, &output_length)); 193 byte_stream_output->Read(&output_io_buffer, &output_length));
193 } 194 }
194 195
195 // Same as above, only use knowledge of the internals to confirm 196 // Same as above, only use knowledge of the internals to confirm
196 // that we're getting pushback even when data's split across the two 197 // that we're getting pushback even when data's split across the two
197 // objects 198 // objects
198 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) { 199 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) {
199 std::unique_ptr<ByteStreamWriter> byte_stream_input; 200 std::unique_ptr<ByteStreamWriter> byte_stream_input;
200 std::unique_ptr<ByteStreamReader> byte_stream_output; 201 std::unique_ptr<ByteStreamReader> byte_stream_output;
201 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 202 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
202 9 * 1024, &byte_stream_input, &byte_stream_output); 203 9 * 1024, &byte_stream_input, &byte_stream_output);
203 204
204 // Push a series of IO buffers on; test pushback happening and 205 // Push a series of IO buffers on; test pushback happening and
205 // that it's advisory. 206 // that it's advisory.
206 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 207 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
207 message_loop_.RunUntilIdle(); 208 base::RunLoop().RunUntilIdle();
208 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 209 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
209 message_loop_.RunUntilIdle(); 210 base::RunLoop().RunUntilIdle();
210 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 211 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
211 message_loop_.RunUntilIdle(); 212 base::RunLoop().RunUntilIdle();
212 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 213 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
213 message_loop_.RunUntilIdle(); 214 base::RunLoop().RunUntilIdle();
214 EXPECT_FALSE(Write(byte_stream_input.get(), 6 * 1024)); 215 EXPECT_FALSE(Write(byte_stream_input.get(), 6 * 1024));
215 message_loop_.RunUntilIdle(); 216 base::RunLoop().RunUntilIdle();
216 217
217 // Pull the IO buffers out; do we get the same buffers and do they 218 // Pull the IO buffers out; do we get the same buffers and do they
218 // have the same contents? 219 // have the same contents?
219 scoped_refptr<net::IOBuffer> output_io_buffer; 220 scoped_refptr<net::IOBuffer> output_io_buffer;
220 size_t output_length; 221 size_t output_length;
221 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 222 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
222 byte_stream_output->Read(&output_io_buffer, &output_length)); 223 byte_stream_output->Read(&output_io_buffer, &output_length));
223 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 224 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
224 225
225 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 226 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
(...skipping 24 matching lines...) Expand all
250 251
251 scoped_refptr<net::IOBuffer> output_io_buffer; 252 scoped_refptr<net::IOBuffer> output_io_buffer;
252 size_t output_length; 253 size_t output_length;
253 254
254 // Empty stream, non-error case. 255 // Empty stream, non-error case.
255 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 256 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
256 3 * 1024, &byte_stream_input, &byte_stream_output); 257 3 * 1024, &byte_stream_input, &byte_stream_output);
257 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 258 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
258 byte_stream_output->Read(&output_io_buffer, &output_length)); 259 byte_stream_output->Read(&output_io_buffer, &output_length));
259 byte_stream_input->Close(0); 260 byte_stream_input->Close(0);
260 message_loop_.RunUntilIdle(); 261 base::RunLoop().RunUntilIdle();
261 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 262 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
262 byte_stream_output->Read(&output_io_buffer, &output_length)); 263 byte_stream_output->Read(&output_io_buffer, &output_length));
263 EXPECT_EQ(0, byte_stream_output->GetStatus()); 264 EXPECT_EQ(0, byte_stream_output->GetStatus());
264 265
265 // Non-empty stream, non-error case. 266 // Non-empty stream, non-error case.
266 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 267 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
267 3 * 1024, &byte_stream_input, &byte_stream_output); 268 3 * 1024, &byte_stream_input, &byte_stream_output);
268 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 269 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
269 byte_stream_output->Read(&output_io_buffer, &output_length)); 270 byte_stream_output->Read(&output_io_buffer, &output_length));
270 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 271 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
271 byte_stream_input->Close(0); 272 byte_stream_input->Close(0);
272 message_loop_.RunUntilIdle(); 273 base::RunLoop().RunUntilIdle();
273 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 274 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
274 byte_stream_output->Read(&output_io_buffer, &output_length)); 275 byte_stream_output->Read(&output_io_buffer, &output_length));
275 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 276 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
276 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 277 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
277 byte_stream_output->Read(&output_io_buffer, &output_length)); 278 byte_stream_output->Read(&output_io_buffer, &output_length));
278 EXPECT_EQ(0, byte_stream_output->GetStatus()); 279 EXPECT_EQ(0, byte_stream_output->GetStatus());
279 280
280 const int kFakeErrorCode = 22; 281 const int kFakeErrorCode = 22;
281 282
282 // Empty stream, error case. 283 // Empty stream, error case.
283 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 284 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
284 3 * 1024, &byte_stream_input, &byte_stream_output); 285 3 * 1024, &byte_stream_input, &byte_stream_output);
285 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 286 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
286 byte_stream_output->Read(&output_io_buffer, &output_length)); 287 byte_stream_output->Read(&output_io_buffer, &output_length));
287 byte_stream_input->Close(kFakeErrorCode); 288 byte_stream_input->Close(kFakeErrorCode);
288 message_loop_.RunUntilIdle(); 289 base::RunLoop().RunUntilIdle();
289 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 290 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
290 byte_stream_output->Read(&output_io_buffer, &output_length)); 291 byte_stream_output->Read(&output_io_buffer, &output_length));
291 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); 292 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
292 293
293 // Non-empty stream, error case. 294 // Non-empty stream, error case.
294 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 295 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
295 3 * 1024, &byte_stream_input, &byte_stream_output); 296 3 * 1024, &byte_stream_input, &byte_stream_output);
296 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 297 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
297 byte_stream_output->Read(&output_io_buffer, &output_length)); 298 byte_stream_output->Read(&output_io_buffer, &output_length));
298 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 299 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
299 byte_stream_input->Close(kFakeErrorCode); 300 byte_stream_input->Close(kFakeErrorCode);
300 message_loop_.RunUntilIdle(); 301 base::RunLoop().RunUntilIdle();
301 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 302 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
302 byte_stream_output->Read(&output_io_buffer, &output_length)); 303 byte_stream_output->Read(&output_io_buffer, &output_length));
303 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 304 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
304 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 305 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
305 byte_stream_output->Read(&output_io_buffer, &output_length)); 306 byte_stream_output->Read(&output_io_buffer, &output_length));
306 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); 307 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
307 } 308 }
308 309
309 // Confirm that callbacks on the sink side are triggered when they should be. 310 // Confirm that callbacks on the sink side are triggered when they should be.
310 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { 311 TEST_F(ByteStreamTest, ByteStream_SinkCallback) {
(...skipping 14 matching lines...) Expand all
325 // tests below should get much more precise. 326 // tests below should get much more precise.
326 327
327 // Confirm callback called when you add more than 33% of the buffer. 328 // Confirm callback called when you add more than 33% of the buffer.
328 329
329 // Setup callback 330 // Setup callback
330 int num_callbacks = 0; 331 int num_callbacks = 0;
331 byte_stream_output->RegisterCallback( 332 byte_stream_output->RegisterCallback(
332 base::Bind(CountCallbacks, &num_callbacks)); 333 base::Bind(CountCallbacks, &num_callbacks));
333 334
334 EXPECT_TRUE(Write(byte_stream_input.get(), 4000)); 335 EXPECT_TRUE(Write(byte_stream_input.get(), 4000));
335 message_loop_.RunUntilIdle(); 336 base::RunLoop().RunUntilIdle();
336 337
337 EXPECT_EQ(0, num_callbacks); 338 EXPECT_EQ(0, num_callbacks);
338 task_runner->RunUntilIdle(); 339 task_runner->RunUntilIdle();
339 EXPECT_EQ(1, num_callbacks); 340 EXPECT_EQ(1, num_callbacks);
340 341
341 // Check data and stream state. 342 // Check data and stream state.
342 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 343 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
343 byte_stream_output->Read(&output_io_buffer, &output_length)); 344 byte_stream_output->Read(&output_io_buffer, &output_length));
344 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 345 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
345 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 346 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
346 byte_stream_output->Read(&output_io_buffer, &output_length)); 347 byte_stream_output->Read(&output_io_buffer, &output_length));
347 348
348 // Confirm callback *isn't* called at less than 33% (by lack of 349 // Confirm callback *isn't* called at less than 33% (by lack of
349 // unexpected call on task runner). 350 // unexpected call on task runner).
350 EXPECT_TRUE(Write(byte_stream_input.get(), 3000)); 351 EXPECT_TRUE(Write(byte_stream_input.get(), 3000));
351 message_loop_.RunUntilIdle(); 352 base::RunLoop().RunUntilIdle();
352 353
353 // This reflects an implementation artifact that data goes with callbacks, 354 // This reflects an implementation artifact that data goes with callbacks,
354 // which should not be considered part of the interface guarantee. 355 // which should not be considered part of the interface guarantee.
355 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 356 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
356 byte_stream_output->Read(&output_io_buffer, &output_length)); 357 byte_stream_output->Read(&output_io_buffer, &output_length));
357 } 358 }
358 359
359 // Confirm that callbacks on the source side are triggered when they should 360 // Confirm that callbacks on the source side are triggered when they should
360 // be. 361 // be.
361 TEST_F(ByteStreamTest, ByteStream_SourceCallback) { 362 TEST_F(ByteStreamTest, ByteStream_SourceCallback) {
(...skipping 19 matching lines...) Expand all
381 // Add data. 382 // Add data.
382 int num_callbacks = 0; 383 int num_callbacks = 0;
383 byte_stream_input->RegisterCallback( 384 byte_stream_input->RegisterCallback(
384 base::Bind(CountCallbacks, &num_callbacks)); 385 base::Bind(CountCallbacks, &num_callbacks));
385 EXPECT_TRUE(Write(byte_stream_input.get(), 2000)); 386 EXPECT_TRUE(Write(byte_stream_input.get(), 2000));
386 EXPECT_TRUE(Write(byte_stream_input.get(), 2001)); 387 EXPECT_TRUE(Write(byte_stream_input.get(), 2001));
387 EXPECT_FALSE(Write(byte_stream_input.get(), 6000)); 388 EXPECT_FALSE(Write(byte_stream_input.get(), 6000));
388 389
389 // Allow bytes to transition (needed for message passing implementation), 390 // Allow bytes to transition (needed for message passing implementation),
390 // and get and validate the data. 391 // and get and validate the data.
391 message_loop_.RunUntilIdle(); 392 base::RunLoop().RunUntilIdle();
392 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 393 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
393 byte_stream_output->Read(&output_io_buffer, &output_length)); 394 byte_stream_output->Read(&output_io_buffer, &output_length));
394 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 395 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
395 396
396 // Grab data, triggering callback. Recorded on dispatch, but doesn't 397 // Grab data, triggering callback. Recorded on dispatch, but doesn't
397 // happen because it's caught by the mock. 398 // happen because it's caught by the mock.
398 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 399 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
399 byte_stream_output->Read(&output_io_buffer, &output_length)); 400 byte_stream_output->Read(&output_io_buffer, &output_length));
400 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 401 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
401 402
(...skipping 30 matching lines...) Expand all
432 size_t output_length; 433 size_t output_length;
433 base::Closure intermediate_callback; 434 base::Closure intermediate_callback;
434 435
435 // Record initial state. 436 // Record initial state.
436 int num_callbacks = 0; 437 int num_callbacks = 0;
437 byte_stream_output->RegisterCallback( 438 byte_stream_output->RegisterCallback(
438 base::Bind(CountCallbacks, &num_callbacks)); 439 base::Bind(CountCallbacks, &num_callbacks));
439 440
440 // Add data, and pass it across. 441 // Add data, and pass it across.
441 EXPECT_TRUE(Write(byte_stream_input.get(), 4000)); 442 EXPECT_TRUE(Write(byte_stream_input.get(), 4000));
442 message_loop_.RunUntilIdle(); 443 base::RunLoop().RunUntilIdle();
443 444
444 // The task runner should have been hit, but the callback count 445 // The task runner should have been hit, but the callback count
445 // isn't changed until we actually run the callback. 446 // isn't changed until we actually run the callback.
446 EXPECT_EQ(0, num_callbacks); 447 EXPECT_EQ(0, num_callbacks);
447 448
448 // If we change the callback now, the new one should be run 449 // If we change the callback now, the new one should be run
449 // (simulates race with post task). 450 // (simulates race with post task).
450 int num_alt_callbacks = 0; 451 int num_alt_callbacks = 0;
451 byte_stream_output->RegisterCallback( 452 byte_stream_output->RegisterCallback(
452 base::Bind(CountCallbacks, &num_alt_callbacks)); 453 base::Bind(CountCallbacks, &num_alt_callbacks));
(...skipping 25 matching lines...) Expand all
478 size_t output_length; 479 size_t output_length;
479 base::Closure intermediate_callback; 480 base::Closure intermediate_callback;
480 481
481 // Setup state for test. 482 // Setup state for test.
482 int num_callbacks = 0; 483 int num_callbacks = 0;
483 byte_stream_input->RegisterCallback( 484 byte_stream_input->RegisterCallback(
484 base::Bind(CountCallbacks, &num_callbacks)); 485 base::Bind(CountCallbacks, &num_callbacks));
485 EXPECT_TRUE(Write(byte_stream_input.get(), 2000)); 486 EXPECT_TRUE(Write(byte_stream_input.get(), 2000));
486 EXPECT_TRUE(Write(byte_stream_input.get(), 2001)); 487 EXPECT_TRUE(Write(byte_stream_input.get(), 2001));
487 EXPECT_FALSE(Write(byte_stream_input.get(), 6000)); 488 EXPECT_FALSE(Write(byte_stream_input.get(), 6000));
488 message_loop_.RunUntilIdle(); 489 base::RunLoop().RunUntilIdle();
489 490
490 // Initial get should not trigger callback. 491 // Initial get should not trigger callback.
491 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 492 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
492 byte_stream_output->Read(&output_io_buffer, &output_length)); 493 byte_stream_output->Read(&output_io_buffer, &output_length));
493 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 494 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
494 message_loop_.RunUntilIdle(); 495 base::RunLoop().RunUntilIdle();
495 496
496 // Second get *should* trigger callback. 497 // Second get *should* trigger callback.
497 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 498 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
498 byte_stream_output->Read(&output_io_buffer, &output_length)); 499 byte_stream_output->Read(&output_io_buffer, &output_length));
499 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 500 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
500 501
501 // Which should do the right thing when it's run. 502 // Which should do the right thing when it's run.
502 int num_alt_callbacks = 0; 503 int num_alt_callbacks = 0;
503 byte_stream_input->RegisterCallback( 504 byte_stream_input->RegisterCallback(
504 base::Bind(CountCallbacks, &num_alt_callbacks)); 505 base::Bind(CountCallbacks, &num_alt_callbacks));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 EXPECT_EQ(1, num_callbacks); 539 EXPECT_EQ(1, num_callbacks);
539 } 540 }
540 541
541 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) { 542 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) {
542 std::unique_ptr<ByteStreamWriter> byte_stream_input; 543 std::unique_ptr<ByteStreamWriter> byte_stream_input;
543 std::unique_ptr<ByteStreamReader> byte_stream_output; 544 std::unique_ptr<ByteStreamReader> byte_stream_output;
544 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 545 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
545 3 * 1024, &byte_stream_input, &byte_stream_output); 546 3 * 1024, &byte_stream_input, &byte_stream_output);
546 547
547 byte_stream_input->Close(0); 548 byte_stream_input->Close(0);
548 message_loop_.RunUntilIdle(); 549 base::RunLoop().RunUntilIdle();
549 550
550 scoped_refptr<net::IOBuffer> output_io_buffer; 551 scoped_refptr<net::IOBuffer> output_io_buffer;
551 size_t output_length; 552 size_t output_length;
552 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 553 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
553 byte_stream_output->Read(&output_io_buffer, &output_length)); 554 byte_stream_output->Read(&output_io_buffer, &output_length));
554 } 555 }
555 556
556 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) { 557 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) {
557 std::unique_ptr<ByteStreamWriter> byte_stream_input; 558 std::unique_ptr<ByteStreamWriter> byte_stream_input;
558 std::unique_ptr<ByteStreamReader> byte_stream_output; 559 std::unique_ptr<ByteStreamReader> byte_stream_output;
559 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 560 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
560 3 * 1024, &byte_stream_input, &byte_stream_output); 561 3 * 1024, &byte_stream_input, &byte_stream_output);
561 562
562 byte_stream_input->Flush(); 563 byte_stream_input->Flush();
563 message_loop_.RunUntilIdle(); 564 base::RunLoop().RunUntilIdle();
564 565
565 scoped_refptr<net::IOBuffer> output_io_buffer; 566 scoped_refptr<net::IOBuffer> output_io_buffer;
566 size_t output_length; 567 size_t output_length;
567 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 568 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
568 byte_stream_output->Read(&output_io_buffer, &output_length)); 569 byte_stream_output->Read(&output_io_buffer, &output_length));
569 570
570 byte_stream_input->Close(0); 571 byte_stream_input->Close(0);
571 message_loop_.RunUntilIdle(); 572 base::RunLoop().RunUntilIdle();
572 573
573 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 574 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
574 byte_stream_output->Read(&output_io_buffer, &output_length)); 575 byte_stream_output->Read(&output_io_buffer, &output_length));
575 } 576 }
576 577
577 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) { 578 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) {
578 std::unique_ptr<ByteStreamWriter> byte_stream_input; 579 std::unique_ptr<ByteStreamWriter> byte_stream_input;
579 std::unique_ptr<ByteStreamReader> byte_stream_output; 580 std::unique_ptr<ByteStreamReader> byte_stream_output;
580 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 581 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(),
581 std::numeric_limits<size_t>::max(), &byte_stream_input, 582 std::numeric_limits<size_t>::max(), &byte_stream_input,
582 &byte_stream_output); 583 &byte_stream_output);
583 584
584 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); 585 EXPECT_TRUE(Write(byte_stream_input.get(), 1));
585 // 1 + size_t max -> Overflow. 586 // 1 + size_t max -> Overflow.
586 scoped_refptr<net::IOBuffer> empty_io_buffer; 587 scoped_refptr<net::IOBuffer> empty_io_buffer;
587 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer, 588 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer,
588 std::numeric_limits<size_t>::max())); 589 std::numeric_limits<size_t>::max()));
589 message_loop_.RunUntilIdle(); 590 base::RunLoop().RunUntilIdle();
590 591
591 // The first write is below PostToPeer threshold. We shouldn't get anything 592 // The first write is below PostToPeer threshold. We shouldn't get anything
592 // from the output. 593 // from the output.
593 scoped_refptr<net::IOBuffer> output_io_buffer; 594 scoped_refptr<net::IOBuffer> output_io_buffer;
594 size_t output_length; 595 size_t output_length;
595 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 596 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
596 byte_stream_output->Read(&output_io_buffer, &output_length)); 597 byte_stream_output->Read(&output_io_buffer, &output_length));
597 } 598 }
598 599
599 } // namespace content 600 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698