Chromium Code Reviews| 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading | 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading |
| 6 | 6 |
| 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1315 // Sync loads should have maximum priority and should be the only | 1315 // Sync loads should have maximum priority and should be the only |
| 1316 // requets that have the ignore limits flag set. | 1316 // requets that have the ignore limits flag set. |
| 1317 if (is_sync_load) { | 1317 if (is_sync_load) { |
| 1318 DCHECK_EQ(request_data.priority, net::MAXIMUM_PRIORITY); | 1318 DCHECK_EQ(request_data.priority, net::MAXIMUM_PRIORITY); |
| 1319 DCHECK_NE(load_flags & net::LOAD_IGNORE_LIMITS, 0); | 1319 DCHECK_NE(load_flags & net::LOAD_IGNORE_LIMITS, 0); |
| 1320 } else { | 1320 } else { |
| 1321 DCHECK_EQ(load_flags & net::LOAD_IGNORE_LIMITS, 0); | 1321 DCHECK_EQ(load_flags & net::LOAD_IGNORE_LIMITS, 0); |
| 1322 } | 1322 } |
| 1323 new_request->SetLoadFlags(load_flags); | 1323 new_request->SetLoadFlags(load_flags); |
| 1324 | 1324 |
| 1325 bool is_lofi; | |
|
mmenke
2015/09/29 16:35:57
Maybe is_lofi -> use_lofi / using_lofi / is_using_
megjablon
2015/09/29 21:20:07
Done.
| |
| 1326 if (request_data.lofi_state == LOFI_DEFAULT && | |
|
mmenke
2015/09/29 16:35:57
I think this code makes more sense if LOFI_DEFAULT
megjablon
2015/09/29 21:20:07
Done.
| |
| 1327 (load_flags & net::LOAD_MAIN_FRAME) != 0 && delegate_) { | |
|
mmenke
2015/09/29 16:35:57
I don't see why we shouldn't call into the delegat
megjablon
2015/09/29 21:20:07
Done.
| |
| 1328 is_lofi = delegate_->ShouldEnableLoFiMode(new_request.get(), | |
| 1329 resource_context); | |
| 1330 } else if (request_data.lofi_state == LOFI_ON) { | |
| 1331 is_lofi = true; | |
| 1332 } else { | |
| 1333 is_lofi = false; | |
|
mmenke
2015/09/29 16:35:57
Question: Do favicons also inherit the lofi bit f
megjablon
2015/09/29 21:20:07
The proxy has logic so that icons and button image
| |
| 1334 } | |
| 1335 | |
| 1325 // Make extra info and read footer (contains request ID). | 1336 // Make extra info and read footer (contains request ID). |
| 1326 ResourceRequestInfoImpl* extra_info = new ResourceRequestInfoImpl( | 1337 ResourceRequestInfoImpl* extra_info = new ResourceRequestInfoImpl( |
| 1327 process_type, child_id, route_id, | 1338 process_type, child_id, route_id, |
| 1328 -1, // frame_tree_node_id | 1339 -1, // frame_tree_node_id |
| 1329 request_data.origin_pid, | 1340 request_data.origin_pid, |
| 1330 request_id, | 1341 request_id, |
| 1331 request_data.render_frame_id, | 1342 request_data.render_frame_id, |
| 1332 request_data.is_main_frame, | 1343 request_data.is_main_frame, |
| 1333 request_data.parent_is_main_frame, | 1344 request_data.parent_is_main_frame, |
| 1334 request_data.parent_render_frame_id, | 1345 request_data.parent_render_frame_id, |
| 1335 request_data.resource_type, | 1346 request_data.resource_type, |
| 1336 request_data.transition_type, | 1347 request_data.transition_type, |
| 1337 request_data.should_replace_current_entry, | 1348 request_data.should_replace_current_entry, |
| 1338 false, // is download | 1349 false, // is download |
| 1339 false, // is stream | 1350 false, // is stream |
| 1340 allow_download, | 1351 allow_download, |
| 1341 request_data.has_user_gesture, | 1352 request_data.has_user_gesture, |
| 1342 request_data.enable_load_timing, | 1353 request_data.enable_load_timing, |
| 1343 request_data.enable_upload_progress, | 1354 request_data.enable_upload_progress, |
| 1344 do_not_prompt_for_login, | 1355 do_not_prompt_for_login, |
| 1345 request_data.referrer_policy, | 1356 request_data.referrer_policy, |
| 1346 request_data.visiblity_state, | 1357 request_data.visiblity_state, |
| 1347 resource_context, filter_->GetWeakPtr(), | 1358 resource_context, filter_->GetWeakPtr(), |
| 1348 report_raw_headers, | 1359 report_raw_headers, |
| 1349 !is_sync_load); | 1360 !is_sync_load, |
| 1361 is_lofi); | |
| 1350 // Request takes ownership. | 1362 // Request takes ownership. |
| 1351 extra_info->AssociateWithRequest(new_request.get()); | 1363 extra_info->AssociateWithRequest(new_request.get()); |
| 1352 | 1364 |
| 1353 if (new_request->url().SchemeIs(url::kBlobScheme)) { | 1365 if (new_request->url().SchemeIs(url::kBlobScheme)) { |
| 1354 // Hang on to a reference to ensure the blob is not released prior | 1366 // Hang on to a reference to ensure the blob is not released prior |
| 1355 // to the job being started. | 1367 // to the job being started. |
| 1356 storage::BlobProtocolHandler::SetRequestedBlobDataHandle( | 1368 storage::BlobProtocolHandler::SetRequestedBlobDataHandle( |
| 1357 new_request.get(), | 1369 new_request.get(), |
| 1358 filter_->blob_storage_context()->context()->GetBlobDataFromPublicURL( | 1370 filter_->blob_storage_context()->context()->GetBlobDataFromPublicURL( |
| 1359 new_request->url())); | 1371 new_request->url())); |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1615 download, // allow_download | 1627 download, // allow_download |
| 1616 false, // has_user_gesture | 1628 false, // has_user_gesture |
| 1617 false, // enable_load_timing | 1629 false, // enable_load_timing |
| 1618 false, // enable_upload_progress | 1630 false, // enable_upload_progress |
| 1619 false, // do_not_prompt_for_login | 1631 false, // do_not_prompt_for_login |
| 1620 blink::WebReferrerPolicyDefault, | 1632 blink::WebReferrerPolicyDefault, |
| 1621 blink::WebPageVisibilityStateVisible, | 1633 blink::WebPageVisibilityStateVisible, |
| 1622 context, | 1634 context, |
| 1623 base::WeakPtr<ResourceMessageFilter>(), // filter | 1635 base::WeakPtr<ResourceMessageFilter>(), // filter |
| 1624 false, // report_raw_headers | 1636 false, // report_raw_headers |
| 1625 true); // is_async | 1637 true, // is_async |
| 1638 false); // is_lofi | |
| 1626 } | 1639 } |
| 1627 | 1640 |
| 1628 void ResourceDispatcherHostImpl::OnRenderViewHostCreated(int child_id, | 1641 void ResourceDispatcherHostImpl::OnRenderViewHostCreated(int child_id, |
| 1629 int route_id, | 1642 int route_id, |
| 1630 bool is_visible, | 1643 bool is_visible, |
| 1631 bool is_audible) { | 1644 bool is_audible) { |
| 1632 scheduler_->OnClientCreated(child_id, route_id, is_visible, is_audible); | 1645 scheduler_->OnClientCreated(child_id, route_id, is_visible, is_audible); |
| 1633 } | 1646 } |
| 1634 | 1647 |
| 1635 void ResourceDispatcherHostImpl::OnRenderViewHostDeleted( | 1648 void ResourceDispatcherHostImpl::OnRenderViewHostDeleted( |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2026 new_request->set_upload(UploadDataStreamBuilder::Build( | 2039 new_request->set_upload(UploadDataStreamBuilder::Build( |
| 2027 info.request_body.get(), | 2040 info.request_body.get(), |
| 2028 blob_context, | 2041 blob_context, |
| 2029 nullptr, // file_system_context | 2042 nullptr, // file_system_context |
| 2030 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE) | 2043 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE) |
| 2031 .get())); | 2044 .get())); |
| 2032 } | 2045 } |
| 2033 | 2046 |
| 2034 request_id_--; | 2047 request_id_--; |
| 2035 | 2048 |
| 2049 bool is_lofi; | |
| 2050 if (info.common_params.lofi_state == LOFI_DEFAULT && delegate_) { | |
| 2051 is_lofi = delegate_->ShouldEnableLoFiMode(new_request.get(), | |
| 2052 resource_context); | |
| 2053 } else if (info.common_params.lofi_state == LOFI_ON) { | |
| 2054 is_lofi = true; | |
| 2055 } else { | |
| 2056 is_lofi = false; | |
| 2057 } | |
| 2058 | |
| 2036 // Make extra info and read footer (contains request ID). | 2059 // Make extra info and read footer (contains request ID). |
| 2037 // | 2060 // |
| 2038 // TODO(davidben): Associate the request with the FrameTreeNode and/or tab so | 2061 // TODO(davidben): Associate the request with the FrameTreeNode and/or tab so |
| 2039 // that IO thread -> UI thread hops will work. | 2062 // that IO thread -> UI thread hops will work. |
| 2040 ResourceRequestInfoImpl* extra_info = new ResourceRequestInfoImpl( | 2063 ResourceRequestInfoImpl* extra_info = new ResourceRequestInfoImpl( |
| 2041 PROCESS_TYPE_BROWSER, | 2064 PROCESS_TYPE_BROWSER, |
| 2042 -1, // child_id | 2065 -1, // child_id |
| 2043 -1, // route_id | 2066 -1, // route_id |
| 2044 info.frame_tree_node_id, | 2067 info.frame_tree_node_id, |
| 2045 -1, // request_data.origin_pid, | 2068 -1, // request_data.origin_pid, |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 2061 false, // enable_upload_progress | 2084 false, // enable_upload_progress |
| 2062 false, // do_not_prompt_for_login | 2085 false, // do_not_prompt_for_login |
| 2063 info.common_params.referrer.policy, | 2086 info.common_params.referrer.policy, |
| 2064 // TODO(davidben): This is only used for prerenders. Replace | 2087 // TODO(davidben): This is only used for prerenders. Replace |
| 2065 // is_showing with something for that. Or maybe it just comes from the | 2088 // is_showing with something for that. Or maybe it just comes from the |
| 2066 // same mechanism as the cookie one. | 2089 // same mechanism as the cookie one. |
| 2067 blink::WebPageVisibilityStateVisible, | 2090 blink::WebPageVisibilityStateVisible, |
| 2068 resource_context, | 2091 resource_context, |
| 2069 base::WeakPtr<ResourceMessageFilter>(), // filter | 2092 base::WeakPtr<ResourceMessageFilter>(), // filter |
| 2070 false, // request_data.report_raw_headers | 2093 false, // request_data.report_raw_headers |
| 2071 true); | 2094 true, |
| 2095 is_lofi); | |
| 2072 // Request takes ownership. | 2096 // Request takes ownership. |
| 2073 extra_info->AssociateWithRequest(new_request.get()); | 2097 extra_info->AssociateWithRequest(new_request.get()); |
| 2074 | 2098 |
| 2075 if (new_request->url().SchemeIs(url::kBlobScheme)) { | 2099 if (new_request->url().SchemeIs(url::kBlobScheme)) { |
| 2076 // Hang on to a reference to ensure the blob is not released prior | 2100 // Hang on to a reference to ensure the blob is not released prior |
| 2077 // to the job being started. | 2101 // to the job being started. |
| 2078 ChromeBlobStorageContext* blob_context = | 2102 ChromeBlobStorageContext* blob_context = |
| 2079 GetChromeBlobStorageContextForResourceContext(resource_context); | 2103 GetChromeBlobStorageContextForResourceContext(resource_context); |
| 2080 storage::BlobProtocolHandler::SetRequestedBlobDataHandle( | 2104 storage::BlobProtocolHandler::SetRequestedBlobDataHandle( |
| 2081 new_request.get(), | 2105 new_request.get(), |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2417 load_flags |= net::LOAD_PREFETCH; | 2441 load_flags |= net::LOAD_PREFETCH; |
| 2418 } | 2442 } |
| 2419 | 2443 |
| 2420 if (is_sync_load) | 2444 if (is_sync_load) |
| 2421 load_flags |= net::LOAD_IGNORE_LIMITS; | 2445 load_flags |= net::LOAD_IGNORE_LIMITS; |
| 2422 | 2446 |
| 2423 return load_flags; | 2447 return load_flags; |
| 2424 } | 2448 } |
| 2425 | 2449 |
| 2426 } // namespace content | 2450 } // namespace content |
| OLD | NEW |