| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 2362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2373 blink::WebURLRequest& request, | 2373 blink::WebURLRequest& request, |
| 2374 const blink::WebURLResponse& redirect_response) { | 2374 const blink::WebURLResponse& redirect_response) { |
| 2375 DCHECK(!frame_ || frame_ == frame); | 2375 DCHECK(!frame_ || frame_ == frame); |
| 2376 // The request my be empty during tests. | 2376 // The request my be empty during tests. |
| 2377 if (request.url().isEmpty()) | 2377 if (request.url().isEmpty()) |
| 2378 return; | 2378 return; |
| 2379 | 2379 |
| 2380 // Set the first party for cookies url if it has not been set yet (new | 2380 // Set the first party for cookies url if it has not been set yet (new |
| 2381 // requests). For redirects, it is updated by WebURLLoaderImpl. | 2381 // requests). For redirects, it is updated by WebURLLoaderImpl. |
| 2382 if (request.firstPartyForCookies().isEmpty()) { | 2382 if (request.firstPartyForCookies().isEmpty()) { |
| 2383 if (request.targetType() == blink::WebURLRequest::TargetIsMainFrame) { | 2383 if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel) { |
| 2384 request.setFirstPartyForCookies(request.url()); | 2384 request.setFirstPartyForCookies(request.url()); |
| 2385 } else { | 2385 } else { |
| 2386 request.setFirstPartyForCookies( | 2386 request.setFirstPartyForCookies( |
| 2387 frame->top()->document().firstPartyForCookies()); | 2387 frame->top()->document().firstPartyForCookies()); |
| 2388 } | 2388 } |
| 2389 } | 2389 } |
| 2390 | 2390 |
| 2391 WebFrame* top_frame = frame->top(); | 2391 WebFrame* top_frame = frame->top(); |
| 2392 if (!top_frame) | 2392 if (!top_frame) |
| 2393 top_frame = frame; | 2393 top_frame = frame; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2434 if (!custom_user_agent.isNull()) { | 2434 if (!custom_user_agent.isNull()) { |
| 2435 if (custom_user_agent.isEmpty()) | 2435 if (custom_user_agent.isEmpty()) |
| 2436 request.clearHTTPHeaderField("User-Agent"); | 2436 request.clearHTTPHeaderField("User-Agent"); |
| 2437 else | 2437 else |
| 2438 request.setHTTPHeaderField("User-Agent", custom_user_agent); | 2438 request.setHTTPHeaderField("User-Agent", custom_user_agent); |
| 2439 } | 2439 } |
| 2440 } | 2440 } |
| 2441 | 2441 |
| 2442 // Add the default accept header for frame request if it has not been set | 2442 // Add the default accept header for frame request if it has not been set |
| 2443 // already. | 2443 // already. |
| 2444 if ((request.targetType() == blink::WebURLRequest::TargetIsMainFrame || | 2444 if ((request.frameType() == blink::WebURLRequest::FrameTypeTopLevel || |
| 2445 request.targetType() == blink::WebURLRequest::TargetIsSubframe) && | 2445 request.frameType() == blink::WebURLRequest::FrameTypeNested) && |
| 2446 request.httpHeaderField(WebString::fromUTF8(kAcceptHeader)).isEmpty()) { | 2446 request.httpHeaderField(WebString::fromUTF8(kAcceptHeader)).isEmpty()) { |
| 2447 request.setHTTPHeaderField(WebString::fromUTF8(kAcceptHeader), | 2447 request.setHTTPHeaderField(WebString::fromUTF8(kAcceptHeader), |
| 2448 WebString::fromUTF8(kDefaultAcceptHeader)); | 2448 WebString::fromUTF8(kDefaultAcceptHeader)); |
| 2449 } | 2449 } |
| 2450 | 2450 |
| 2451 // Add an empty HTTP origin header for non GET methods if none is currently | 2451 // Add an empty HTTP origin header for non GET methods if none is currently |
| 2452 // present. | 2452 // present. |
| 2453 request.addHTTPOriginIfNeeded(WebString()); | 2453 request.addHTTPOriginIfNeeded(WebString()); |
| 2454 | 2454 |
| 2455 // Attach |should_replace_current_entry| state to requests so that, should | 2455 // Attach |should_replace_current_entry| state to requests so that, should |
| 2456 // this navigation later require a request transfer, all state is preserved | 2456 // this navigation later require a request transfer, all state is preserved |
| 2457 // when it is re-created in the new process. | 2457 // when it is re-created in the new process. |
| 2458 bool should_replace_current_entry = false; | 2458 bool should_replace_current_entry = false; |
| 2459 if (navigation_state->is_content_initiated()) { | 2459 if (navigation_state->is_content_initiated()) { |
| 2460 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); | 2460 should_replace_current_entry = data_source->replacesCurrentHistoryItem(); |
| 2461 } else { | 2461 } else { |
| 2462 // If the navigation is browser-initiated, the NavigationState contains the | 2462 // If the navigation is browser-initiated, the NavigationState contains the |
| 2463 // correct value instead of the WebDataSource. | 2463 // correct value instead of the WebDataSource. |
| 2464 // | 2464 // |
| 2465 // TODO(davidben): Avoid this awkward duplication of state. See comment on | 2465 // TODO(davidben): Avoid this awkward duplication of state. See comment on |
| 2466 // NavigationState::should_replace_current_entry(). | 2466 // NavigationState::should_replace_current_entry(). |
| 2467 should_replace_current_entry = | 2467 should_replace_current_entry = |
| 2468 navigation_state->should_replace_current_entry(); | 2468 navigation_state->should_replace_current_entry(); |
| 2469 } | 2469 } |
| 2470 | 2470 |
| 2471 int provider_id = kInvalidServiceWorkerProviderId; | 2471 int provider_id = kInvalidServiceWorkerProviderId; |
| 2472 if (request.targetType() == blink::WebURLRequest::TargetIsMainFrame || | 2472 if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel || |
| 2473 request.targetType() == blink::WebURLRequest::TargetIsSubframe) { | 2473 request.frameType() == blink::WebURLRequest::FrameTypeNested) { |
| 2474 // |provisionalDataSource| may be null in some content::ResourceFetcher | 2474 // |provisionalDataSource| may be null in some content::ResourceFetcher |
| 2475 // use cases, we don't hook those requests. | 2475 // use cases, we don't hook those requests. |
| 2476 if (frame->provisionalDataSource()) { | 2476 if (frame->provisionalDataSource()) { |
| 2477 ServiceWorkerNetworkProvider* provider = | 2477 ServiceWorkerNetworkProvider* provider = |
| 2478 ServiceWorkerNetworkProvider::FromDocumentState( | 2478 ServiceWorkerNetworkProvider::FromDocumentState( |
| 2479 DocumentState::FromDataSource(frame->provisionalDataSource())); | 2479 DocumentState::FromDataSource(frame->provisionalDataSource())); |
| 2480 provider_id = provider->provider_id(); | 2480 provider_id = provider->provider_id(); |
| 2481 } | 2481 } |
| 2482 } else if (frame->dataSource()) { | 2482 } else if (frame->dataSource()) { |
| 2483 ServiceWorkerNetworkProvider* provider = | 2483 ServiceWorkerNetworkProvider* provider = |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2506 extra_data->set_transferred_request_request_id( | 2506 extra_data->set_transferred_request_request_id( |
| 2507 navigation_state->transferred_request_request_id()); | 2507 navigation_state->transferred_request_request_id()); |
| 2508 extra_data->set_service_worker_provider_id(provider_id); | 2508 extra_data->set_service_worker_provider_id(provider_id); |
| 2509 request.setExtraData(extra_data); | 2509 request.setExtraData(extra_data); |
| 2510 | 2510 |
| 2511 DocumentState* top_document_state = | 2511 DocumentState* top_document_state = |
| 2512 DocumentState::FromDataSource(top_data_source); | 2512 DocumentState::FromDataSource(top_data_source); |
| 2513 if (top_document_state) { | 2513 if (top_document_state) { |
| 2514 // TODO(gavinp): separate out prefetching and prerender field trials | 2514 // TODO(gavinp): separate out prefetching and prerender field trials |
| 2515 // if the rel=prerender rel type is sticking around. | 2515 // if the rel=prerender rel type is sticking around. |
| 2516 if (request.targetType() == WebURLRequest::TargetIsPrefetch) | 2516 if (request.requestContext() == WebURLRequest::RequestContextPrefetch) |
| 2517 top_document_state->set_was_prefetcher(true); | 2517 top_document_state->set_was_prefetcher(true); |
| 2518 | 2518 |
| 2519 if (was_after_preconnect_request) | 2519 if (was_after_preconnect_request) |
| 2520 top_document_state->set_was_after_preconnect_request(true); | 2520 top_document_state->set_was_after_preconnect_request(true); |
| 2521 } | 2521 } |
| 2522 | 2522 |
| 2523 // This is an instance where we embed a copy of the routing id | 2523 // This is an instance where we embed a copy of the routing id |
| 2524 // into the data portion of the message. This can cause problems if we | 2524 // into the data portion of the message. This can cause problems if we |
| 2525 // don't register this id on the browser side, since the download manager | 2525 // don't register this id on the browser side, since the download manager |
| 2526 // expects to find a RenderViewHost based off the id. | 2526 // expects to find a RenderViewHost based off the id. |
| (...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3604 | 3604 |
| 3605 #if defined(ENABLE_BROWSER_CDMS) | 3605 #if defined(ENABLE_BROWSER_CDMS) |
| 3606 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 3606 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
| 3607 if (!cdm_manager_) | 3607 if (!cdm_manager_) |
| 3608 cdm_manager_ = new RendererCdmManager(this); | 3608 cdm_manager_ = new RendererCdmManager(this); |
| 3609 return cdm_manager_; | 3609 return cdm_manager_; |
| 3610 } | 3610 } |
| 3611 #endif // defined(ENABLE_BROWSER_CDMS) | 3611 #endif // defined(ENABLE_BROWSER_CDMS) |
| 3612 | 3612 |
| 3613 } // namespace content | 3613 } // namespace content |
| OLD | NEW |