From f3da152dfaa23bf58475e17d5f3d207806ae4705 Mon Sep 17 00:00:00 2001 From: "mmenke@chromium.org" Date: Sat, 2 Jun 2012 01:00:57 +0000 Subject: [PATCH] Rename CapturingNetLog::Entry to CapturingNetLog::CaptureEntry, and have it keep its own copy of a NetLog Entry's parameters. This is in preparation for a NetLog refactoring that will result in NetLog parameters lasting no longer than the function call, to avoid always having to copy all parameters. This does make CapturingNetLogs much less efficient themselves, but they should not be used in production code, anyways. TEST=NONE BUG=126243 Review URL: https://chromiumcodereview.appspot.com/10442085 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140146 0039d316-1c4b-4281-b951-d872f2087c98 --- net/base/capturing_net_log.cc | 82 +++++++++++++++---- net/base/capturing_net_log.h | 53 +++++++++--- net/base/net_log_event_type_list.h | 4 +- net/base/net_log_unittest.cc | 2 +- net/base/net_log_unittest.h | 26 +++--- net/http/http_auth_handler_unittest.cc | 2 +- net/http/http_cache_unittest.cc | 6 +- ...http_network_transaction_spdy2_unittest.cc | 45 ++++++---- ...http_network_transaction_spdy3_unittest.cc | 45 ++++++---- .../multi_threaded_proxy_resolver_unittest.cc | 8 +- .../proxy_resolver_js_bindings_unittest.cc | 4 +- net/proxy/proxy_resolver_v8_unittest.cc | 2 +- net/proxy/proxy_script_decider_unittest.cc | 10 +-- net/proxy/proxy_service_unittest.cc | 8 +- .../client_socket_pool_base_unittest.cc | 16 ++-- net/socket/socks5_client_socket_unittest.cc | 10 +-- net/socket/socks_client_socket_unittest.cc | 12 +-- net/socket/ssl_client_socket_unittest.cc | 18 ++-- .../transport_client_socket_unittest.cc | 2 +- ...spdy_network_transaction_spdy2_unittest.cc | 40 ++++----- ...spdy_network_transaction_spdy3_unittest.cc | 40 ++++----- net/spdy/spdy_session.cc | 6 +- net/spdy/spdy_session.h | 9 +- net/spdy/spdy_session_spdy2_unittest.cc | 11 ++- net/spdy/spdy_session_spdy3_unittest.cc | 11 ++- net/spdy/spdy_stream_spdy2_unittest.cc | 10 +-- net/spdy/spdy_stream_spdy3_unittest.cc | 10 +-- net/udp/udp_socket_unittest.cc | 4 +- 28 files changed, 299 insertions(+), 197 deletions(-) diff --git a/net/base/capturing_net_log.cc b/net/base/capturing_net_log.cc index 2c6867c667b6..2ab0223ed2bc 100644 --- a/net/base/capturing_net_log.cc +++ b/net/base/capturing_net_log.cc @@ -5,19 +5,58 @@ #include "net/base/capturing_net_log.h" #include "base/logging.h" +#include "base/values.h" namespace net { -CapturingNetLog::Entry::Entry(EventType type, - const base::TimeTicks& time, - Source source, - EventPhase phase, - EventParameters* extra_parameters) - : type(type), time(time), source(source), phase(phase), - extra_parameters(extra_parameters) { +CapturingNetLog::CapturedEntry::CapturedEntry( + EventType type, + const base::TimeTicks& time, + Source source, + EventPhase phase, + scoped_ptr params) + : type(type), + time(time), + source(source), + phase(phase), + params(params.Pass()) { +} + +CapturingNetLog::CapturedEntry::CapturedEntry(const CapturedEntry& entry) { + *this = entry; +} + +CapturingNetLog::CapturedEntry::~CapturedEntry() {} + +CapturingNetLog::CapturedEntry& +CapturingNetLog::CapturedEntry::operator=(const CapturedEntry& entry) { + type = entry.type; + time = entry.time; + source = entry.source; + phase = entry.phase; + params.reset(entry.params.get() ? entry.params->DeepCopy() : NULL); + return *this; +} + +bool CapturingNetLog::CapturedEntry::GetStringValue( + const std::string& name, + std::string* value) const { + if (!params.get()) + return false; + return params->GetString(name, value); } -CapturingNetLog::Entry::~Entry() {} +bool CapturingNetLog::CapturedEntry::GetIntegerValue( + const std::string& name, + int* value) const { + if (!params.get()) + return false; + return params->GetInteger(name, value); +} + +bool CapturingNetLog::CapturedEntry::GetNetErrorCode(int* value) const { + return GetIntegerValue("net_error", value); +} CapturingNetLog::CapturingNetLog(size_t max_num_entries) : last_id_(0), @@ -27,14 +66,14 @@ CapturingNetLog::CapturingNetLog(size_t max_num_entries) CapturingNetLog::~CapturingNetLog() {} -void CapturingNetLog::GetEntries(EntryList* entry_list) const { +void CapturingNetLog::GetEntries(CapturedEntryList* entry_list) const { base::AutoLock lock(lock_); - *entry_list = entries_; + *entry_list = captured_entries_; } void CapturingNetLog::Clear() { base::AutoLock lock(lock_); - entries_.clear(); + captured_entries_.clear(); } void CapturingNetLog::SetLogLevel(NetLog::LogLevel log_level) { @@ -49,9 +88,22 @@ void CapturingNetLog::AddEntry( const scoped_refptr& extra_parameters) { DCHECK(source.is_valid()); base::AutoLock lock(lock_); - Entry entry(type, base::TimeTicks::Now(), source, phase, extra_parameters); - if (entries_.size() + 1 < max_num_entries_) - entries_.push_back(entry); + if (captured_entries_.size() >= max_num_entries_) + return; + // Using Dictionaries instead of Values makes checking values a little + // simpler. + DictionaryValue* param_dict = NULL; + if (extra_parameters) { + Value* param_value = extra_parameters->ToValue(); + if (param_value && !param_value->GetAsDictionary(¶m_dict)) + delete param_value; + } + captured_entries_.push_back( + CapturedEntry(type, + base::TimeTicks::Now(), + source, + phase, + scoped_ptr(param_dict))); } uint32 CapturingNetLog::NextID() { @@ -88,7 +140,7 @@ CapturingBoundNetLog::CapturingBoundNetLog(size_t max_num_entries) CapturingBoundNetLog::~CapturingBoundNetLog() {} void CapturingBoundNetLog::GetEntries( - CapturingNetLog::EntryList* entry_list) const { + CapturingNetLog::CapturedEntryList* entry_list) const { capturing_net_log_.GetEntries(entry_list); } diff --git a/net/base/capturing_net_log.h b/net/base/capturing_net_log.h index 2482d0478884..fc9a5676bb56 100644 --- a/net/base/capturing_net_log.h +++ b/net/base/capturing_net_log.h @@ -6,40 +6,67 @@ #define NET_BASE_CAPTURING_NET_LOG_H_ #pragma once +#include #include #include "base/atomicops.h" #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" #include "base/synchronization/lock.h" #include "base/time.h" #include "net/base/net_export.h" #include "net/base/net_log.h" +namespace base { +class DictionaryValue; +} + namespace net { // CapturingNetLog is an implementation of NetLog that saves messages to a -// bounded buffer. +// bounded buffer. CapturingNetLogs should only be used in unit tests, never +// in production code. +// TODO(mmenke): Move CapturingNetLog to net_unittests project, once the CL +// to remove the use of it in the Jingle unit tests has landed. class NET_EXPORT CapturingNetLog : public NetLog { public: - struct NET_EXPORT Entry { - Entry(EventType type, - const base::TimeTicks& time, - Source source, - EventPhase phase, - EventParameters* extra_parameters); - ~Entry(); + struct NET_EXPORT_PRIVATE CapturedEntry { + CapturedEntry(EventType type, + const base::TimeTicks& time, + Source source, + EventPhase phase, + scoped_ptr params); + // Copy constructor needed to store in a std::vector because of the + // scoped_ptr. + CapturedEntry(const CapturedEntry& entry); + + ~CapturedEntry(); + + // Equality operator needed to store in a std::vector because of the + // scoped_ptr. + CapturedEntry& operator=(const CapturedEntry& entry); + + // Attempt to retrieve an value of the specified type with the given name + // from |params|. Returns true on success, false on failure. Does not + // modify |value| on failure. + bool GetStringValue(const std::string& name, std::string* value) const; + bool GetIntegerValue(const std::string& name, int* value) const; + + // Same as GetIntegerValue, but returns the error code associated with a + // log entry. + bool GetNetErrorCode(int* value) const; EventType type; base::TimeTicks time; Source source; EventPhase phase; - scoped_refptr extra_parameters; + scoped_ptr params; }; // Ordered set of entries that were logged. - typedef std::vector EntryList; + typedef std::vector CapturedEntryList; enum { kUnbounded = -1 }; @@ -49,7 +76,7 @@ class NET_EXPORT CapturingNetLog : public NetLog { virtual ~CapturingNetLog(); // Returns the list of all entries in the log. - void GetEntries(EntryList* entry_list) const; + void GetEntries(CapturedEntryList* entry_list) const; void Clear(); @@ -77,7 +104,7 @@ class NET_EXPORT CapturingNetLog : public NetLog { base::subtle::Atomic32 last_id_; size_t max_num_entries_; - EntryList entries_; + CapturedEntryList captured_entries_; NetLog::LogLevel log_level_; @@ -99,7 +126,7 @@ class NET_EXPORT_PRIVATE CapturingBoundNetLog { BoundNetLog bound() const { return net_log_; } // Fills |entry_list| with all entries in the log. - void GetEntries(CapturingNetLog::EntryList* entry_list) const; + void GetEntries(CapturingNetLog::CapturedEntryList* entry_list) const; void Clear(); diff --git a/net/base/net_log_event_type_list.h b/net/base/net_log_event_type_list.h index 9596cb9b7772..0b1ce8332cc6 100644 --- a/net/base/net_log_event_type_list.h +++ b/net/base/net_log_event_type_list.h @@ -1039,7 +1039,7 @@ EVENT_TYPE(SPDY_SESSION_SENT_WINDOW_UPDATE) // Sending of a SPDY CREDENTIAL frame (which sends a certificate or // certificate chain to the server). // { -// "slot" : , +// "slot" : , // "origin" : , // } EVENT_TYPE(SPDY_SESSION_SEND_CREDENTIAL) @@ -1065,7 +1065,7 @@ EVENT_TYPE(SPDY_SESSION_STALLED_ON_SEND_WINDOW) // Session is closing // { -// "status" : , +// "net_error" : , // "description": , // } EVENT_TYPE(SPDY_SESSION_CLOSE) diff --git a/net/base/net_log_unittest.cc b/net/base/net_log_unittest.cc index c9258a9599aa..6471b2dece5f 100644 --- a/net/base/net_log_unittest.cc +++ b/net/base/net_log_unittest.cc @@ -19,7 +19,7 @@ TEST(NetLog, ScopedNetLogEventTest) { scoped_ptr net_log_event( new ScopedNetLogEvent(net_log, NetLog::TYPE_REQUEST_ALIVE, NULL)); - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(1u, entries.size()); EXPECT_TRUE(LogContainsBeginEvent(entries, 0, NetLog::TYPE_REQUEST_ALIVE)); diff --git a/net/base/net_log_unittest.h b/net/base/net_log_unittest.h index 5e77275529b3..2a4b45817d50 100644 --- a/net/base/net_log_unittest.h +++ b/net/base/net_log_unittest.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -21,7 +21,7 @@ inline base::TimeTicks MakeTime(int t) { } inline ::testing::AssertionResult LogContainsEventHelper( - const CapturingNetLog::EntryList& entries, + const CapturingNetLog::CapturedEntryList& entries, int i, // Negative indices are reverse indices. const base::TimeTicks& expected_time, bool check_time, @@ -33,7 +33,7 @@ inline ::testing::AssertionResult LogContainsEventHelper( static_cast(i); if (j >= entries.size()) return ::testing::AssertionFailure() << j << " is out of bounds."; - const CapturingNetLog::Entry& entry = entries[j]; + const CapturingNetLog::CapturedEntry& entry = entries[j]; if (expected_event != entry.type) { return ::testing::AssertionFailure() << "Actual event: " << NetLog::EventTypeToString(entry.type) @@ -57,7 +57,7 @@ inline ::testing::AssertionResult LogContainsEventHelper( } inline ::testing::AssertionResult LogContainsEventAtTime( - const CapturingNetLog::EntryList& log, + const CapturingNetLog::CapturedEntryList& log, int i, // Negative indices are reverse indices. const base::TimeTicks& expected_time, NetLog::EventType expected_event, @@ -68,7 +68,7 @@ inline ::testing::AssertionResult LogContainsEventAtTime( // Version without timestamp. inline ::testing::AssertionResult LogContainsEvent( - const CapturingNetLog::EntryList& log, + const CapturingNetLog::CapturedEntryList& log, int i, // Negative indices are reverse indices. NetLog::EventType expected_event, NetLog::EventPhase expected_phase) { @@ -78,7 +78,7 @@ inline ::testing::AssertionResult LogContainsEvent( // Version for PHASE_BEGIN (and no timestamp). inline ::testing::AssertionResult LogContainsBeginEvent( - const CapturingNetLog::EntryList& log, + const CapturingNetLog::CapturedEntryList& log, int i, // Negative indices are reverse indices. NetLog::EventType expected_event) { return LogContainsEvent(log, i, expected_event, NetLog::PHASE_BEGIN); @@ -86,14 +86,14 @@ inline ::testing::AssertionResult LogContainsBeginEvent( // Version for PHASE_END (and no timestamp). inline ::testing::AssertionResult LogContainsEndEvent( - const CapturingNetLog::EntryList& log, + const CapturingNetLog::CapturedEntryList& log, int i, // Negative indices are reverse indices. NetLog::EventType expected_event) { return LogContainsEvent(log, i, expected_event, NetLog::PHASE_END); } inline ::testing::AssertionResult LogContainsEntryWithType( - const CapturingNetLog::EntryList& entries, + const CapturingNetLog::CapturedEntryList& entries, int i, // Negative indices are reverse indices. NetLog::EventType type) { // Negative indices are reverse indices. @@ -102,7 +102,7 @@ inline ::testing::AssertionResult LogContainsEntryWithType( static_cast(i); if (j >= entries.size()) return ::testing::AssertionFailure() << j << " is out of bounds."; - const CapturingNetLog::Entry& entry = entries[j]; + const CapturingNetLog::CapturedEntry& entry = entries[j]; if (entry.type != type) return ::testing::AssertionFailure() << "Type does not match."; return ::testing::AssertionSuccess(); @@ -113,13 +113,13 @@ inline ::testing::AssertionResult LogContainsEntryWithType( // as long as the first index where it is found is at least |min_index|. // Returns the position where the event was found. inline size_t ExpectLogContainsSomewhere( - const CapturingNetLog::EntryList& entries, + const CapturingNetLog::CapturedEntryList& entries, size_t min_index, NetLog::EventType expected_event, NetLog::EventPhase expected_phase) { size_t i = 0; for (; i < entries.size(); ++i) { - const CapturingNetLog::Entry& entry = entries[i]; + const CapturingNetLog::CapturedEntry& entry = entries[i]; if (entry.type == expected_event && entry.phase == expected_phase) break; @@ -133,13 +133,13 @@ inline size_t ExpectLogContainsSomewhere( // as long as one index where it is found is at least |min_index|. // Returns the first such position where the event was found. inline size_t ExpectLogContainsSomewhereAfter( - const CapturingNetLog::EntryList& entries, + const CapturingNetLog::CapturedEntryList& entries, size_t min_index, NetLog::EventType expected_event, NetLog::EventPhase expected_phase) { size_t i = min_index; for (; i < entries.size(); ++i) { - const CapturingNetLog::Entry& entry = entries[i]; + const CapturingNetLog::CapturedEntry& entry = entries[i]; if (entry.type == expected_event && entry.phase == expected_phase) break; diff --git a/net/http/http_auth_handler_unittest.cc b/net/http/http_auth_handler_unittest.cc index 79aa2bcbcfa1..ee0743796a2f 100644 --- a/net/http/http_auth_handler_unittest.cc +++ b/net/http/http_auth_handler_unittest.cc @@ -48,7 +48,7 @@ TEST(HttpAuthHandlerTest, NetLog) { if (async) test_callback.WaitForResult(); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; capturing_net_log.GetEntries(&entries); EXPECT_EQ(2u, entries.size()); diff --git a/net/http/http_cache_unittest.cc b/net/http/http_cache_unittest.cc index 08065f69529e..cd47a1ab5f13 100644 --- a/net/http/http_cache_unittest.cc +++ b/net/http/http_cache_unittest.cc @@ -436,7 +436,7 @@ TEST(HttpCache, SimpleGETNoDiskCache) { // Check that the NetLog was filled as expected. // (We attempted to both Open and Create entries, but both failed). - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(6u, entries.size()); @@ -579,7 +579,7 @@ TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit) { log.bound()); // Check that the NetLog was filled as expected. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(8u, entries.size()); @@ -710,7 +710,7 @@ TEST(HttpCache, SimpleGET_LoadBypassCache) { RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound()); // Check that the NetLog was filled as expected. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(8u, entries.size()); diff --git a/net/http/http_network_transaction_spdy2_unittest.cc b/net/http/http_network_transaction_spdy2_unittest.cc index 7ede3287b6b0..ddd5367709c0 100644 --- a/net/http/http_network_transaction_spdy2_unittest.cc +++ b/net/http/http_network_transaction_spdy2_unittest.cc @@ -13,8 +13,10 @@ #include "base/compiler_specific.h" #include "base/file_path.h" #include "base/file_util.h" +#include "base/json/json_writer.h" #include "base/memory/scoped_ptr.h" #include "base/metrics/histogram.h" +#include "base/string_util.h" #include "base/test/test_file_util.h" #include "base/utf_string_conversions.h" #include "net/base/auth.h" @@ -111,6 +113,21 @@ int GetIdleSocketCountInSSLSocketPool(net::HttpNetworkSession* session) { net::HttpNetworkSession::NORMAL_SOCKET_POOL)->IdleSocketCount(); } +// Takes in a Value created from a NetLogHttpResponseParameter, and returns +// a JSONified list of headers as a single string. Uses single quotes instead +// of double quotes for easier comparison. Returns false on failure. +bool GetHeaders(DictionaryValue* params, std::string* headers) { + if (!params) + return false; + ListValue* header_list; + if (!params->GetList("headers", &header_list)) + return false; + std::string double_quote_headers; + base::JSONWriter::Write(header_list, &double_quote_headers); + ReplaceChars(double_quote_headers, "\"", "'", headers); + return true; +} + } // namespace namespace net { @@ -242,7 +259,7 @@ class HttpNetworkTransactionSpdy2Test : public PlatformTest { rv = ReadTransaction(trans.get(), &out.response_data); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS, @@ -252,13 +269,13 @@ class HttpNetworkTransactionSpdy2Test : public PlatformTest { NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS, NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogHttpRequestParameter* request_params = - static_cast(entry.extra_parameters.get()); - EXPECT_EQ("GET / HTTP/1.1\r\n", request_params->GetLine()); - EXPECT_EQ("Host: www.google.com\r\n" - "Connection: keep-alive\r\n\r\n", - request_params->GetHeaders().ToString()); + std::string line; + EXPECT_TRUE(entries[pos].GetStringValue("line", &line)); + EXPECT_EQ("GET / HTTP/1.1\r\n", line); + + std::string headers; + EXPECT_TRUE(GetHeaders(entries[pos].params.get(), &headers)); + EXPECT_EQ("['Host: www.google.com','Connection: keep-alive']", headers); return out; } @@ -1777,7 +1794,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyNoKeepAlive) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -1878,7 +1895,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyKeepAlive) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -2072,7 +2089,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, rv = callback1.WaitForResult(); EXPECT_EQ(ERR_UNEXPECTED_PROXY_AUTH, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -4987,7 +5004,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -8878,7 +8895,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGet) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -8942,7 +8959,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGetHangup) { rv = callback1.WaitForResult(); EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, diff --git a/net/http/http_network_transaction_spdy3_unittest.cc b/net/http/http_network_transaction_spdy3_unittest.cc index 992a9d2537de..4465a1ced039 100644 --- a/net/http/http_network_transaction_spdy3_unittest.cc +++ b/net/http/http_network_transaction_spdy3_unittest.cc @@ -13,8 +13,10 @@ #include "base/compiler_specific.h" #include "base/file_path.h" #include "base/file_util.h" +#include "base/json/json_writer.h" #include "base/memory/scoped_ptr.h" #include "base/metrics/histogram.h" +#include "base/string_util.h" #include "base/test/test_file_util.h" #include "base/utf_string_conversions.h" #include "net/base/auth.h" @@ -166,6 +168,21 @@ HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { return new HttpNetworkSession(params); } +// Takes in a Value created from a NetLogHttpResponseParameter, and returns +// a JSONified list of headers as a single string. Uses single quotes instead +// of double quotes for easier comparison. Returns false on failure. +bool GetHeaders(DictionaryValue* params, std::string* headers) { + if (!params) + return false; + ListValue* header_list; + if (!params->GetList("headers", &header_list)) + return false; + std::string double_quote_headers; + base::JSONWriter::Write(header_list, &double_quote_headers); + ReplaceChars(double_quote_headers, "\"", "'", headers); + return true; +} + } // namespace class HttpNetworkTransactionSpdy3Test : public PlatformTest { @@ -242,7 +259,7 @@ class HttpNetworkTransactionSpdy3Test : public PlatformTest { rv = ReadTransaction(trans.get(), &out.response_data); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST_HEADERS, @@ -252,13 +269,13 @@ class HttpNetworkTransactionSpdy3Test : public PlatformTest { NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS, NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogHttpRequestParameter* request_params = - static_cast(entry.extra_parameters.get()); - EXPECT_EQ("GET / HTTP/1.1\r\n", request_params->GetLine()); - EXPECT_EQ("Host: www.google.com\r\n" - "Connection: keep-alive\r\n\r\n", - request_params->GetHeaders().ToString()); + std::string line; + EXPECT_TRUE(entries[pos].GetStringValue("line", &line)); + EXPECT_EQ("GET / HTTP/1.1\r\n", line); + + std::string headers; + EXPECT_TRUE(GetHeaders(entries[pos].params.get(), &headers)); + EXPECT_EQ("['Host: www.google.com','Connection: keep-alive']", headers); return out; } @@ -1777,7 +1794,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, BasicAuthProxyNoKeepAlive) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -1878,7 +1895,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, BasicAuthProxyKeepAlive) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -2072,7 +2089,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, rv = callback1.WaitForResult(); EXPECT_EQ(ERR_UNEXPECTED_PROXY_AUTH, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -4987,7 +5004,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, BasicAuthSpdyProxy) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -8877,7 +8894,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, ProxyTunnelGet) { rv = callback1.WaitForResult(); EXPECT_EQ(OK, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, @@ -8941,7 +8958,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, ProxyTunnelGetHangup) { rv = callback1.WaitForResult(); EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t pos = ExpectLogContainsSomewhere( entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, diff --git a/net/proxy/multi_threaded_proxy_resolver_unittest.cc b/net/proxy/multi_threaded_proxy_resolver_unittest.cc index a1a4ad637c6c..d5741782d6b0 100644 --- a/net/proxy/multi_threaded_proxy_resolver_unittest.cc +++ b/net/proxy/multi_threaded_proxy_resolver_unittest.cc @@ -291,7 +291,7 @@ TEST(MultiThreadedProxyResolverTest, SingleThread_Basic) { // on completion, this should have been copied into |log0|. // We also have 1 log entry that was emitted by the // MultiThreadedProxyResolver. - net::CapturingNetLog::EntryList entries0; + net::CapturingNetLog::CapturedEntryList entries0; log0.GetEntries(&entries0); ASSERT_EQ(2u, entries0.size()); @@ -402,7 +402,7 @@ TEST(MultiThreadedProxyResolverTest, EXPECT_EQ(0, callback0.WaitForResult()); EXPECT_EQ("PROXY request0:80", results0.ToPacString()); - net::CapturingNetLog::EntryList entries0; + net::CapturingNetLog::CapturedEntryList entries0; log0.GetEntries(&entries0); ASSERT_EQ(2u, entries0.size()); @@ -413,7 +413,7 @@ TEST(MultiThreadedProxyResolverTest, EXPECT_EQ(1, callback1.WaitForResult()); EXPECT_EQ("PROXY request1:80", results1.ToPacString()); - net::CapturingNetLog::EntryList entries1; + net::CapturingNetLog::CapturedEntryList entries1; log1.GetEntries(&entries1); ASSERT_EQ(4u, entries1.size()); @@ -428,7 +428,7 @@ TEST(MultiThreadedProxyResolverTest, EXPECT_EQ(2, callback2.WaitForResult()); EXPECT_EQ("PROXY request2:80", results2.ToPacString()); - net::CapturingNetLog::EntryList entries2; + net::CapturingNetLog::CapturedEntryList entries2; log2.GetEntries(&entries2); ASSERT_EQ(4u, entries2.size()); diff --git a/net/proxy/proxy_resolver_js_bindings_unittest.cc b/net/proxy/proxy_resolver_js_bindings_unittest.cc index 8122ef09d347..0b1e2dc68497 100644 --- a/net/proxy/proxy_resolver_js_bindings_unittest.cc +++ b/net/proxy/proxy_resolver_js_bindings_unittest.cc @@ -281,7 +281,7 @@ TEST(ProxyResolverJSBindingsTest, NetLog) { bindings->set_current_request_context(&context); std::string ip_address; - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); ASSERT_EQ(0u, entries.size()); @@ -325,7 +325,7 @@ TEST(ProxyResolverJSBindingsTest, NetLog) { entries, 7, NetLog::TYPE_PAC_JAVASCRIPT_DNS_RESOLVE_EX)); // Nothing has been emitted globally yet. - net::CapturingNetLog::EntryList global_log_entries; + net::CapturingNetLog::CapturedEntryList global_log_entries; global_log.GetEntries(&global_log_entries); EXPECT_EQ(0u, global_log_entries.size()); diff --git a/net/proxy/proxy_resolver_v8_unittest.cc b/net/proxy/proxy_resolver_v8_unittest.cc index 6c080a72a743..f1621a12dd1a 100644 --- a/net/proxy/proxy_resolver_v8_unittest.cc +++ b/net/proxy/proxy_resolver_v8_unittest.cc @@ -140,7 +140,7 @@ TEST(ProxyResolverV8Test, Direct) { EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); // No bindings were called, so no log entries. EXPECT_EQ(0u, entries.size()); diff --git a/net/proxy/proxy_script_decider_unittest.cc b/net/proxy/proxy_script_decider_unittest.cc index cece80585e53..a068df1548b6 100644 --- a/net/proxy/proxy_script_decider_unittest.cc +++ b/net/proxy/proxy_script_decider_unittest.cc @@ -134,7 +134,7 @@ TEST(ProxyScriptDeciderTest, CustomPacSucceeds) { EXPECT_EQ(rule.text(), decider.script_data()->utf16()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(4u, entries.size()); @@ -171,7 +171,7 @@ TEST(ProxyScriptDeciderTest, CustomPacFails1) { EXPECT_EQ(NULL, decider.script_data()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(4u, entries.size()); @@ -297,7 +297,7 @@ TEST(ProxyScriptDeciderTest, AutodetectFailCustomSuccess2) { // Check the NetLog was filled correctly. // (Note that various states are repeated since both WPAD and custom // PAC scripts are tried). - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(10u, entries.size()); @@ -397,7 +397,7 @@ TEST(ProxyScriptDeciderTest, CustomPacFails1_WithPositiveDelay) { EXPECT_EQ(NULL, decider.script_data()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(6u, entries.size()); @@ -437,7 +437,7 @@ TEST(ProxyScriptDeciderTest, CustomPacFails1_WithNegativeDelay) { EXPECT_EQ(NULL, decider.script_data()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(4u, entries.size()); diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc index 6271809c7745..146fec21c510 100644 --- a/net/proxy/proxy_service_unittest.cc +++ b/net/proxy/proxy_service_unittest.cc @@ -171,7 +171,7 @@ TEST_F(ProxyServiceTest, Direct) { EXPECT_TRUE(info.is_direct()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(3u, entries.size()); @@ -218,7 +218,7 @@ TEST_F(ProxyServiceTest, PAC) { EXPECT_EQ("foopy:80", info.proxy_server().ToURI()); // Check the NetLog was filled correctly. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(5u, entries.size()); @@ -1464,7 +1464,7 @@ TEST_F(ProxyServiceTest, CancelWhilePACFetching) { EXPECT_FALSE(callback1.have_result()); // Cancelled. EXPECT_FALSE(callback2.have_result()); // Cancelled. - CapturingNetLog::EntryList entries1; + CapturingNetLog::CapturedEntryList entries1; log1.GetEntries(&entries1); // Check the NetLog for request 1 (which was cancelled) got filled properly. @@ -1987,7 +1987,7 @@ TEST_F(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { // Check that the expected events were output to the log stream. In particular // PROXY_CONFIG_CHANGED should have only been emitted once (for the initial // setup), and NOT a second time when the IP address changed. - CapturingNetLog::EntryList entries; + CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsEntryWithType(entries, 0, diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc index 078735e506a2..eec553f57604 100644 --- a/net/socket/client_socket_pool_base_unittest.cc +++ b/net/socket/client_socket_pool_base_unittest.cc @@ -781,7 +781,7 @@ TEST_F(ClientSocketPoolBaseTest, ConnectJob_TimedOut) { base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); EXPECT_EQ(ERR_TIMED_OUT, delegate.WaitForResult()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(6u, entries.size()); @@ -819,7 +819,7 @@ TEST_F(ClientSocketPoolBaseTest, BasicSynchronous) { EXPECT_TRUE(handle.socket()); handle.Reset(); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(4u, entries.size()); @@ -859,7 +859,7 @@ TEST_F(ClientSocketPoolBaseTest, InitConnectionFailure) { EXPECT_FALSE(handle.is_ssl_error()); EXPECT_TRUE(handle.ssl_error_response_info().headers.get() == NULL); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(3u, entries.size()); @@ -1683,7 +1683,7 @@ TEST_F(ClientSocketPoolBaseTest, BasicAsynchronous) { EXPECT_TRUE(handle.socket()); handle.Reset(); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(4u, entries.size()); @@ -1723,7 +1723,7 @@ TEST_F(ClientSocketPoolBaseTest, EXPECT_FALSE(handle.is_ssl_error()); EXPECT_TRUE(handle.ssl_error_response_info().headers.get() == NULL); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_EQ(3u, entries.size()); @@ -2055,7 +2055,7 @@ TEST_F(ClientSocketPoolBaseTest, DisableCleanupTimerReuse) { EXPECT_EQ(0, pool_->IdleSocketCountInGroup("a")); EXPECT_EQ(1, pool_->NumActiveSocketsInGroup("a")); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsEntryWithType( entries, 1, NetLog::TYPE_SOCKET_POOL_REUSED_AN_EXISTING_SOCKET)); @@ -2137,7 +2137,7 @@ TEST_F(ClientSocketPoolBaseTest, DisableCleanupTimerNoReuse) { EXPECT_EQ(0, pool_->IdleSocketCountInGroup("a")); EXPECT_EQ(1, pool_->NumActiveSocketsInGroup("a")); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_FALSE(LogContainsEntryWithType( entries, 1, NetLog::TYPE_SOCKET_POOL_REUSED_AN_EXISTING_SOCKET)); @@ -2209,7 +2209,7 @@ TEST_F(ClientSocketPoolBaseTest, CleanupTimedOutIdleSockets) { EXPECT_EQ(OK, rv); EXPECT_TRUE(handle.is_reused()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsEntryWithType( entries, 1, NetLog::TYPE_SOCKET_POOL_REUSED_AN_EXISTING_SOCKET)); diff --git a/net/socket/socks5_client_socket_unittest.cc b/net/socket/socks5_client_socket_unittest.cc index b5fce5052b77..37daf19051ba 100644 --- a/net/socket/socks5_client_socket_unittest.cc +++ b/net/socket/socks5_client_socket_unittest.cc @@ -136,7 +136,7 @@ TEST_F(SOCKS5ClientSocketTest, CompleteHandshake) { EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_FALSE(user_sock_->IsConnected()); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, NetLog::TYPE_SOCKS5_CONNECT)); @@ -258,7 +258,7 @@ TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, NetLog::TYPE_SOCKS5_CONNECT)); @@ -289,7 +289,7 @@ TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, NetLog::TYPE_SOCKS5_CONNECT)); @@ -318,7 +318,7 @@ TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { hostname, 80, &net_log_)); int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, NetLog::TYPE_SOCKS5_CONNECT)); @@ -349,7 +349,7 @@ TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { hostname, 80, &net_log_)); int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, NetLog::TYPE_SOCKS5_CONNECT)); diff --git a/net/socket/socks_client_socket_unittest.cc b/net/socket/socks_client_socket_unittest.cc index 559b373879c6..6a42faa6b5f7 100644 --- a/net/socket/socks_client_socket_unittest.cc +++ b/net/socket/socks_client_socket_unittest.cc @@ -147,7 +147,7 @@ TEST_F(SOCKSClientSocketTest, CompleteHandshake) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE( LogContainsBeginEvent(entries, 0, NetLog::TYPE_SOCKS_CONNECT)); @@ -217,7 +217,7 @@ TEST_F(SOCKSClientSocketTest, HandshakeFailures) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsBeginEvent( entries, 0, NetLog::TYPE_SOCKS_CONNECT)); @@ -253,7 +253,7 @@ TEST_F(SOCKSClientSocketTest, PartialServerReads) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsBeginEvent( entries, 0, NetLog::TYPE_SOCKS_CONNECT)); @@ -291,7 +291,7 @@ TEST_F(SOCKSClientSocketTest, PartialClientWrites) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsBeginEvent( entries, 0, NetLog::TYPE_SOCKS_CONNECT)); @@ -323,7 +323,7 @@ TEST_F(SOCKSClientSocketTest, FailedSocketRead) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsBeginEvent( entries, 0, NetLog::TYPE_SOCKS_CONNECT)); @@ -353,7 +353,7 @@ TEST_F(SOCKSClientSocketTest, FailedDNS) { int rv = user_sock_->Connect(callback_.callback()); EXPECT_EQ(ERR_IO_PENDING, rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(LogContainsBeginEvent( entries, 0, NetLog::TYPE_SOCKS_CONNECT)); diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc index 10f33ec52996..d55dc78ce7f0 100644 --- a/net/socket/ssl_client_socket_unittest.cc +++ b/net/socket/ssl_client_socket_unittest.cc @@ -63,7 +63,7 @@ class SSLClientSocketTest : public PlatformTest { // timeout. This means that an SSL connect end event may appear as a socket // write. static bool LogContainsSSLConnectEndEvent( - const net::CapturingNetLog::EntryList& log, int i) { + const net::CapturingNetLog::CapturedEntryList& log, int i) { return net::LogContainsEndEvent(log, i, net::NetLog::TYPE_SSL_CONNECT) || net::LogContainsEvent(log, i, net::NetLog::TYPE_SOCKET_BYTES_SENT, net::NetLog::PHASE_NONE); @@ -95,7 +95,7 @@ TEST_F(SSLClientSocketTest, Connect) { rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -138,7 +138,7 @@ TEST_F(SSLClientSocketTest, ConnectExpired) { rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -183,7 +183,7 @@ TEST_F(SSLClientSocketTest, ConnectMismatched) { rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -228,7 +228,7 @@ TEST_F(SSLClientSocketTest, ConnectClientAuthCertRequested) { rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -294,7 +294,7 @@ TEST_F(SSLClientSocketTest, ConnectClientAuthSendNullCert) { // TODO(davidben): Add a test which requires them and verify the error. rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -581,7 +581,7 @@ TEST_F(SSLClientSocketTest, Read_FullLogging) { rv = callback.WaitForResult(); EXPECT_EQ(static_cast(arraysize(request_text) - 1), rv); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); size_t last_index = net::ExpectLogContainsSomewhereAfter( entries, 5, net::NetLog::TYPE_SSL_SOCKET_BYTES_SENT, @@ -696,7 +696,7 @@ TEST_F(SSLClientSocketTest, CipherSuiteDisables) { EXPECT_FALSE(sock->IsConnected()); rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); @@ -892,7 +892,7 @@ TEST_F(SSLClientSocketTest, VerifyReturnChainProperlyOrdered) { EXPECT_FALSE(sock->IsConnected()); rv = sock->Connect(callback.callback()); - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_TRUE(net::LogContainsBeginEvent( entries, 5, net::NetLog::TYPE_SSL_CONNECT)); diff --git a/net/socket/transport_client_socket_unittest.cc b/net/socket/transport_client_socket_unittest.cc index e227fecf99c2..424d5879c757 100644 --- a/net/socket/transport_client_socket_unittest.cc +++ b/net/socket/transport_client_socket_unittest.cc @@ -185,7 +185,7 @@ TEST_P(TransportClientSocketTest, Connect) { int rv = sock_->Connect(callback.callback()); - net::CapturingNetLog::EntryList net_log_entries; + net::CapturingNetLog::CapturedEntryList net_log_entries; net_log_.GetEntries(&net_log_entries); EXPECT_TRUE(net::LogContainsBeginEvent( net_log_entries, 0, net::NetLog::TYPE_SOCKET_ALIVE)); diff --git a/net/spdy/spdy_network_transaction_spdy2_unittest.cc b/net/spdy/spdy_network_transaction_spdy2_unittest.cc index 85c22eadae1a..9395631745e9 100644 --- a/net/spdy/spdy_network_transaction_spdy2_unittest.cc +++ b/net/spdy/spdy_network_transaction_spdy2_unittest.cc @@ -3558,7 +3558,7 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, NetLog) { // This test is intentionally non-specific about the exact ordering of the // log; instead we just check to make sure that certain events exist, and that // they are in the right order. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -3587,25 +3587,25 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, NetLog) { entries, 0, net::NetLog::TYPE_SPDY_SESSION_SYN_STREAM, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdySynParameter* request_params = - static_cast(entry.extra_parameters.get()); - SpdyHeaderBlock* headers = - request_params->GetHeaders().get(); - - SpdyHeaderBlock expected; - expected["host"] = "www.google.com"; - expected["url"] = "/"; - expected["scheme"] = "http"; - expected["version"] = "HTTP/1.1"; - expected["method"] = "GET"; - expected["user-agent"] = "Chrome"; - EXPECT_EQ(expected.size(), headers->size()); - SpdyHeaderBlock::const_iterator end = expected.end(); - for (SpdyHeaderBlock::const_iterator it = expected.begin(); - it != end; - ++it) { - EXPECT_EQ(it->second, (*headers)[it->first]); + + ListValue* header_list; + ASSERT_TRUE(entries[pos].params.get()); + ASSERT_TRUE(entries[pos].params->GetList("headers", &header_list)); + + std::vector expected; + expected.push_back("host: www.google.com"); + expected.push_back("url: /"); + expected.push_back("scheme: http"); + expected.push_back("version: HTTP/1.1"); + expected.push_back("method: GET"); + expected.push_back("user-agent: Chrome"); + EXPECT_EQ(expected.size(), header_list->GetSize()); + for (std::vector::const_iterator it = expected.begin(); + it != expected.end(); + ++it) { + base::StringValue header(*it); + EXPECT_NE(header_list->end(), header_list->Find(header)) << + "Header not found: " << *it; } } diff --git a/net/spdy/spdy_network_transaction_spdy3_unittest.cc b/net/spdy/spdy_network_transaction_spdy3_unittest.cc index 72c384337e0b..8fc1997cd2ce 100644 --- a/net/spdy/spdy_network_transaction_spdy3_unittest.cc +++ b/net/spdy/spdy_network_transaction_spdy3_unittest.cc @@ -4133,7 +4133,7 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, NetLog) { // This test is intentionally non-specific about the exact ordering of the // log; instead we just check to make sure that certain events exist, and that // they are in the right order. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -4162,25 +4162,25 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, NetLog) { entries, 0, net::NetLog::TYPE_SPDY_SESSION_SYN_STREAM, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdySynParameter* request_params = - static_cast(entry.extra_parameters.get()); - SpdyHeaderBlock* headers = - request_params->GetHeaders().get(); - - SpdyHeaderBlock expected; - expected[":host"] = "www.google.com"; - expected[":path"] = "/"; - expected[":scheme"] = "http"; - expected[":version"] = "HTTP/1.1"; - expected[":method"] = "GET"; - expected["user-agent"] = "Chrome"; - EXPECT_EQ(expected.size(), headers->size()); - SpdyHeaderBlock::const_iterator end = expected.end(); - for (SpdyHeaderBlock::const_iterator it = expected.begin(); - it != end; - ++it) { - EXPECT_EQ(it->second, (*headers)[it->first]); + + ListValue* header_list; + ASSERT_TRUE(entries[pos].params.get()); + ASSERT_TRUE(entries[pos].params->GetList("headers", &header_list)); + + std::vector expected; + expected.push_back(":host: www.google.com"); + expected.push_back(":path: /"); + expected.push_back(":scheme: http"); + expected.push_back(":version: HTTP/1.1"); + expected.push_back(":method: GET"); + expected.push_back("user-agent: Chrome"); + EXPECT_EQ(expected.size(), header_list->GetSize()); + for (std::vector::const_iterator it = expected.begin(); + it != expected.end(); + ++it) { + base::StringValue header(*it); + EXPECT_NE(header_list->end(), header_list->Find(header)) << + "Header not found: " << *it; } } diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 050d35beae92..a284eaf861e6 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -84,15 +84,15 @@ Value* NetLogSpdyCredentialParameter::ToValue() const { NetLogSpdyCredentialParameter::~NetLogSpdyCredentialParameter() {} NetLogSpdySessionCloseParameter::NetLogSpdySessionCloseParameter( - int status, + int net_error, const std::string& description) - : status_(status), + : net_error_(net_error), description_(description) { } Value* NetLogSpdySessionCloseParameter::ToValue() const { DictionaryValue* dict = new DictionaryValue(); - dict->SetInteger("status", status_); + dict->SetInteger("net_error", net_error_); dict->SetString("description", description_); return dict; } diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h index 2b55528d6fd3..ce19a4fdb85a 100644 --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h @@ -668,10 +668,6 @@ class NetLogSpdySynParameter : public NetLog::EventParameters { SpdyStreamId id, SpdyStreamId associated_stream); - const linked_ptr& GetHeaders() const { - return headers_; - } - virtual base::Value* ToValue() const OVERRIDE; protected: @@ -704,17 +700,16 @@ class NetLogSpdyCredentialParameter : public NetLog::EventParameters { class NetLogSpdySessionCloseParameter : public NetLog::EventParameters { public: - NetLogSpdySessionCloseParameter(int status, + NetLogSpdySessionCloseParameter(int net_error, const std::string& description); - int status() const { return status_; } virtual base::Value* ToValue() const OVERRIDE; protected: virtual ~NetLogSpdySessionCloseParameter(); private: - const int status_; + const int net_error_; const std::string description_; DISALLOW_COPY_AND_ASSIGN(NetLogSpdySessionCloseParameter); diff --git a/net/spdy/spdy_session_spdy2_unittest.cc b/net/spdy/spdy_session_spdy2_unittest.cc index 311da640687d..450dba4b8696 100644 --- a/net/spdy/spdy_session_spdy2_unittest.cc +++ b/net/spdy/spdy_session_spdy2_unittest.cc @@ -1019,7 +1019,7 @@ TEST_F(SpdySessionSpdy2Test, CloseSessionOnError) { EXPECT_FALSE(spdy_session_pool->HasSession(pair)); // Check that the NetLog was filled reasonably. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -1029,11 +1029,10 @@ TEST_F(SpdySessionSpdy2Test, CloseSessionOnError) { net::NetLog::TYPE_SPDY_SESSION_CLOSE, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdySessionCloseParameter* request_params = - static_cast( - entry.extra_parameters.get()); - EXPECT_EQ(ERR_CONNECTION_CLOSED, request_params->status()); + CapturingNetLog::CapturedEntry entry = entries[pos]; + int error_code = 0; + ASSERT_TRUE(entry.GetNetErrorCode(&error_code)); + EXPECT_EQ(ERR_CONNECTION_CLOSED, error_code); } TEST_F(SpdySessionSpdy2Test, OutOfOrderSynStreams) { diff --git a/net/spdy/spdy_session_spdy3_unittest.cc b/net/spdy/spdy_session_spdy3_unittest.cc index 545e36b7c4b1..699c59cc6566 100644 --- a/net/spdy/spdy_session_spdy3_unittest.cc +++ b/net/spdy/spdy_session_spdy3_unittest.cc @@ -1087,7 +1087,7 @@ TEST_F(SpdySessionSpdy3Test, CloseSessionOnError) { EXPECT_FALSE(spdy_session_pool->HasSession(pair)); // Check that the NetLog was filled reasonably. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -1097,11 +1097,10 @@ TEST_F(SpdySessionSpdy3Test, CloseSessionOnError) { net::NetLog::TYPE_SPDY_SESSION_CLOSE, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdySessionCloseParameter* request_params = - static_cast( - entry.extra_parameters.get()); - EXPECT_EQ(ERR_CONNECTION_CLOSED, request_params->status()); + CapturingNetLog::CapturedEntry entry = entries[pos]; + int error_code = 0; + ASSERT_TRUE(entry.GetNetErrorCode(&error_code)); + EXPECT_EQ(ERR_CONNECTION_CLOSED, error_code); } TEST_F(SpdySessionSpdy3Test, UpdateStreamsSendWindowSize) { diff --git a/net/spdy/spdy_stream_spdy2_unittest.cc b/net/spdy/spdy_stream_spdy2_unittest.cc index cd03897695cb..1ca21d480f50 100644 --- a/net/spdy/spdy_stream_spdy2_unittest.cc +++ b/net/spdy/spdy_stream_spdy2_unittest.cc @@ -416,7 +416,7 @@ TEST_F(SpdyStreamSpdy2Test, StreamError) { EXPECT_TRUE(delegate->closed()); // Check that the NetLog was filled reasonably. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -426,11 +426,9 @@ TEST_F(SpdyStreamSpdy2Test, StreamError) { net::NetLog::TYPE_SPDY_STREAM_ERROR, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdyStreamErrorParameter* request_params = - static_cast( - entry.extra_parameters.get()); - EXPECT_EQ(stream_id, request_params->stream_id()); + int stream_id2; + ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id2)); + EXPECT_EQ(static_cast(stream_id), stream_id2); } } // namespace net diff --git a/net/spdy/spdy_stream_spdy3_unittest.cc b/net/spdy/spdy_stream_spdy3_unittest.cc index 5d0188934c32..1c672711bb0f 100644 --- a/net/spdy/spdy_stream_spdy3_unittest.cc +++ b/net/spdy/spdy_stream_spdy3_unittest.cc @@ -421,7 +421,7 @@ TEST_F(SpdyStreamSpdy3Test, StreamError) { EXPECT_TRUE(delegate->closed()); // Check that the NetLog was filled reasonably. - net::CapturingNetLog::EntryList entries; + net::CapturingNetLog::CapturedEntryList entries; log.GetEntries(&entries); EXPECT_LT(0u, entries.size()); @@ -431,11 +431,9 @@ TEST_F(SpdyStreamSpdy3Test, StreamError) { net::NetLog::TYPE_SPDY_STREAM_ERROR, net::NetLog::PHASE_NONE); - CapturingNetLog::Entry entry = entries[pos]; - NetLogSpdyStreamErrorParameter* request_params = - static_cast( - entry.extra_parameters.get()); - EXPECT_EQ(stream_id, request_params->stream_id()); + int stream_id2; + ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id2)); + EXPECT_EQ(static_cast(stream_id), stream_id2); } } // namespace net diff --git a/net/udp/udp_socket_unittest.cc b/net/udp/udp_socket_unittest.cc index ea8791ad1d7f..b0af0bf54b01 100644 --- a/net/udp/udp_socket_unittest.cc +++ b/net/udp/udp_socket_unittest.cc @@ -171,7 +171,7 @@ TEST_F(UDPSocketTest, Connect) { client.reset(); // Check the server's log. - CapturingNetLog::EntryList server_entries; + CapturingNetLog::CapturedEntryList server_entries; server_log.GetEntries(&server_entries); EXPECT_EQ(4u, server_entries.size()); EXPECT_TRUE(LogContainsBeginEvent( @@ -184,7 +184,7 @@ TEST_F(UDPSocketTest, Connect) { server_entries, 3, NetLog::TYPE_SOCKET_ALIVE)); // Check the client's log. - CapturingNetLog::EntryList client_entries; + CapturingNetLog::CapturedEntryList client_entries; client_log.GetEntries(&client_entries); EXPECT_EQ(6u, client_entries.size()); EXPECT_TRUE(LogContainsBeginEvent(