summaryrefslogtreecommitdiffstats
path: root/net/proxy/init_proxy_resolver.cc
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-17 20:28:24 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-17 20:28:24 +0000
commit6bd32db110086576d44c4230a1e7bb53f3d20630 (patch)
tree74fcf2ef37e619983c8f6b92927d85fb9dda9a00 /net/proxy/init_proxy_resolver.cc
parent9de09f8474427fe1341201b946d9afe20ab01b07 (diff)
downloadchromium_src-6bd32db110086576d44c4230a1e7bb53f3d20630.zip
chromium_src-6bd32db110086576d44c4230a1e7bb53f3d20630.tar.gz
chromium_src-6bd32db110086576d44c4230a1e7bb53f3d20630.tar.bz2
Instrument ProxyService and InitProxyResolver with LoadLog.
BUG=http://crbug.com/14478 Review URL: http://codereview.chromium.org/172020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23573 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/proxy/init_proxy_resolver.cc')
-rw-r--r--net/proxy/init_proxy_resolver.cc64
1 files changed, 52 insertions, 12 deletions
diff --git a/net/proxy/init_proxy_resolver.cc b/net/proxy/init_proxy_resolver.cc
index 7b98c4a..a185278 100644
--- a/net/proxy/init_proxy_resolver.cc
+++ b/net/proxy/init_proxy_resolver.cc
@@ -6,6 +6,7 @@
#include "base/compiler_specific.h"
#include "base/logging.h"
+#include "net/base/load_log.h"
#include "net/base/net_errors.h"
#include "net/proxy/proxy_config.h"
#include "net/proxy/proxy_resolver.h"
@@ -25,23 +26,21 @@ InitProxyResolver::InitProxyResolver(ProxyResolver* resolver,
}
InitProxyResolver::~InitProxyResolver() {
- switch (next_state_) {
- case STATE_FETCH_PAC_SCRIPT_COMPLETE:
- proxy_script_fetcher_->Cancel();
- break;
- case STATE_SET_PAC_SCRIPT_COMPLETE:
- resolver_->CancelSetPacScript();
- break;
- default:
- break;
- }
+ if (next_state_ != STATE_NONE)
+ Cancel();
}
int InitProxyResolver::Init(const ProxyConfig& config,
- CompletionCallback* callback) {
+ CompletionCallback* callback,
+ LoadLog* load_log) {
DCHECK_EQ(STATE_NONE, next_state_);
DCHECK(callback);
DCHECK(config.MayRequirePACResolver());
+ DCHECK(!load_log_);
+
+ load_log_ = load_log;
+
+ LoadLog::BeginEvent(load_log_, LoadLog::TYPE_INIT_PROXY_RESOLVER);
pac_urls_ = BuildPacUrlsFallbackList(config);
DCHECK(!pac_urls_.empty());
@@ -51,6 +50,9 @@ int InitProxyResolver::Init(const ProxyConfig& config,
int rv = DoLoop(OK);
if (rv == ERR_IO_PENDING)
user_callback_ = callback;
+ else
+ DidCompleteInit();
+
return rv;
}
@@ -73,8 +75,10 @@ InitProxyResolver::UrlList InitProxyResolver::BuildPacUrlsFallbackList(
void InitProxyResolver::OnIOCompletion(int result) {
DCHECK_NE(STATE_NONE, next_state_);
int rv = DoLoop(result);
- if (rv != ERR_IO_PENDING)
+ if (rv != ERR_IO_PENDING) {
+ DidCompleteInit();
DoCallback(rv);
+ }
}
int InitProxyResolver::DoLoop(int result) {
@@ -116,6 +120,9 @@ void InitProxyResolver::DoCallback(int result) {
int InitProxyResolver::DoFetchPacScript() {
DCHECK(resolver_->expects_pac_bytes());
+ LoadLog::BeginEvent(load_log_,
+ LoadLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT);
+
next_state_ = STATE_FETCH_PAC_SCRIPT_COMPLETE;
const GURL& pac_url = current_pac_url();
@@ -128,6 +135,9 @@ int InitProxyResolver::DoFetchPacScript() {
int InitProxyResolver::DoFetchPacScriptComplete(int result) {
DCHECK(resolver_->expects_pac_bytes());
+ LoadLog::EndEvent(load_log_,
+ LoadLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT);
+
LOG(INFO) << "Completed PAC script fetch of " << current_pac_url()
<< " with result " << ErrorToString(result)
<< ". Fetched a total of " << pac_bytes_.size() << " bytes";
@@ -140,6 +150,9 @@ int InitProxyResolver::DoFetchPacScriptComplete(int result) {
}
int InitProxyResolver::DoSetPacScript() {
+ LoadLog::BeginEvent(load_log_,
+ LoadLog::TYPE_INIT_PROXY_RESOLVER_SET_PAC_SCRIPT);
+
const GURL& pac_url = current_pac_url();
next_state_ = STATE_SET_PAC_SCRIPT_COMPLETE;
@@ -150,6 +163,9 @@ int InitProxyResolver::DoSetPacScript() {
}
int InitProxyResolver::DoSetPacScriptComplete(int result) {
+ LoadLog::EndEvent(load_log_,
+ LoadLog::TYPE_INIT_PROXY_RESOLVER_SET_PAC_SCRIPT);
+
if (result != OK) {
LOG(INFO) << "Failed configuring PAC using " << current_pac_url()
<< " with error " << ErrorToString(result);
@@ -186,4 +202,28 @@ const GURL& InitProxyResolver::current_pac_url() const {
return pac_urls_[current_pac_url_index_];
}
+void InitProxyResolver::DidCompleteInit() {
+ LoadLog::EndEvent(load_log_, LoadLog::TYPE_INIT_PROXY_RESOLVER);
+}
+
+void InitProxyResolver::Cancel() {
+ DCHECK_NE(STATE_NONE, next_state_);
+
+ LoadLog::AddEvent(load_log_, LoadLog::TYPE_CANCELLED);
+
+ switch (next_state_) {
+ case STATE_FETCH_PAC_SCRIPT_COMPLETE:
+ proxy_script_fetcher_->Cancel();
+ break;
+ case STATE_SET_PAC_SCRIPT_COMPLETE:
+ resolver_->CancelSetPacScript();
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+
+ DidCompleteInit();
+}
+
} // namespace net