diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-13 13:55:10 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-13 13:55:10 +0000 |
commit | 9319035b01befc8d59c9c1c7f9d83fbe15b0ba79 (patch) | |
tree | 4f871697a10d9e6b46630571edb298982b550d42 /chrome | |
parent | 0e6fd884e68670a70a857d092b79fb7e71bf3856 (diff) | |
download | chromium_src-9319035b01befc8d59c9c1c7f9d83fbe15b0ba79.zip chromium_src-9319035b01befc8d59c9c1c7f9d83fbe15b0ba79.tar.gz chromium_src-9319035b01befc8d59c9c1c7f9d83fbe15b0ba79.tar.bz2 |
Redirects NetLog output to the log file, when the command line
option "--log-net-log" is used.
BUG= 50987
TEST= Run "chrome --log-net-log --enable-logging --log-level=0"
And then check to make sure the log contains the NetLog events.
Review URL: http://codereview.chromium.org/3040051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56021 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/dom_ui/net_internals_ui.cc | 43 | ||||
-rw-r--r-- | chrome/browser/net/chrome_net_log.cc | 12 | ||||
-rw-r--r-- | chrome/browser/net/chrome_net_log.h | 2 | ||||
-rw-r--r-- | chrome/browser/net/net_log_logger.cc | 25 | ||||
-rw-r--r-- | chrome/browser/net/net_log_logger.h | 31 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 | ||||
-rw-r--r-- | chrome/common/chrome_switches.cc | 3 | ||||
-rw-r--r-- | chrome/common/chrome_switches.h | 1 |
8 files changed, 84 insertions, 35 deletions
diff --git a/chrome/browser/dom_ui/net_internals_ui.cc b/chrome/browser/dom_ui/net_internals_ui.cc index d64e68c..a3cfed4 100644 --- a/chrome/browser/dom_ui/net_internals_ui.cc +++ b/chrome/browser/dom_ui/net_internals_ui.cc @@ -78,35 +78,6 @@ disk_cache::Backend* GetDiskCacheBackend(URLRequestContext* context) { return http_cache->GetCurrentBackend(); } -// Serializes the specified event to a DictionaryValue. -Value* EntryToDictionaryValue(net::NetLog::EventType type, - const base::TimeTicks& time, - const net::NetLog::Source& source, - net::NetLog::EventPhase phase, - net::NetLog::EventParameters* params) { - DictionaryValue* entry_dict = new DictionaryValue(); - - // Set the entry time. (Note that we send it as a string since integers - // might overflow). - entry_dict->SetString("time", TickCountToString(time)); - - // Set the entry source. - DictionaryValue* source_dict = new DictionaryValue(); - source_dict->SetInteger("id", source.id); - source_dict->SetInteger("type", static_cast<int>(source.type)); - entry_dict->Set("source", source_dict); - - // Set the event info. - entry_dict->SetInteger("type", static_cast<int>(type)); - entry_dict->SetInteger("phase", static_cast<int>(phase)); - - // Set the event-specific parameters. - if (params) - entry_dict->Set("params", params->ToValue()); - - return entry_dict; -} - Value* ExperimentToValue(const ConnectionTester::Experiment& experiment) { DictionaryValue* dict = new DictionaryValue(); @@ -734,11 +705,12 @@ void NetInternalsMessageHandler::IOThreadImpl::OnGetPassiveLogEntries( ListValue* list = new ListValue(); for (size_t i = 0; i < passive_entries.size(); ++i) { const PassiveLogCollector::Entry& e = passive_entries[i]; - list->Append(EntryToDictionaryValue(e.type, - e.time, - e.source, - e.phase, - e.params)); + list->Append(net::NetLog::EntryToDictionaryValue(e.type, + e.time, + e.source, + e.phase, + e.params, + false)); } CallJavascriptFunction(L"g_browser.receivedPassiveLogEntries", list); @@ -794,7 +766,8 @@ void NetInternalsMessageHandler::IOThreadImpl::OnAddEntry( CallJavascriptFunction( L"g_browser.receivedLogEntry", - EntryToDictionaryValue(type, time, source, phase, params)); + net::NetLog::EntryToDictionaryValue(type, time, source, phase, params, + false)); } void NetInternalsMessageHandler::IOThreadImpl::OnStartConnectionTestSuite() { diff --git a/chrome/browser/net/chrome_net_log.cc b/chrome/browser/net/chrome_net_log.cc index a696552..de2466e 100644 --- a/chrome/browser/net/chrome_net_log.cc +++ b/chrome/browser/net/chrome_net_log.cc @@ -6,11 +6,14 @@ #include <algorithm> +#include "base/command_line.h" #include "base/logging.h" #include "base/string_util.h" #include "chrome/browser/chrome_thread.h" #include "chrome/browser/net/load_timing_observer.h" +#include "chrome/browser/net/net_log_logger.h" #include "chrome/browser/net/passive_log_collector.h" +#include "chrome/common/chrome_switches.h" ChromeNetLog::ChromeNetLog() : next_id_(1), @@ -19,12 +22,21 @@ ChromeNetLog::ChromeNetLog() DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); AddObserver(passive_collector_.get()); AddObserver(load_timing_observer_.get()); + + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + if (command_line.HasSwitch(switches::kLogNetLog)) { + net_log_logger_.reset(new NetLogLogger()); + AddObserver(net_log_logger_.get()); + } } ChromeNetLog::~ChromeNetLog() { DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); RemoveObserver(passive_collector_.get()); RemoveObserver(load_timing_observer_.get()); + if (net_log_logger_.get()) { + RemoveObserver(net_log_logger_.get()); + } } void ChromeNetLog::AddEntry(EventType type, diff --git a/chrome/browser/net/chrome_net_log.h b/chrome/browser/net/chrome_net_log.h index 3992671..bee4c62 100644 --- a/chrome/browser/net/chrome_net_log.h +++ b/chrome/browser/net/chrome_net_log.h @@ -11,6 +11,7 @@ #include "net/base/net_log.h" class LoadTimingObserver; +class NetLogLogger; class PassiveLogCollector; // ChromeNetLog is an implementation of NetLog that dispatches network log @@ -62,6 +63,7 @@ class ChromeNetLog : public net::NetLog { uint32 next_id_; scoped_ptr<PassiveLogCollector> passive_collector_; scoped_ptr<LoadTimingObserver> load_timing_observer_; + scoped_ptr<NetLogLogger> net_log_logger_; ObserverList<Observer, true> observers_; DISALLOW_COPY_AND_ASSIGN(ChromeNetLog); diff --git a/chrome/browser/net/net_log_logger.cc b/chrome/browser/net/net_log_logger.cc new file mode 100644 index 0000000..14bac0b --- /dev/null +++ b/chrome/browser/net/net_log_logger.cc @@ -0,0 +1,25 @@ +// 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 "chrome/browser/net/net_log_logger.h" + +#include "base/json/json_writer.h" + +NetLogLogger::NetLogLogger() {} + +NetLogLogger::~NetLogLogger() {} + +void NetLogLogger::OnAddEntry(net::NetLog::EventType type, + const base::TimeTicks& time, + const net::NetLog::Source& source, + net::NetLog::EventPhase phase, + net::NetLog::EventParameters* params) { + scoped_ptr<Value> value(net::NetLog::EntryToDictionaryValue(type, time, + source, phase, + params, true)); + std::string json; + base::JSONWriter::Write(value.get(), true, &json); + LOG(INFO) << json; +} + diff --git a/chrome/browser/net/net_log_logger.h b/chrome/browser/net/net_log_logger.h new file mode 100644 index 0000000..98c989e --- /dev/null +++ b/chrome/browser/net/net_log_logger.h @@ -0,0 +1,31 @@ +// 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 CHROME_BROWSER_NET_NET_LOG_LOGGER_H_ +#define CHROME_BROWSER_NET_NET_LOG_LOGGER_H_ +#pragma once + +#include "chrome/browser/net/chrome_net_log.h" + +// NetLogLogger watches the NetLog event stream, and sends all entries to +// LOG(INFO). This is to debug errors that prevent getting to the +// about:net-internals page. +class NetLogLogger : public ChromeNetLog::Observer { + public: + NetLogLogger(); + ~NetLogLogger(); + + // Observer implementation: + virtual void OnAddEntry(net::NetLog::EventType type, + const base::TimeTicks& time, + const net::NetLog::Source& source, + net::NetLog::EventPhase phase, + net::NetLog::EventParameters* params); + + private: + DISALLOW_COPY_AND_ASSIGN(NetLogLogger); +}; + +#endif // CHROME_BROWSER_NET_NET_LOG_LOGGER_H_ + diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index be196aa..acaa5db 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1969,6 +1969,8 @@ 'browser/net/load_timing_observer.h', 'browser/net/metadata_url_request.cc', 'browser/net/metadata_url_request.h', + 'browser/net/net_log_logger.cc', + 'browser/net/net_log_logger.h', 'browser/net/passive_log_collector.cc', 'browser/net/passive_log_collector.h', 'browser/net/preconnect.cc', diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 16a6800..5a6b770 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -288,6 +288,9 @@ const char kDomAutomationController[] = "dom-automation"; // scripts. const char kDumpHistogramsOnExit[] = "dump-histograms-on-exit"; +// Enable displaying net log events on the command line. +extern const char kLogNetLog[] = "log-net-log"; + // Enable gpu-accelerated compositing. const char kEnableAcceleratedCompositing[] = "enable-accelerated-compositing"; diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 0078657..8fa9a2d 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -188,6 +188,7 @@ extern const char kLoadExtension[]; extern const char kLoadPlugin[]; extern const char kExtraPluginDir[]; extern const char kLogFilterPrefix[]; +extern const char kLogNetLog[]; extern const char kLogPluginMessages[]; extern const char kLoggingLevel[]; extern const char kMakeDefaultBrowser[]; |