| Index: net/http/http_network_transaction_unittest.cc
|
| diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
|
| index 7c02e83e8b5501b3d3c3b67dd5091730ff010839..92e20c0e5dea41d4d5fdc4e8f72039e76ad95edb 100644
|
| --- a/net/http/http_network_transaction_unittest.cc
|
| +++ b/net/http/http_network_transaction_unittest.cc
|
| @@ -5794,31 +5794,41 @@ TEST_F(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) {
|
| EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv);
|
| }
|
|
|
| -// Host resolution observer used by
|
| -// HttpNetworkTransactionTest.ResolveMadeWithReferrer to check that host
|
| -// resovle requests are issued with a referrer of |expected_referrer|.
|
| -class ResolutionReferrerObserver : public HostResolver::Observer {
|
| +// Forwards all calls to MockHostResolverBase but notes RequestInfo::referrer().
|
| +// Used by HttpNetworkTransactionTest.ResolveMadeWithReferrer to check that host
|
| +// resolve requests are issued with a referrer of |expected_referrer|.
|
| +class ObservingHostResolver : public MockHostResolverBase {
|
| public:
|
| - explicit ResolutionReferrerObserver(const GURL& expected_referrer)
|
| - : expected_referrer_(expected_referrer),
|
| + explicit ObservingHostResolver(const GURL& expected_referrer)
|
| + : MockHostResolverBase(false /* use_caching */),
|
| + expected_referrer_(expected_referrer),
|
| called_start_with_referrer_(false),
|
| - called_finish_with_referrer_(false) {
|
| + called_finish_with_referrer_(false),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(
|
| + callback_(this,
|
| + &ObservingHostResolver::OnFinishResolutionWithStatus)) {
|
| }
|
|
|
| - virtual void OnStartResolution(int id,
|
| - const HostResolver::RequestInfo& info) {
|
| - if (info.referrer() == expected_referrer_)
|
| + virtual int Resolve(const RequestInfo& info,
|
| + AddressList* addresses,
|
| + OldCompletionCallback* callback,
|
| + RequestHandle* out_req,
|
| + const BoundNetLog& net_log) OVERRIDE {
|
| + if (info.referrer() == expected_referrer_) {
|
| called_start_with_referrer_ = true;
|
| + callback_forwarded_ = callback;
|
| + callback = &callback_;
|
| + }
|
| + return MockHostResolverBase::Resolve(info, addresses, callback, out_req,
|
| + net_log);
|
| }
|
|
|
| - virtual void OnFinishResolutionWithStatus(
|
| - int id, bool was_resolved, const HostResolver::RequestInfo& info ) {
|
| - if (info.referrer() == expected_referrer_)
|
| - called_finish_with_referrer_ = true;
|
| + void OnFinishResolutionWithStatus(int result) {
|
| + called_finish_with_referrer_ = true;
|
| + callback_forwarded_->Run(result);
|
| }
|
|
|
| - virtual void OnCancelResolution(int id,
|
| - const HostResolver::RequestInfo& info ) {
|
| + virtual void CancelRequest(RequestHandle handle) OVERRIDE {
|
| FAIL() << "Should not be cancelling any requests!";
|
| }
|
|
|
| @@ -5830,8 +5840,10 @@ class ResolutionReferrerObserver : public HostResolver::Observer {
|
| GURL expected_referrer_;
|
| bool called_start_with_referrer_;
|
| bool called_finish_with_referrer_;
|
| + OldCompletionCallbackImpl<ObservingHostResolver> callback_;
|
| + OldCompletionCallback* callback_forwarded_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ResolutionReferrerObserver);
|
| + DISALLOW_COPY_AND_ASSIGN(ObservingHostResolver);
|
| };
|
|
|
| // Make sure that when HostResolver::Resolve() is invoked, it passes through
|
| @@ -5839,7 +5851,6 @@ class ResolutionReferrerObserver : public HostResolver::Observer {
|
| TEST_F(HttpNetworkTransactionTest, ResolveMadeWithReferrer) {
|
| GURL referrer = GURL("http://expected-referrer/");
|
| EXPECT_TRUE(referrer.is_valid());
|
| - ResolutionReferrerObserver resolution_observer(referrer);
|
|
|
| // Issue a request, containing an HTTP referrer.
|
| HttpRequestInfo request;
|
| @@ -5849,12 +5860,14 @@ TEST_F(HttpNetworkTransactionTest, ResolveMadeWithReferrer) {
|
| referrer.spec());
|
|
|
| SessionDependencies session_deps;
|
| + // Attach an observer to watch the host resolutions being made.
|
| + ObservingHostResolver* observing_resolver =
|
| + new ObservingHostResolver(referrer);
|
| + session_deps.host_resolver.reset(observing_resolver);
|
| +
|
| scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
|
| CreateSession(&session_deps)));
|
|
|
| - // Attach an observer to watch the host resolutions being made.
|
| - session_deps.host_resolver->AddObserver(&resolution_observer);
|
| -
|
| // Connect up a mock socket which will fail when reading.
|
| MockRead data_reads[] = {
|
| MockRead(false, ERR_FAILED),
|
| @@ -5870,7 +5883,7 @@ TEST_F(HttpNetworkTransactionTest, ResolveMadeWithReferrer) {
|
| EXPECT_EQ(ERR_FAILED, rv);
|
|
|
| // Check that the host resolution observer saw |referrer|.
|
| - EXPECT_TRUE(resolution_observer.did_complete_with_expected_referrer());
|
| + EXPECT_TRUE(observing_resolver->did_complete_with_expected_referrer());
|
| }
|
|
|
| // Base test to make sure that when the load flags for a request specify to
|
| @@ -9139,14 +9152,6 @@ class OneTimeCachingHostResolver : public net::HostResolver {
|
| host_resolver_.CancelRequest(req);
|
| }
|
|
|
| - virtual void AddObserver(Observer* observer) OVERRIDE {
|
| - return host_resolver_.AddObserver(observer);
|
| - }
|
| -
|
| - virtual void RemoveObserver(Observer* observer) OVERRIDE {
|
| - return host_resolver_.RemoveObserver(observer);
|
| - }
|
| -
|
| MockCachingHostResolver* GetMockHostResolver() {
|
| return &host_resolver_;
|
| }
|
|
|