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_; |
} |