From b6ce91bbe84f6009d6549c8041c33dc1fd94f4ad Mon Sep 17 00:00:00 2001 From: "erg@google.com" Date: Thu, 10 Feb 2011 21:30:50 +0000 Subject: Even more test cleanup. BUG=none TEST=compiles Review URL: http://codereview.chromium.org/6471013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74484 0039d316-1c4b-4281-b951-d872f2087c98 --- net/proxy/mock_proxy_resolver.cc | 115 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 net/proxy/mock_proxy_resolver.cc (limited to 'net/proxy/mock_proxy_resolver.cc') diff --git a/net/proxy/mock_proxy_resolver.cc b/net/proxy/mock_proxy_resolver.cc new file mode 100644 index 0000000..bb29984 --- /dev/null +++ b/net/proxy/mock_proxy_resolver.cc @@ -0,0 +1,115 @@ +// Copyright (c) 2011 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/proxy/mock_proxy_resolver.h" + +#include "base/logging.h" +#include "base/message_loop.h" + +namespace net { + +MockAsyncProxyResolverBase::Request::Request( + MockAsyncProxyResolverBase* resolver, + const GURL& url, + ProxyInfo* results, + CompletionCallback* callback) + : resolver_(resolver), + url_(url), + results_(results), + callback_(callback), + origin_loop_(MessageLoop::current()) { + } + + void MockAsyncProxyResolverBase::Request::CompleteNow(int rv) { + CompletionCallback* callback = callback_; + + // May delete |this|. + resolver_->RemovePendingRequest(this); + + callback->Run(rv); + } + +MockAsyncProxyResolverBase::Request::~Request() {} + + +MockAsyncProxyResolverBase::SetPacScriptRequest::SetPacScriptRequest( + MockAsyncProxyResolverBase* resolver, + const scoped_refptr& script_data, + CompletionCallback* callback) + : resolver_(resolver), + script_data_(script_data), + callback_(callback), + origin_loop_(MessageLoop::current()) { + } + +MockAsyncProxyResolverBase::SetPacScriptRequest::~SetPacScriptRequest() {} + + void MockAsyncProxyResolverBase::SetPacScriptRequest::CompleteNow(int rv) { + CompletionCallback* callback = callback_; + + // Will delete |this|. + resolver_->RemovePendingSetPacScriptRequest(this); + + callback->Run(rv); + } + +MockAsyncProxyResolverBase::~MockAsyncProxyResolverBase() {} + +int MockAsyncProxyResolverBase::GetProxyForURL(const GURL& url, + ProxyInfo* results, + CompletionCallback* callback, + RequestHandle* request_handle, + const BoundNetLog& /*net_log*/) { + scoped_refptr request = new Request(this, url, results, callback); + pending_requests_.push_back(request); + + if (request_handle) + *request_handle = reinterpret_cast(request.get()); + + // Test code completes the request by calling request->CompleteNow(). + return ERR_IO_PENDING; +} + +void MockAsyncProxyResolverBase::CancelRequest(RequestHandle request_handle) { + scoped_refptr request = reinterpret_cast(request_handle); + cancelled_requests_.push_back(request); + RemovePendingRequest(request); +} + +int MockAsyncProxyResolverBase::SetPacScript( + const scoped_refptr& script_data, + CompletionCallback* callback) { + DCHECK(!pending_set_pac_script_request_.get()); + pending_set_pac_script_request_.reset( + new SetPacScriptRequest(this, script_data, callback)); + // Finished when user calls SetPacScriptRequest::CompleteNow(). + return ERR_IO_PENDING; +} + +void MockAsyncProxyResolverBase::CancelSetPacScript() { + // Do nothing (caller was responsible for completing the request). +} + +MockAsyncProxyResolverBase::SetPacScriptRequest* +MockAsyncProxyResolverBase::pending_set_pac_script_request() const { + return pending_set_pac_script_request_.get(); +} + +void MockAsyncProxyResolverBase::RemovePendingRequest(Request* request) { + RequestsList::iterator it = std::find( + pending_requests_.begin(), pending_requests_.end(), request); + DCHECK(it != pending_requests_.end()); + pending_requests_.erase(it); +} + +void MockAsyncProxyResolverBase::RemovePendingSetPacScriptRequest( + SetPacScriptRequest* request) { + DCHECK_EQ(request, pending_set_pac_script_request()); + pending_set_pac_script_request_.reset(); +} + +MockAsyncProxyResolverBase::MockAsyncProxyResolverBase(bool expects_pac_bytes) + : ProxyResolver(expects_pac_bytes) {} + +} // namespace net -- cgit v1.1