| Index: content/browser/loader/resource_dispatcher_host_unittest.cc
|
| diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| index 81e0c88f5ed2dd08b66046333470cacc1321dc4d..895951bba1e90095b8bab75332df1c73d59898a7 100644
|
| --- a/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| +++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| @@ -1021,41 +1021,52 @@ TEST_F(ResourceDispatcherHostTest, DetachedResourceTimesOut) {
|
| // If the filter has disappeared then detachable resources should continue to
|
| // load.
|
| TEST_F(ResourceDispatcherHostTest, DeletedFilterDetached) {
|
| - ResourceHostMsg_Request request = CreateResourceRequest(
|
| - "GET", ResourceType::PREFETCH, net::URLRequestTestJob::test_url_4());
|
| + // test_url_1's data is available synchronously, so use 2 and 3.
|
| + ResourceHostMsg_Request request_prefetch = CreateResourceRequest(
|
| + "GET", ResourceType::PREFETCH, net::URLRequestTestJob::test_url_2());
|
| + ResourceHostMsg_Request request_ping = CreateResourceRequest(
|
| + "GET", ResourceType::PING, net::URLRequestTestJob::test_url_3());
|
|
|
| - ResourceHostMsg_RequestResource msg(0, 1, request);
|
| bool msg_was_ok;
|
| - host_.OnMessageReceived(msg, filter_, &msg_was_ok);
|
| + ResourceHostMsg_RequestResource msg_prefetch(0, 1, request_prefetch);
|
| + host_.OnMessageReceived(msg_prefetch, filter_, &msg_was_ok);
|
| + ResourceHostMsg_RequestResource msg_ping(0, 2, request_ping);
|
| + host_.OnMessageReceived(msg_ping, filter_, &msg_was_ok);
|
|
|
| - // Remove the filter before processing the request by simulating channel
|
| + // Remove the filter before processing the requests by simulating channel
|
| // closure.
|
| - GlobalRequestID global_request_id(filter_->child_id(), 1);
|
| - ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(
|
| - host_.GetURLRequest(global_request_id));
|
| - info->filter_->OnChannelClosing();
|
| - info->filter_.reset();
|
| -
|
| - // From the renderer's perspective, the request was cancelled.
|
| + ResourceRequestInfoImpl* info_prefetch = ResourceRequestInfoImpl::ForRequest(
|
| + host_.GetURLRequest(GlobalRequestID(filter_->child_id(), 1)));
|
| + ResourceRequestInfoImpl* info_ping = ResourceRequestInfoImpl::ForRequest(
|
| + host_.GetURLRequest(GlobalRequestID(filter_->child_id(), 2)));
|
| + DCHECK_EQ(filter_.get(), info_prefetch->filter());
|
| + DCHECK_EQ(filter_.get(), info_ping->filter());
|
| + filter_->OnChannelClosing();
|
| + info_prefetch->filter_.reset();
|
| + info_ping->filter_.reset();
|
| +
|
| + // From the renderer's perspective, the requests were cancelled.
|
| ResourceIPCAccumulator::ClassifiedMessages msgs;
|
| accum_.GetClassifiedMessages(&msgs);
|
| - ASSERT_EQ(1U, msgs.size());
|
| + ASSERT_EQ(2U, msgs.size());
|
| CheckRequestCompleteErrorCode(msgs[0][0], net::ERR_ABORTED);
|
| + CheckRequestCompleteErrorCode(msgs[1][0], net::ERR_ABORTED);
|
|
|
| // But it continues detached.
|
| - EXPECT_EQ(1, host_.pending_requests());
|
| - EXPECT_TRUE(info->detachable_handler()->is_detached());
|
| + EXPECT_EQ(2, host_.pending_requests());
|
| + EXPECT_TRUE(info_prefetch->detachable_handler()->is_detached());
|
| + EXPECT_TRUE(info_ping->detachable_handler()->is_detached());
|
|
|
| KickOffRequest();
|
|
|
| - // Make sure the request wasn't canceled early.
|
| - EXPECT_EQ(1, host_.pending_requests());
|
| + // Make sure the requests weren't canceled early.
|
| + EXPECT_EQ(2, host_.pending_requests());
|
|
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
|
| base::MessageLoop::current()->RunUntilIdle();
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
| - EXPECT_EQ(1, network_delegate()->completed_requests());
|
| + EXPECT_EQ(2, network_delegate()->completed_requests());
|
| EXPECT_EQ(0, network_delegate()->canceled_requests());
|
| EXPECT_EQ(0, network_delegate()->error_count());
|
| }
|
|
|