| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 2551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2562 SetResponse(raw_headers, response_data); | 2562 SetResponse(raw_headers, response_data); |
| 2563 job_factory_->SetDelayedCompleteJobGeneration(true); | 2563 job_factory_->SetDelayedCompleteJobGeneration(true); |
| 2564 HandleScheme("http"); | 2564 HandleScheme("http"); |
| 2565 | 2565 |
| 2566 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, | 2566 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, |
| 2567 GURL("http://example.com/blah"), | 2567 GURL("http://example.com/blah"), |
| 2568 RESOURCE_TYPE_MAIN_FRAME); | 2568 RESOURCE_TYPE_MAIN_FRAME); |
| 2569 // Return some data so that the request is identified as a download | 2569 // Return some data so that the request is identified as a download |
| 2570 // and the proper resource handlers are created. | 2570 // and the proper resource handlers are created. |
| 2571 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); | 2571 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); |
| 2572 base::MessageLoop::current()->RunUntilIdle(); |
| 2572 | 2573 |
| 2573 // And now simulate a cancellation coming from the renderer. | 2574 // And now simulate a cancellation coming from the renderer. |
| 2574 ResourceHostMsg_CancelRequest msg(request_id); | 2575 ResourceHostMsg_CancelRequest msg(request_id); |
| 2575 host_.OnMessageReceived(msg, filter_.get()); | 2576 host_.OnMessageReceived(msg, filter_.get()); |
| 2576 | 2577 |
| 2577 // Since the request had already started processing as a download, | 2578 // Since the request had already started processing as a download, |
| 2578 // the cancellation above should have been ignored and the request | 2579 // the cancellation above should have been ignored and the request |
| 2579 // should still be alive. | 2580 // should still be alive. |
| 2580 EXPECT_EQ(1, host_.pending_requests()); | 2581 EXPECT_EQ(1, host_.pending_requests()); |
| 2581 | 2582 |
| 2582 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} | 2583 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} |
| 2584 base::MessageLoop::current()->RunUntilIdle(); |
| 2583 } | 2585 } |
| 2584 | 2586 |
| 2585 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContext) { | 2587 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContext) { |
| 2586 EXPECT_EQ(0, host_.pending_requests()); | 2588 EXPECT_EQ(0, host_.pending_requests()); |
| 2587 | 2589 |
| 2588 int render_view_id = 0; | 2590 int render_view_id = 0; |
| 2589 int request_id = 1; | 2591 int request_id = 1; |
| 2590 | 2592 |
| 2591 std::string raw_headers("HTTP\n" | 2593 std::string raw_headers("HTTP\n" |
| 2592 "Content-disposition: attachment; filename=foo\n\n"); | 2594 "Content-disposition: attachment; filename=foo\n\n"); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2633 EXPECT_EQ(0, host_.pending_requests()); | 2635 EXPECT_EQ(0, host_.pending_requests()); |
| 2634 | 2636 |
| 2635 base::RunLoop().RunUntilIdle(); | 2637 base::RunLoop().RunUntilIdle(); |
| 2636 } else { | 2638 } else { |
| 2637 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, | 2639 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, |
| 2638 download_url, RESOURCE_TYPE_MAIN_FRAME); | 2640 download_url, RESOURCE_TYPE_MAIN_FRAME); |
| 2639 | 2641 |
| 2640 // Return some data so that the request is identified as a download | 2642 // Return some data so that the request is identified as a download |
| 2641 // and the proper resource handlers are created. | 2643 // and the proper resource handlers are created. |
| 2642 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); | 2644 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); |
| 2645 base::MessageLoop::current()->RunUntilIdle(); |
| 2643 | 2646 |
| 2644 // And now simulate a cancellation coming from the renderer. | 2647 // And now simulate a cancellation coming from the renderer. |
| 2645 ResourceHostMsg_CancelRequest msg(request_id); | 2648 ResourceHostMsg_CancelRequest msg(request_id); |
| 2646 host_.OnMessageReceived(msg, filter_.get()); | 2649 host_.OnMessageReceived(msg, filter_.get()); |
| 2647 | 2650 |
| 2648 // Since the request had already started processing as a download, | 2651 // Since the request had already started processing as a download, |
| 2649 // the cancellation above should have been ignored and the request | 2652 // the cancellation above should have been ignored and the request |
| 2650 // should still be alive. | 2653 // should still be alive. |
| 2651 EXPECT_EQ(1, host_.pending_requests()); | 2654 EXPECT_EQ(1, host_.pending_requests()); |
| 2652 | 2655 |
| 2653 // Cancelling by other methods shouldn't work either. | 2656 // Cancelling by other methods shouldn't work either. |
| 2654 host_.CancelRequestsForProcess(render_view_id); | 2657 host_.CancelRequestsForProcess(render_view_id); |
| 2655 EXPECT_EQ(1, host_.pending_requests()); | 2658 EXPECT_EQ(1, host_.pending_requests()); |
| 2656 | 2659 |
| 2657 // Cancelling by context should work. | 2660 // Cancelling by context should work. |
| 2658 host_.CancelRequestsForContext(filter_->resource_context()); | 2661 host_.CancelRequestsForContext(filter_->resource_context()); |
| 2659 EXPECT_EQ(0, host_.pending_requests()); | 2662 EXPECT_EQ(0, host_.pending_requests()); |
| 2663 |
| 2664 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} |
| 2665 base::RunLoop().RunUntilIdle(); |
| 2660 } | 2666 } |
| 2661 } | 2667 } |
| 2662 | 2668 |
| 2663 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextDetached) { | 2669 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextDetached) { |
| 2664 EXPECT_EQ(0, host_.pending_requests()); | 2670 EXPECT_EQ(0, host_.pending_requests()); |
| 2665 | 2671 |
| 2666 int render_view_id = 0; | 2672 int render_view_id = 0; |
| 2667 int request_id = 1; | 2673 int request_id = 1; |
| 2668 | 2674 |
| 2669 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, | 2675 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3021 SetResponse("HTTP/1.1 200 OK\n" | 3027 SetResponse("HTTP/1.1 200 OK\n" |
| 3022 "Content-Type: text/plain\n\n", | 3028 "Content-Type: text/plain\n\n", |
| 3023 kResponseBody); | 3029 kResponseBody); |
| 3024 ResourceHostMsg_FollowRedirect redirect_msg(request_id); | 3030 ResourceHostMsg_FollowRedirect redirect_msg(request_id); |
| 3025 host_.OnMessageReceived(redirect_msg, filter_.get()); | 3031 host_.OnMessageReceived(redirect_msg, filter_.get()); |
| 3026 base::RunLoop().RunUntilIdle(); | 3032 base::RunLoop().RunUntilIdle(); |
| 3027 | 3033 |
| 3028 // Flush all the pending requests to get the response through the | 3034 // Flush all the pending requests to get the response through the |
| 3029 // MimeTypeResourceHandler. | 3035 // MimeTypeResourceHandler. |
| 3030 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} | 3036 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} |
| 3037 base::MessageLoop::current()->RunUntilIdle(); |
| 3031 | 3038 |
| 3032 // Restore, now that we've set up a transfer. | 3039 // Restore, now that we've set up a transfer. |
| 3033 SetBrowserClientForTesting(old_client); | 3040 SetBrowserClientForTesting(old_client); |
| 3034 | 3041 |
| 3035 // This second filter is used to emulate a second process. | 3042 // This second filter is used to emulate a second process. |
| 3036 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); | 3043 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); |
| 3037 | 3044 |
| 3038 int new_render_view_id = 1; | 3045 int new_render_view_id = 1; |
| 3039 int new_request_id = 2; | 3046 int new_request_id = 2; |
| 3040 | 3047 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3189 SetResponse("HTTP/1.1 200 OK\n" | 3196 SetResponse("HTTP/1.1 200 OK\n" |
| 3190 "Content-Type: text/plain\n\n", | 3197 "Content-Type: text/plain\n\n", |
| 3191 kResponseBody); | 3198 kResponseBody); |
| 3192 ResourceHostMsg_FollowRedirect redirect_msg2(request_id); | 3199 ResourceHostMsg_FollowRedirect redirect_msg2(request_id); |
| 3193 host_.OnMessageReceived(redirect_msg2, filter_.get()); | 3200 host_.OnMessageReceived(redirect_msg2, filter_.get()); |
| 3194 base::RunLoop().RunUntilIdle(); | 3201 base::RunLoop().RunUntilIdle(); |
| 3195 | 3202 |
| 3196 // Flush all the pending requests to get the response through the | 3203 // Flush all the pending requests to get the response through the |
| 3197 // MimeTypeResourceHandler. | 3204 // MimeTypeResourceHandler. |
| 3198 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} | 3205 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} |
| 3206 base::MessageLoop::current()->RunUntilIdle(); |
| 3199 | 3207 |
| 3200 // Restore. | 3208 // Restore. |
| 3201 SetBrowserClientForTesting(old_client); | 3209 SetBrowserClientForTesting(old_client); |
| 3202 | 3210 |
| 3203 // This second filter is used to emulate a second process. | 3211 // This second filter is used to emulate a second process. |
| 3204 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); | 3212 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); |
| 3205 | 3213 |
| 3206 int new_render_view_id = 1; | 3214 int new_render_view_id = 1; |
| 3207 int new_request_id = 2; | 3215 int new_request_id = 2; |
| 3208 | 3216 |
| (...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3896 return nullptr; | 3904 return nullptr; |
| 3897 } | 3905 } |
| 3898 | 3906 |
| 3899 INSTANTIATE_TEST_CASE_P( | 3907 INSTANTIATE_TEST_CASE_P( |
| 3900 ResourceDispatcherHostTests, | 3908 ResourceDispatcherHostTests, |
| 3901 ResourceDispatcherHostTest, | 3909 ResourceDispatcherHostTest, |
| 3902 testing::Values(TestConfig::kDefault, | 3910 testing::Values(TestConfig::kDefault, |
| 3903 TestConfig::kOptimizeIPCForSmallResourceEnabled)); | 3911 TestConfig::kOptimizeIPCForSmallResourceEnabled)); |
| 3904 | 3912 |
| 3905 } // namespace content | 3913 } // namespace content |
| OLD | NEW |