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

Side by Side Diff: net/http/http_network_transaction_spdy2_unittest.cc

Issue 16480002: Fix some potential after free errors on TestCompletionCallback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: another one Created 7 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 | 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 "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 new HttpNetworkTransaction(DEFAULT_PRIORITY, 302 new HttpNetworkTransaction(DEFAULT_PRIORITY,
303 CreateSession(&session_deps_))); 303 CreateSession(&session_deps_)));
304 304
305 for (size_t i = 0; i < data_count; ++i) { 305 for (size_t i = 0; i < data_count; ++i) {
306 session_deps_.socket_factory->AddSocketDataProvider(data[i]); 306 session_deps_.socket_factory->AddSocketDataProvider(data[i]);
307 } 307 }
308 308
309 TestCompletionCallback callback; 309 TestCompletionCallback callback;
310 310
311 EXPECT_TRUE(log.bound().IsLoggingAllEvents()); 311 EXPECT_TRUE(log.bound().IsLoggingAllEvents());
312 int rv = trans->Start(&request, callback.callback(), log.bound()); 312 out.rv = trans->Start(&request, callback.callback(), log.bound());
313 EXPECT_EQ(ERR_IO_PENDING, rv); 313 EXPECT_EQ(ERR_IO_PENDING, out.rv);
314 314 if (out.rv == net::ERR_IO_PENDING)
315 out.rv = callback.WaitForResult(); 315 out.rv = callback.WaitForResult();
316 316
317 // Even in the failure cases that use this function, connections are always 317 // Even in the failure cases that use this function, connections are always
318 // successfully established before the error. 318 // successfully established before the error.
319 EXPECT_TRUE(trans->GetLoadTimingInfo(&out.load_timing_info)); 319 EXPECT_TRUE(trans->GetLoadTimingInfo(&out.load_timing_info));
320 TestLoadTimingNotReused(out.load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); 320 TestLoadTimingNotReused(out.load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES);
321 321
322 if (out.rv != OK) 322 if (out.rv != OK)
323 return out; 323 return out;
324 324
325 const HttpResponseInfo* response = trans->GetResponseInfo(); 325 const HttpResponseInfo* response = trans->GetResponseInfo();
326 // Can't use ASSERT_* inside helper functions like this, so 326 // Can't use ASSERT_* inside helper functions like this, so
327 // return an error. 327 // return an error.
328 if (response == NULL || response->headers.get() == NULL) { 328 if (response == NULL || response->headers.get() == NULL) {
329 out.rv = ERR_UNEXPECTED; 329 out.rv = ERR_UNEXPECTED;
330 return out; 330 return out;
331 } 331 }
332 out.status_line = response->headers->GetStatusLine(); 332 out.status_line = response->headers->GetStatusLine();
333 333
334 EXPECT_EQ("127.0.0.1", response->socket_address.host()); 334 EXPECT_EQ("127.0.0.1", response->socket_address.host());
335 EXPECT_EQ(80, response->socket_address.port()); 335 EXPECT_EQ(80, response->socket_address.port());
336 336
337 rv = ReadTransaction(trans.get(), &out.response_data); 337 int rv = ReadTransaction(trans.get(), &out.response_data);
338 EXPECT_EQ(OK, rv); 338 EXPECT_EQ(OK, rv);
339 339
340 net::CapturingNetLog::CapturedEntryList entries; 340 net::CapturingNetLog::CapturedEntryList entries;
341 log.GetEntries(&entries); 341 log.GetEntries(&entries);
342 size_t pos = ExpectLogContainsSomewhere( 342 size_t pos = ExpectLogContainsSomewhere(
343 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS, 343 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS,
344 NetLog::PHASE_NONE); 344 NetLog::PHASE_NONE);
345 ExpectLogContainsSomewhere( 345 ExpectLogContainsSomewhere(
346 entries, pos, 346 entries, pos,
347 NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS, 347 NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS,
(...skipping 11044 matching lines...) Expand 10 before | Expand all | Expand 10 after
11392 EXPECT_EQ("hello!", response_data); 11392 EXPECT_EQ("hello!", response_data);
11393 EXPECT_FALSE( 11393 EXPECT_FALSE(
11394 session->spdy_session_pool()->HasSession(spdy_session_key_a)); 11394 session->spdy_session_pool()->HasSession(spdy_session_key_a));
11395 EXPECT_FALSE( 11395 EXPECT_FALSE(
11396 session->spdy_session_pool()->HasSession(spdy_session_key_b)); 11396 session->spdy_session_pool()->HasSession(spdy_session_key_b));
11397 11397
11398 HttpStreamFactory::SetNextProtos(std::vector<std::string>()); 11398 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
11399 } 11399 }
11400 11400
11401 } // namespace net 11401 } // namespace net
OLDNEW
« net/http/http_cache_unittest.cc ('K') | « net/http/http_cache_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698