summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-14 21:52:36 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-14 21:52:36 +0000
commit26128342336043f70169489df27729ea97301972 (patch)
tree3c5cf414de217bbf8d6eac0f4e1ea1a45499663c
parent44603d54d54c8065abab89285404541f7288890e (diff)
downloadchromium_src-26128342336043f70169489df27729ea97301972.zip
chromium_src-26128342336043f70169489df27729ea97301972.tar.gz
chromium_src-26128342336043f70169489df27729ea97301972.tar.bz2
Add the URLRequest's method and load flags to the NetLog.
BUG=37421 Review URL: http://codereview.chromium.org/2108003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47321 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/net/passive_log_collector.cc3
-rw-r--r--chrome/browser/net/passive_log_collector_unittest.cc23
-rw-r--r--net/base/net_log.h1
-rw-r--r--net/base/net_log_event_type_list.h16
-rw-r--r--net/net.gyp2
-rw-r--r--net/url_request/url_request.cc4
-rw-r--r--net/url_request/url_request_netlog_params.cc20
-rw-r--r--net/url_request/url_request_netlog_params.h32
8 files changed, 80 insertions, 21 deletions
diff --git a/chrome/browser/net/passive_log_collector.cc b/chrome/browser/net/passive_log_collector.cc
index 6bee50f..1192965 100644
--- a/chrome/browser/net/passive_log_collector.cc
+++ b/chrome/browser/net/passive_log_collector.cc
@@ -9,6 +9,7 @@
#include "base/string_util.h"
#include "base/format_macros.h"
#include "chrome/browser/chrome_thread.h"
+#include "net/url_request/url_request_netlog_params.h"
namespace {
@@ -149,6 +150,8 @@ std::string PassiveLogCollector::RequestInfo::GetURL() const {
if (entry.phase == net::NetLog::PHASE_BEGIN && entry.params) {
switch (entry.type) {
case net::NetLog::TYPE_URL_REQUEST_START:
+ return static_cast<URLRequestStartEventParameters*>(
+ entry.params.get())->url().possibly_invalid_spec();
case net::NetLog::TYPE_SOCKET_STREAM_CONNECT:
return static_cast<net::NetLogStringParameter*>(
entry.params.get())->value();
diff --git a/chrome/browser/net/passive_log_collector_unittest.cc b/chrome/browser/net/passive_log_collector_unittest.cc
index 2839ded..e7e2f2e 100644
--- a/chrome/browser/net/passive_log_collector_unittest.cc
+++ b/chrome/browser/net/passive_log_collector_unittest.cc
@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/format_macros.h"
#include "base/string_util.h"
+#include "net/url_request/url_request_netlog_params.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
@@ -25,7 +26,7 @@ PassiveLogCollector::Entry MakeStartLogEntryWithURL(int source_id,
base::TimeTicks(),
NetLog::Source(kSourceType, source_id),
NetLog::PHASE_BEGIN,
- new net::NetLogStringParameter("url", url));
+ new URLRequestStartEventParameters(GURL(url), "GET", 0));
}
PassiveLogCollector::Entry MakeStartLogEntry(int source_id) {
@@ -49,8 +50,8 @@ void AddStartURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
NetLog::PHASE_BEGIN, NULL);
collector->OnAddEntry(NetLog::TYPE_URL_REQUEST_START, base::TimeTicks(),
NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
- NetLog::PHASE_BEGIN, new net::NetLogStringParameter(
- "url", StringPrintf("http://req%d", id)));
+ NetLog::PHASE_BEGIN, new URLRequestStartEventParameters(
+ GURL(StringPrintf("http://req%d", id)), "GET", 0));
}
void AddEndURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
@@ -82,11 +83,11 @@ TEST(RequestTrackerTest, BasicBounded) {
RequestInfoList live_reqs = tracker.GetLiveRequests();
ASSERT_EQ(5u, live_reqs.size());
- EXPECT_EQ("http://req1", live_reqs[0].GetURL());
- EXPECT_EQ("http://req2", live_reqs[1].GetURL());
- EXPECT_EQ("http://req3", live_reqs[2].GetURL());
- EXPECT_EQ("http://req4", live_reqs[3].GetURL());
- EXPECT_EQ("http://req5", live_reqs[4].GetURL());
+ EXPECT_EQ("http://req1/", live_reqs[0].GetURL());
+ EXPECT_EQ("http://req2/", live_reqs[1].GetURL());
+ EXPECT_EQ("http://req3/", live_reqs[2].GetURL());
+ EXPECT_EQ("http://req4/", live_reqs[3].GetURL());
+ EXPECT_EQ("http://req5/", live_reqs[4].GetURL());
tracker.OnAddEntry(MakeEndLogEntry(1));
tracker.OnAddEntry(MakeEndLogEntry(5));
@@ -97,8 +98,8 @@ TEST(RequestTrackerTest, BasicBounded) {
live_reqs = tracker.GetLiveRequests();
ASSERT_EQ(2u, live_reqs.size());
- EXPECT_EQ("http://req2", live_reqs[0].GetURL());
- EXPECT_EQ("http://req4", live_reqs[1].GetURL());
+ EXPECT_EQ("http://req2/", live_reqs[0].GetURL());
+ EXPECT_EQ("http://req4/", live_reqs[1].GetURL());
}
TEST(RequestTrackerTest, GraveyardBounded) {
@@ -120,7 +121,7 @@ TEST(RequestTrackerTest, GraveyardBounded) {
for (size_t i = 0; i < RequestTracker::kMaxGraveyardSize; ++i) {
size_t req_number = i + RequestTracker::kMaxGraveyardSize;
- std::string url = StringPrintf("http://req%" PRIuS, req_number);
+ std::string url = StringPrintf("http://req%" PRIuS "/", req_number);
EXPECT_EQ(url, recent_reqs[i].GetURL());
}
}
diff --git a/net/base/net_log.h b/net/base/net_log.h
index a2a8df2..9270d78 100644
--- a/net/base/net_log.h
+++ b/net/base/net_log.h
@@ -34,7 +34,6 @@ namespace net {
// TODO(eroman): Make the DNS jobs emit into the NetLog.
// TODO(eroman): Start a new Source each time URLRequest redirects
// (simpler to reason about each as a separate entity).
-// TODO(eroman): Add the URLRequest load flags to the start entry.
class NetLog {
public:
diff --git a/net/base/net_log_event_type_list.h b/net/base/net_log_event_type_list.h
index 86e6ffd..7a75f26 100644
--- a/net/base/net_log_event_type_list.h
+++ b/net/base/net_log_event_type_list.h
@@ -257,7 +257,9 @@ EVENT_TYPE(SOCKET_POOL_SOCKET_ID)
//
// For the BEGIN phase, the following parameters are attached:
// {
-// "url": <String of URL being loaded>
+// "url": <String of URL being loaded>,
+// "method": <The method ("POST" or "GET" or "HEAD" etc..)>,
+// "load_flags": <Numeric value of the combined load flags>
// }
//
// For the END phase, if there was an error, the following parameters are
@@ -305,7 +307,7 @@ EVENT_TYPE(HTTP_TRANSACTION_SEND_REQUEST)
// This event is sent for a HTTP request.
// The following parameters are attached:
// {
-// "line": <The HTTP request line, CRLF terminated>
+// "line": <The HTTP request line, CRLF terminated>,
// "headers": <The list of header:value pairs>
// }
EVENT_TYPE(HTTP_TRANSACTION_SEND_REQUEST_HEADERS)
@@ -313,7 +315,7 @@ EVENT_TYPE(HTTP_TRANSACTION_SEND_REQUEST_HEADERS)
// This event is sent for a tunnel request.
// The following parameters are attached:
// {
-// "line": <The HTTP request line, CRLF terminated>
+// "line": <The HTTP request line, CRLF terminated>,
// "headers": <The list of header:value pairs>
// }
EVENT_TYPE(HTTP_TRANSACTION_SEND_TUNNEL_HEADERS)
@@ -370,8 +372,8 @@ EVENT_TYPE(SPDY_TRANSACTION_READ_BODY)
// This event is sent for a SPDY SYN_STREAM.
// The following parameters are attached:
// {
-// "flags": <The control frame flags>
-// "headers": <The list of header:value pairs>
+// "flags": <The control frame flags>,
+// "headers": <The list of header:value pairs>,
// "id": <The stream id>
// }
EVENT_TYPE(SPDY_STREAM_SYN_STREAM)
@@ -385,8 +387,8 @@ EVENT_TYPE(SPDY_STREAM_SEND_BODY)
// This event is sent for a SPDY SYN_REPLY.
// The following parameters are attached:
// {
-// "flags": <The control frame flags>
-// "headers": <The list of header:value pairs>
+// "flags": <The control frame flags>,
+// "headers": <The list of header:value pairs>,
// "id": <The stream id>
// }
EVENT_TYPE(SPDY_STREAM_SYN_REPLY)
diff --git a/net/net.gyp b/net/net.gyp
index 9fb28ce..d07ca84 100644
--- a/net/net.gyp
+++ b/net/net.gyp
@@ -512,6 +512,8 @@
'url_request/url_request_job_metrics.h',
'url_request/url_request_job_tracker.cc',
'url_request/url_request_job_tracker.h',
+ 'url_request/url_request_netlog_params.cc',
+ 'url_request/url_request_netlog_params.h',
'url_request/url_request_redirect_job.cc',
'url_request/url_request_redirect_job.h',
'url_request/url_request_simple_job.cc',
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 701466e9a..81144af 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -18,6 +18,7 @@
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_job.h"
#include "net/url_request/url_request_job_manager.h"
+#include "net/url_request/url_request_netlog_params.h"
using base::Time;
using net::UploadData;
@@ -267,8 +268,7 @@ void URLRequest::StartJob(URLRequestJob* job) {
net_log_.BeginEvent(
net::NetLog::TYPE_URL_REQUEST_START,
- new net::NetLogStringParameter(
- "url", original_url().possibly_invalid_spec()));
+ new URLRequestStartEventParameters(url_, method_, load_flags_));
job_ = job;
job_->SetExtraRequestHeaders(extra_request_headers_);
diff --git a/net/url_request/url_request_netlog_params.cc b/net/url_request/url_request_netlog_params.cc
new file mode 100644
index 0000000..d432e79
--- /dev/null
+++ b/net/url_request/url_request_netlog_params.cc
@@ -0,0 +1,20 @@
+// Copyright (c) 2010 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.
+
+#include "net/url_request/url_request_netlog_params.h"
+
+#include "base/values.h"
+
+URLRequestStartEventParameters::URLRequestStartEventParameters(
+ const GURL& url, const std::string& method, int load_flags)
+ : url_(url), method_(method), load_flags_(load_flags) {}
+
+Value* URLRequestStartEventParameters::ToValue() const {
+ DictionaryValue* dict = new DictionaryValue();
+ dict->SetString(L"url", url_.possibly_invalid_spec());
+ dict->SetString(L"method", method_);
+ dict->SetInteger(L"load_flags", load_flags_);
+ return dict;
+}
+
diff --git a/net/url_request/url_request_netlog_params.h b/net/url_request/url_request_netlog_params.h
new file mode 100644
index 0000000..45c9791
--- /dev/null
+++ b/net/url_request/url_request_netlog_params.h
@@ -0,0 +1,32 @@
+// Copyright (c) 2010 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.
+
+#ifndef NET_URL_REQUEST_URL_REQUEST_NETLOG_PARAMS_H_
+#define NET_URL_REQUEST_URL_REQUEST_NETLOG_PARAMS_H_
+
+#include <string>
+
+#include "googleurl/src/gurl.h"
+#include "net/base/net_log.h"
+
+// Holds the parameters to emit to the NetLog when starting a URLRequest.
+class URLRequestStartEventParameters : public net::NetLog::EventParameters {
+ public:
+ URLRequestStartEventParameters(const GURL& url,
+ const std::string& method,
+ int load_flags);
+
+ const GURL& url() const {
+ return url_;
+ }
+
+ virtual Value* ToValue() const;
+
+ private:
+ const GURL url_;
+ const std::string method_;
+ const int load_flags_;
+};
+
+#endif // NET_URL_REQUEST_URL_REQUEST_NETLOG_PARAMS_H_