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 |