Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: content/browser/loader/resource_dispatcher_host_unittest.cc

Issue 1977313002: Define parameter structs of resource messages out of resource_messages.h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 19 matching lines...) Expand all
30 #include "content/browser/loader/detachable_resource_handler.h" 30 #include "content/browser/loader/detachable_resource_handler.h"
31 #include "content/browser/loader/navigation_url_loader.h" 31 #include "content/browser/loader/navigation_url_loader.h"
32 #include "content/browser/loader/resource_dispatcher_host_impl.h" 32 #include "content/browser/loader/resource_dispatcher_host_impl.h"
33 #include "content/browser/loader/resource_loader.h" 33 #include "content/browser/loader/resource_loader.h"
34 #include "content/browser/loader/resource_message_filter.h" 34 #include "content/browser/loader/resource_message_filter.h"
35 #include "content/browser/loader/resource_request_info_impl.h" 35 #include "content/browser/loader/resource_request_info_impl.h"
36 #include "content/common/appcache_interfaces.h" 36 #include "content/common/appcache_interfaces.h"
37 #include "content/common/child_process_host_impl.h" 37 #include "content/common/child_process_host_impl.h"
38 #include "content/common/navigation_params.h" 38 #include "content/common/navigation_params.h"
39 #include "content/common/resource_messages.h" 39 #include "content/common/resource_messages.h"
40 #include "content/common/resource_request.h"
40 #include "content/common/ssl_status_serialization.h" 41 #include "content/common/ssl_status_serialization.h"
41 #include "content/common/view_messages.h" 42 #include "content/common/view_messages.h"
42 #include "content/public/browser/global_request_id.h" 43 #include "content/public/browser/global_request_id.h"
43 #include "content/public/browser/render_process_host.h" 44 #include "content/public/browser/render_process_host.h"
44 #include "content/public/browser/resource_context.h" 45 #include "content/public/browser/resource_context.h"
45 #include "content/public/browser/resource_dispatcher_host_delegate.h" 46 #include "content/public/browser/resource_dispatcher_host_delegate.h"
46 #include "content/public/browser/resource_request_info.h" 47 #include "content/public/browser/resource_request_info.h"
47 #include "content/public/browser/resource_throttle.h" 48 #include "content/public/browser/resource_throttle.h"
48 #include "content/public/browser/web_contents.h" 49 #include "content/public/browser/web_contents.h"
49 #include "content/public/browser/web_contents_observer.h" 50 #include "content/public/browser/web_contents_observer.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 case ResourceMsg_DataDownloaded::ID: 143 case ResourceMsg_DataDownloaded::ID:
143 case ResourceMsg_RequestComplete::ID: { 144 case ResourceMsg_RequestComplete::ID: {
144 bool result = base::PickleIterator(msg).ReadInt(&request_id); 145 bool result = base::PickleIterator(msg).ReadInt(&request_id);
145 DCHECK(result); 146 DCHECK(result);
146 break; 147 break;
147 } 148 }
148 } 149 }
149 return request_id; 150 return request_id;
150 } 151 }
151 152
152 static ResourceHostMsg_Request CreateResourceRequest(const char* method, 153 static ResourceRequest CreateResourceRequest(const char* method,
153 ResourceType type, 154 ResourceType type,
154 const GURL& url) { 155 const GURL& url) {
155 ResourceHostMsg_Request request; 156 ResourceRequest request;
156 request.method = std::string(method); 157 request.method = std::string(method);
157 request.url = url; 158 request.url = url;
158 request.first_party_for_cookies = url; // bypass third-party cookie blocking 159 request.first_party_for_cookies = url; // bypass third-party cookie blocking
159 request.referrer_policy = blink::WebReferrerPolicyDefault; 160 request.referrer_policy = blink::WebReferrerPolicyDefault;
160 request.load_flags = 0; 161 request.load_flags = 0;
161 request.origin_pid = 0; 162 request.origin_pid = 0;
162 request.resource_type = type; 163 request.resource_type = type;
163 request.request_context = 0; 164 request.request_context = 0;
164 request.appcache_host_id = kAppCacheNoHostId; 165 request.appcache_host_id = kAppCacheNoHostId;
165 request.download_to_file = false; 166 request.download_to_file = false;
(...skipping 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id, 1208 MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
1208 url, RESOURCE_TYPE_SUB_RESOURCE); 1209 url, RESOURCE_TYPE_SUB_RESOURCE);
1209 } 1210 }
1210 1211
1211 void ResourceDispatcherHostTest::MakeTestRequestWithRenderFrame( 1212 void ResourceDispatcherHostTest::MakeTestRequestWithRenderFrame(
1212 int render_view_id, 1213 int render_view_id,
1213 int render_frame_id, 1214 int render_frame_id,
1214 int request_id, 1215 int request_id,
1215 const GURL& url, 1216 const GURL& url,
1216 ResourceType type) { 1217 ResourceType type) {
1217 ResourceHostMsg_Request request = CreateResourceRequest("GET", type, url); 1218 ResourceRequest request = CreateResourceRequest("GET", type, url);
1218 request.render_frame_id = render_frame_id; 1219 request.render_frame_id = render_frame_id;
1219 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); 1220 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request);
1220 host_.OnMessageReceived(msg, filter_.get()); 1221 host_.OnMessageReceived(msg, filter_.get());
1221 KickOffRequest(); 1222 KickOffRequest();
1222 } 1223 }
1223 1224
1224 void ResourceDispatcherHostTest::MakeTestRequestWithResourceType( 1225 void ResourceDispatcherHostTest::MakeTestRequestWithResourceType(
1225 ResourceMessageFilter* filter, 1226 ResourceMessageFilter* filter,
1226 int render_view_id, 1227 int render_view_id,
1227 int request_id, 1228 int request_id,
1228 const GURL& url, 1229 const GURL& url,
1229 ResourceType type) { 1230 ResourceType type) {
1230 ResourceHostMsg_Request request = 1231 ResourceRequest request = CreateResourceRequest("GET", type, url);
1231 CreateResourceRequest("GET", type, url);
1232 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); 1232 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request);
1233 host_.OnMessageReceived(msg, filter); 1233 host_.OnMessageReceived(msg, filter);
1234 KickOffRequest(); 1234 KickOffRequest();
1235 } 1235 }
1236 1236
1237 void ResourceDispatcherHostTest::MakeWebContentsAssociatedTestRequest( 1237 void ResourceDispatcherHostTest::MakeWebContentsAssociatedTestRequest(
1238 int request_id, 1238 int request_id,
1239 const GURL& url) { 1239 const GURL& url) {
1240 MakeWebContentsAssociatedTestRequestWithResourceType( 1240 MakeWebContentsAssociatedTestRequestWithResourceType(
1241 request_id, url, RESOURCE_TYPE_SUB_RESOURCE); 1241 request_id, url, RESOURCE_TYPE_SUB_RESOURCE);
1242 } 1242 }
1243 1243
1244 void ResourceDispatcherHostTest:: 1244 void ResourceDispatcherHostTest::
1245 MakeWebContentsAssociatedTestRequestWithResourceType(int request_id, 1245 MakeWebContentsAssociatedTestRequestWithResourceType(int request_id,
1246 const GURL& url, 1246 const GURL& url,
1247 ResourceType type) { 1247 ResourceType type) {
1248 ResourceHostMsg_Request request = CreateResourceRequest("GET", type, url); 1248 ResourceRequest request = CreateResourceRequest("GET", type, url);
1249 request.origin_pid = web_contents_->GetRenderProcessHost()->GetID(); 1249 request.origin_pid = web_contents_->GetRenderProcessHost()->GetID();
1250 request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID(); 1250 request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID();
1251 ResourceHostMsg_RequestResource msg(web_contents_->GetRoutingID(), request_id, 1251 ResourceHostMsg_RequestResource msg(web_contents_->GetRoutingID(), request_id,
1252 request); 1252 request);
1253 host_.OnMessageReceived(msg, web_contents_filter_.get()); 1253 host_.OnMessageReceived(msg, web_contents_filter_.get());
1254 KickOffRequest(); 1254 KickOffRequest();
1255 } 1255 }
1256 1256
1257 void ResourceDispatcherHostTest::MakeTestRequestWithPriority( 1257 void ResourceDispatcherHostTest::MakeTestRequestWithPriority(
1258 int render_view_id, 1258 int render_view_id,
1259 int request_id, 1259 int request_id,
1260 net::RequestPriority priority) { 1260 net::RequestPriority priority) {
1261 MakeTestRequestWithPriorityAndRenderFrame(render_view_id, -1, request_id, 1261 MakeTestRequestWithPriorityAndRenderFrame(render_view_id, -1, request_id,
1262 priority); 1262 priority);
1263 } 1263 }
1264 1264
1265 void ResourceDispatcherHostTest::MakeTestRequestWithPriorityAndRenderFrame( 1265 void ResourceDispatcherHostTest::MakeTestRequestWithPriorityAndRenderFrame(
1266 int render_view_id, 1266 int render_view_id,
1267 int render_frame_id, 1267 int render_frame_id,
1268 int request_id, 1268 int request_id,
1269 net::RequestPriority priority) { 1269 net::RequestPriority priority) {
1270 ResourceHostMsg_Request request = CreateResourceRequest( 1270 ResourceRequest request = CreateResourceRequest(
1271 "GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority")); 1271 "GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority"));
1272 request.render_frame_id = render_frame_id; 1272 request.render_frame_id = render_frame_id;
1273 request.priority = priority; 1273 request.priority = priority;
1274 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); 1274 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request);
1275 host_.OnMessageReceived(msg, filter_.get()); 1275 host_.OnMessageReceived(msg, filter_.get());
1276 } 1276 }
1277 1277
1278 void ResourceDispatcherHostTest::MakeWebContentsAssociatedDownloadRequest( 1278 void ResourceDispatcherHostTest::MakeWebContentsAssociatedDownloadRequest(
1279 int request_id, 1279 int request_id,
1280 const GURL& url) { 1280 const GURL& url) {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1571 EXPECT_EQ(0, host_.pending_requests()); 1571 EXPECT_EQ(0, host_.pending_requests());
1572 EXPECT_EQ(1, network_delegate()->completed_requests()); 1572 EXPECT_EQ(1, network_delegate()->completed_requests());
1573 EXPECT_EQ(1, network_delegate()->canceled_requests()); 1573 EXPECT_EQ(1, network_delegate()->canceled_requests());
1574 EXPECT_EQ(0, network_delegate()->error_count()); 1574 EXPECT_EQ(0, network_delegate()->error_count());
1575 } 1575 }
1576 1576
1577 // If the filter has disappeared then detachable resources should continue to 1577 // If the filter has disappeared then detachable resources should continue to
1578 // load. 1578 // load.
1579 TEST_P(ResourceDispatcherHostTest, DeletedFilterDetached) { 1579 TEST_P(ResourceDispatcherHostTest, DeletedFilterDetached) {
1580 // test_url_1's data is available synchronously, so use 2 and 3. 1580 // test_url_1's data is available synchronously, so use 2 and 3.
1581 ResourceHostMsg_Request request_prefetch = CreateResourceRequest( 1581 ResourceRequest request_prefetch = CreateResourceRequest(
1582 "GET", RESOURCE_TYPE_PREFETCH, net::URLRequestTestJob::test_url_2()); 1582 "GET", RESOURCE_TYPE_PREFETCH, net::URLRequestTestJob::test_url_2());
1583 ResourceHostMsg_Request request_ping = CreateResourceRequest( 1583 ResourceRequest request_ping = CreateResourceRequest(
1584 "GET", RESOURCE_TYPE_PING, net::URLRequestTestJob::test_url_3()); 1584 "GET", RESOURCE_TYPE_PING, net::URLRequestTestJob::test_url_3());
1585 1585
1586 ResourceHostMsg_RequestResource msg_prefetch(0, 1, request_prefetch); 1586 ResourceHostMsg_RequestResource msg_prefetch(0, 1, request_prefetch);
1587 host_.OnMessageReceived(msg_prefetch, filter_.get()); 1587 host_.OnMessageReceived(msg_prefetch, filter_.get());
1588 ResourceHostMsg_RequestResource msg_ping(0, 2, request_ping); 1588 ResourceHostMsg_RequestResource msg_ping(0, 2, request_ping);
1589 host_.OnMessageReceived(msg_ping, filter_.get()); 1589 host_.OnMessageReceived(msg_ping, filter_.get());
1590 1590
1591 // Remove the filter before processing the requests by simulating channel 1591 // Remove the filter before processing the requests by simulating channel
1592 // closure. 1592 // closure.
1593 ResourceRequestInfoImpl* info_prefetch = ResourceRequestInfoImpl::ForRequest( 1593 ResourceRequestInfoImpl* info_prefetch = ResourceRequestInfoImpl::ForRequest(
(...skipping 28 matching lines...) Expand all
1622 1622
1623 EXPECT_EQ(0, host_.pending_requests()); 1623 EXPECT_EQ(0, host_.pending_requests());
1624 EXPECT_EQ(2, network_delegate()->completed_requests()); 1624 EXPECT_EQ(2, network_delegate()->completed_requests());
1625 EXPECT_EQ(0, network_delegate()->canceled_requests()); 1625 EXPECT_EQ(0, network_delegate()->canceled_requests());
1626 EXPECT_EQ(0, network_delegate()->error_count()); 1626 EXPECT_EQ(0, network_delegate()->error_count());
1627 } 1627 }
1628 1628
1629 // If the filter has disappeared (original process dies) then detachable 1629 // If the filter has disappeared (original process dies) then detachable
1630 // resources should continue to load, even when redirected. 1630 // resources should continue to load, even when redirected.
1631 TEST_P(ResourceDispatcherHostTest, DeletedFilterDetachedRedirect) { 1631 TEST_P(ResourceDispatcherHostTest, DeletedFilterDetachedRedirect) {
1632 ResourceHostMsg_Request request = CreateResourceRequest( 1632 ResourceRequest request = CreateResourceRequest(
1633 "GET", RESOURCE_TYPE_PREFETCH, 1633 "GET", RESOURCE_TYPE_PREFETCH,
1634 net::URLRequestTestJob::test_url_redirect_to_url_2()); 1634 net::URLRequestTestJob::test_url_redirect_to_url_2());
1635 1635
1636 ResourceHostMsg_RequestResource msg(0, 1, request); 1636 ResourceHostMsg_RequestResource msg(0, 1, request);
1637 host_.OnMessageReceived(msg, filter_.get()); 1637 host_.OnMessageReceived(msg, filter_.get());
1638 1638
1639 // Remove the filter before processing the request by simulating channel 1639 // Remove the filter before processing the request by simulating channel
1640 // closure. 1640 // closure.
1641 GlobalRequestID global_request_id(filter_->child_id(), 1); 1641 GlobalRequestID global_request_id(filter_->child_id(), 1);
1642 ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest( 1642 ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after
2778 2778
2779 // Restore, now that we've set up a transfer. 2779 // Restore, now that we've set up a transfer.
2780 SetBrowserClientForTesting(old_client); 2780 SetBrowserClientForTesting(old_client);
2781 2781
2782 // This second filter is used to emulate a second process. 2782 // This second filter is used to emulate a second process.
2783 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 2783 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
2784 2784
2785 int new_render_view_id = 1; 2785 int new_render_view_id = 1;
2786 int new_request_id = 2; 2786 int new_request_id = 2;
2787 2787
2788 ResourceHostMsg_Request request = 2788 ResourceRequest request = CreateResourceRequest(
2789 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 2789 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://other.com/blech"));
2790 GURL("http://other.com/blech"));
2791 request.transferred_request_child_id = filter_->child_id(); 2790 request.transferred_request_child_id = filter_->child_id();
2792 request.transferred_request_request_id = request_id; 2791 request.transferred_request_request_id = request_id;
2793 2792
2794 ResourceHostMsg_RequestResource transfer_request_msg( 2793 ResourceHostMsg_RequestResource transfer_request_msg(
2795 new_render_view_id, new_request_id, request); 2794 new_render_view_id, new_request_id, request);
2796 host_.OnMessageReceived(transfer_request_msg, second_filter.get()); 2795 host_.OnMessageReceived(transfer_request_msg, second_filter.get());
2797 base::MessageLoop::current()->RunUntilIdle(); 2796 base::MessageLoop::current()->RunUntilIdle();
2798 2797
2799 // Check generated messages. 2798 // Check generated messages.
2800 ResourceIPCAccumulator::ClassifiedMessages msgs; 2799 ResourceIPCAccumulator::ClassifiedMessages msgs;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
2858 2857
2859 // Restore, now that we've set up a transfer. 2858 // Restore, now that we've set up a transfer.
2860 SetBrowserClientForTesting(old_client); 2859 SetBrowserClientForTesting(old_client);
2861 2860
2862 // This second filter is used to emulate a second process. 2861 // This second filter is used to emulate a second process.
2863 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 2862 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
2864 2863
2865 int new_render_view_id = 1; 2864 int new_render_view_id = 1;
2866 int new_request_id = 2; 2865 int new_request_id = 2;
2867 2866
2868 ResourceHostMsg_Request request = CreateResourceRequest( 2867 ResourceRequest request = CreateResourceRequest(
2869 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("https://example.com/blech")); 2868 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("https://example.com/blech"));
2870 request.transferred_request_child_id = filter_->child_id(); 2869 request.transferred_request_child_id = filter_->child_id();
2871 request.transferred_request_request_id = request_id; 2870 request.transferred_request_request_id = request_id;
2872 2871
2873 // Before sending the transfer request, set up the mock cert store so 2872 // Before sending the transfer request, set up the mock cert store so
2874 // that the test can assert that the cert id is set during transfer. 2873 // that the test can assert that the cert id is set during transfer.
2875 mock_cert_store_.set_default_cert_id(1); 2874 mock_cert_store_.set_default_cert_id(1);
2876 2875
2877 ResourceHostMsg_RequestResource transfer_request_msg(new_render_view_id, 2876 ResourceHostMsg_RequestResource transfer_request_msg(new_render_view_id,
2878 new_request_id, request); 2877 new_request_id, request);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2946 2945
2947 // Restore, now that we've set up a transfer. 2946 // Restore, now that we've set up a transfer.
2948 SetBrowserClientForTesting(old_client); 2947 SetBrowserClientForTesting(old_client);
2949 2948
2950 // This second filter is used to emulate a second process. 2949 // This second filter is used to emulate a second process.
2951 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 2950 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
2952 2951
2953 // Transfer the first request. 2952 // Transfer the first request.
2954 int new_render_view_id = 1; 2953 int new_render_view_id = 1;
2955 int new_request_id = 5; 2954 int new_request_id = 5;
2956 ResourceHostMsg_Request request = 2955 ResourceRequest request = CreateResourceRequest(
2957 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 2956 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://example.com/blah"));
2958 GURL("http://example.com/blah"));
2959 request.transferred_request_child_id = filter_->child_id(); 2957 request.transferred_request_child_id = filter_->child_id();
2960 request.transferred_request_request_id = request_id; 2958 request.transferred_request_request_id = request_id;
2961 2959
2962 ResourceHostMsg_RequestResource transfer_request_msg( 2960 ResourceHostMsg_RequestResource transfer_request_msg(
2963 new_render_view_id, new_request_id, request); 2961 new_render_view_id, new_request_id, request);
2964 host_.OnMessageReceived(transfer_request_msg, second_filter.get()); 2962 host_.OnMessageReceived(transfer_request_msg, second_filter.get());
2965 base::MessageLoop::current()->RunUntilIdle(); 2963 base::MessageLoop::current()->RunUntilIdle();
2966 2964
2967 // Transfer the second request. 2965 // Transfer the second request.
2968 int new_second_request_id = 6; 2966 int new_second_request_id = 6;
2969 ResourceHostMsg_Request second_request = 2967 ResourceRequest second_request = CreateResourceRequest(
2970 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 2968 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://example.com/foo"));
2971 GURL("http://example.com/foo"));
2972 request.transferred_request_child_id = filter_->child_id(); 2969 request.transferred_request_child_id = filter_->child_id();
2973 request.transferred_request_request_id = second_request_id; 2970 request.transferred_request_request_id = second_request_id;
2974 2971
2975 ResourceHostMsg_RequestResource second_transfer_request_msg( 2972 ResourceHostMsg_RequestResource second_transfer_request_msg(
2976 new_render_view_id, new_second_request_id, second_request); 2973 new_render_view_id, new_second_request_id, second_request);
2977 host_.OnMessageReceived(second_transfer_request_msg, second_filter.get()); 2974 host_.OnMessageReceived(second_transfer_request_msg, second_filter.get());
2978 base::MessageLoop::current()->RunUntilIdle(); 2975 base::MessageLoop::current()->RunUntilIdle();
2979 2976
2980 // Check generated messages. 2977 // Check generated messages.
2981 ResourceIPCAccumulator::ClassifiedMessages msgs; 2978 ResourceIPCAccumulator::ClassifiedMessages msgs;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3035 3032
3036 // Restore, now that we've set up a transfer. 3033 // Restore, now that we've set up a transfer.
3037 SetBrowserClientForTesting(old_client); 3034 SetBrowserClientForTesting(old_client);
3038 3035
3039 // This second filter is used to emulate a second process. 3036 // This second filter is used to emulate a second process.
3040 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 3037 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
3041 3038
3042 int new_render_view_id = 1; 3039 int new_render_view_id = 1;
3043 int new_request_id = 2; 3040 int new_request_id = 2;
3044 3041
3045 ResourceHostMsg_Request request = 3042 ResourceRequest request = CreateResourceRequest(
3046 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 3043 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://other.com/blech"));
3047 GURL("http://other.com/blech"));
3048 request.transferred_request_child_id = filter_->child_id(); 3044 request.transferred_request_child_id = filter_->child_id();
3049 request.transferred_request_request_id = request_id; 3045 request.transferred_request_request_id = request_id;
3050 3046
3051 ResourceHostMsg_RequestResource transfer_request_msg( 3047 ResourceHostMsg_RequestResource transfer_request_msg(
3052 new_render_view_id, new_request_id, request); 3048 new_render_view_id, new_request_id, request);
3053 host_.OnMessageReceived(transfer_request_msg, second_filter.get()); 3049 host_.OnMessageReceived(transfer_request_msg, second_filter.get());
3054 base::MessageLoop::current()->RunUntilIdle(); 3050 base::MessageLoop::current()->RunUntilIdle();
3055 3051
3056 // Check generated messages. 3052 // Check generated messages.
3057 ResourceIPCAccumulator::ClassifiedMessages msgs; 3053 ResourceIPCAccumulator::ClassifiedMessages msgs;
(...skipping 29 matching lines...) Expand all
3087 // Temporarily replace ContentBrowserClient with one that will trigger the 3083 // Temporarily replace ContentBrowserClient with one that will trigger the
3088 // transfer navigation code paths. 3084 // transfer navigation code paths.
3089 TransfersAllNavigationsContentBrowserClient new_client; 3085 TransfersAllNavigationsContentBrowserClient new_client;
3090 ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client); 3086 ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
3091 3087
3092 // Create a first filter that can be deleted before the second one starts. 3088 // Create a first filter that can be deleted before the second one starts.
3093 { 3089 {
3094 scoped_refptr<ForwardingFilter> first_filter = MakeForwardingFilter(); 3090 scoped_refptr<ForwardingFilter> first_filter = MakeForwardingFilter();
3095 first_child_id = first_filter->child_id(); 3091 first_child_id = first_filter->child_id();
3096 3092
3097 ResourceHostMsg_Request first_request = 3093 ResourceRequest first_request = CreateResourceRequest(
3098 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 3094 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://example.com/blah"));
3099 GURL("http://example.com/blah"));
3100 3095
3101 ResourceHostMsg_RequestResource first_request_msg( 3096 ResourceHostMsg_RequestResource first_request_msg(
3102 render_view_id, request_id, first_request); 3097 render_view_id, request_id, first_request);
3103 host_.OnMessageReceived(first_request_msg, first_filter.get()); 3098 host_.OnMessageReceived(first_request_msg, first_filter.get());
3104 base::MessageLoop::current()->RunUntilIdle(); 3099 base::MessageLoop::current()->RunUntilIdle();
3105 3100
3106 // Now that we're blocked on the redirect, update the response and unblock 3101 // Now that we're blocked on the redirect, update the response and unblock
3107 // by telling the AsyncResourceHandler to follow the redirect. 3102 // by telling the AsyncResourceHandler to follow the redirect.
3108 SetResponse("HTTP/1.1 200 OK\n" 3103 SetResponse("HTTP/1.1 200 OK\n"
3109 "Content-Type: text/html\n\n", 3104 "Content-Type: text/html\n\n",
(...skipping 13 matching lines...) Expand all
3123 3118
3124 // Make sure we don't hold onto the ResourceMessageFilter after it is deleted. 3119 // Make sure we don't hold onto the ResourceMessageFilter after it is deleted.
3125 GlobalRequestID first_global_request_id(first_child_id, request_id); 3120 GlobalRequestID first_global_request_id(first_child_id, request_id);
3126 3121
3127 // This second filter is used to emulate a second process. 3122 // This second filter is used to emulate a second process.
3128 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 3123 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
3129 3124
3130 int new_render_view_id = 1; 3125 int new_render_view_id = 1;
3131 int new_request_id = 2; 3126 int new_request_id = 2;
3132 3127
3133 ResourceHostMsg_Request request = 3128 ResourceRequest request = CreateResourceRequest(
3134 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 3129 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://other.com/blech"));
3135 GURL("http://other.com/blech"));
3136 request.transferred_request_child_id = first_child_id; 3130 request.transferred_request_child_id = first_child_id;
3137 request.transferred_request_request_id = request_id; 3131 request.transferred_request_request_id = request_id;
3138 3132
3139 // For cleanup. 3133 // For cleanup.
3140 child_ids_.insert(second_filter->child_id()); 3134 child_ids_.insert(second_filter->child_id());
3141 ResourceHostMsg_RequestResource transfer_request_msg( 3135 ResourceHostMsg_RequestResource transfer_request_msg(
3142 new_render_view_id, new_request_id, request); 3136 new_render_view_id, new_request_id, request);
3143 host_.OnMessageReceived(transfer_request_msg, second_filter.get()); 3137 host_.OnMessageReceived(transfer_request_msg, second_filter.get());
3144 base::MessageLoop::current()->RunUntilIdle(); 3138 base::MessageLoop::current()->RunUntilIdle();
3145 3139
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3206 3200
3207 // Restore. 3201 // Restore.
3208 SetBrowserClientForTesting(old_client); 3202 SetBrowserClientForTesting(old_client);
3209 3203
3210 // This second filter is used to emulate a second process. 3204 // This second filter is used to emulate a second process.
3211 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter(); 3205 scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
3212 3206
3213 int new_render_view_id = 1; 3207 int new_render_view_id = 1;
3214 int new_request_id = 2; 3208 int new_request_id = 2;
3215 3209
3216 ResourceHostMsg_Request request = 3210 ResourceRequest request = CreateResourceRequest(
3217 CreateResourceRequest("GET", RESOURCE_TYPE_MAIN_FRAME, 3211 "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://other.com/blech"));
3218 GURL("http://other.com/blech"));
3219 request.transferred_request_child_id = filter_->child_id(); 3212 request.transferred_request_child_id = filter_->child_id();
3220 request.transferred_request_request_id = request_id; 3213 request.transferred_request_request_id = request_id;
3221 3214
3222 // For cleanup. 3215 // For cleanup.
3223 child_ids_.insert(second_filter->child_id()); 3216 child_ids_.insert(second_filter->child_id());
3224 ResourceHostMsg_RequestResource transfer_request_msg( 3217 ResourceHostMsg_RequestResource transfer_request_msg(
3225 new_render_view_id, new_request_id, request); 3218 new_render_view_id, new_request_id, request);
3226 host_.OnMessageReceived(transfer_request_msg, second_filter.get()); 3219 host_.OnMessageReceived(transfer_request_msg, second_filter.get());
3227 3220
3228 // Verify that we update the ResourceRequestInfo. 3221 // Verify that we update the ResourceRequestInfo.
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
3513 base::RunLoop().RunUntilIdle(); 3506 base::RunLoop().RunUntilIdle();
3514 3507
3515 // The file is no longer readable to the child and has been deleted. 3508 // The file is no longer readable to the child and has been deleted.
3516 EXPECT_FALSE(ChildProcessSecurityPolicyImpl::GetInstance()->CanReadFile( 3509 EXPECT_FALSE(ChildProcessSecurityPolicyImpl::GetInstance()->CanReadFile(
3517 filter_->child_id(), file_path)); 3510 filter_->child_id(), file_path));
3518 EXPECT_FALSE(base::PathExists(file_path)); 3511 EXPECT_FALSE(base::PathExists(file_path));
3519 } 3512 }
3520 3513
3521 TEST_P(ResourceDispatcherHostTest, DownloadToFile) { 3514 TEST_P(ResourceDispatcherHostTest, DownloadToFile) {
3522 // Make a request which downloads to file. 3515 // Make a request which downloads to file.
3523 ResourceHostMsg_Request request = CreateResourceRequest( 3516 ResourceRequest request = CreateResourceRequest(
3524 "GET", RESOURCE_TYPE_SUB_RESOURCE, net::URLRequestTestJob::test_url_1()); 3517 "GET", RESOURCE_TYPE_SUB_RESOURCE, net::URLRequestTestJob::test_url_1());
3525 request.download_to_file = true; 3518 request.download_to_file = true;
3526 ResourceHostMsg_RequestResource request_msg(0, 1, request); 3519 ResourceHostMsg_RequestResource request_msg(0, 1, request);
3527 host_.OnMessageReceived(request_msg, filter_.get()); 3520 host_.OnMessageReceived(request_msg, filter_.get());
3528 3521
3529 // Running the message loop until idle does not work because 3522 // Running the message loop until idle does not work because
3530 // RedirectToFileResourceHandler posts things to base::WorkerPool. Instead, 3523 // RedirectToFileResourceHandler posts things to base::WorkerPool. Instead,
3531 // wait for the ResourceMsg_RequestComplete to go out. Then run the event loop 3524 // wait for the ResourceMsg_RequestComplete to go out. Then run the event loop
3532 // until idle so the loader is gone. 3525 // until idle so the loader is gone.
3533 WaitForRequestComplete(); 3526 WaitForRequestComplete();
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
3904 return nullptr; 3897 return nullptr;
3905 } 3898 }
3906 3899
3907 INSTANTIATE_TEST_CASE_P( 3900 INSTANTIATE_TEST_CASE_P(
3908 ResourceDispatcherHostTests, 3901 ResourceDispatcherHostTests,
3909 ResourceDispatcherHostTest, 3902 ResourceDispatcherHostTest,
3910 testing::Values(TestConfig::kDefault, 3903 testing::Values(TestConfig::kDefault,
3911 TestConfig::kOptimizeIPCForSmallResourceEnabled)); 3904 TestConfig::kOptimizeIPCForSmallResourceEnabled));
3912 3905
3913 } // namespace content 3906 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.cc ('k') | content/browser/loader/resource_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698