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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1425823002: (DEPRECATED) Send navigation_start to browser process in DidStartProvisionalLoad (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Browser nav-start attached to RequestExtraData Created 5 years, 1 month 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 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 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 // passed back to the browser in the DidCommitProvisionalLoad and the 449 // passed back to the browser in the DidCommitProvisionalLoad and the
450 // DocumentLoadComplete IPCs. 450 // DocumentLoadComplete IPCs.
451 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks(); 451 base::TimeDelta ui_timestamp = common_params.ui_timestamp - base::TimeTicks();
452 request.setUiStartTime(ui_timestamp.InSecondsF()); 452 request.setUiStartTime(ui_timestamp.InSecondsF());
453 request.setInputPerfMetricReportPolicy( 453 request.setInputPerfMetricReportPolicy(
454 static_cast<WebURLRequest::InputToLoadPerfMetricReportPolicy>( 454 static_cast<WebURLRequest::InputToLoadPerfMetricReportPolicy>(
455 common_params.report_type)); 455 common_params.report_type));
456 return request; 456 return request;
457 } 457 }
458 458
459 void UpdateFrameNavigationTiming(WebFrame* frame, 459 base::TimeTicks SanitizeNavigationTiming(
460 base::TimeTicks browser_navigation_start, 460 base::TimeTicks browser_navigation_start) {
461 base::TimeTicks renderer_navigation_start) {
462 // The browser provides the navigation_start time to bootstrap the 461 // The browser provides the navigation_start time to bootstrap the
463 // Navigation Timing information for the browser-initiated navigations. In 462 // Navigation Timing information for the browser-initiated navigations. In
464 // case of cross-process navigations, this carries over the time of 463 // case of cross-process navigations, this carries over the time of
465 // finishing the onbeforeunload handler of the previous page. 464 // finishing the onbeforeunload handler of the previous page.
465 // |browser_navigation_start| is likely before this process existed, so we
466 // can't use InterProcessTimeTicksConverter. We need at least to ensure
467 // that the browser-side navigation start we set is not later than the one
468 // on the renderer side.
469 base::TimeTicks renderer_navigation_start = base::TimeTicks::Now();
466 DCHECK(!browser_navigation_start.is_null()); 470 DCHECK(!browser_navigation_start.is_null());
467 if (frame->provisionalDataSource()) { 471 base::TimeTicks navigation_start =
468 // |browser_navigation_start| is likely before this process existed, so we 472 std::min(browser_navigation_start, renderer_navigation_start);
469 // can't use InterProcessTimeTicksConverter. We need at least to ensure 473 // TODO(csharrison) UMA log:
470 // that the browser-side navigation start we set is not later than the one 474 // |renderer_navigation_start - browser_navigation_start|
471 // on the renderer side. 475 return navigation_start;
472 base::TimeTicks navigation_start = std::min( 476 }
473 browser_navigation_start, renderer_navigation_start); 477
478 // Update the navigation start based on a better value recieved from the
479 // browser. This can be null if the timestamp should not be updated.
480 void UpdateFrameNavigationTiming(WebFrame* frame,
481 base::TimeTicks updated_navigation_start) {
482 if (frame->provisionalDataSource() && !updated_navigation_start.is_null()) {
474 double navigation_start_seconds = 483 double navigation_start_seconds =
475 (navigation_start - base::TimeTicks()).InSecondsF(); 484 (updated_navigation_start - base::TimeTicks()).InSecondsF();
476 frame->provisionalDataSource()->setNavigationStartTime( 485 frame->provisionalDataSource()->setNavigationStartTime(
477 navigation_start_seconds); 486 navigation_start_seconds);
478 // TODO(clamy): We need to provide additional timing values for the 487 // TODO(clamy): We need to provide additional timing values for the
479 // Navigation Timing API to work with browser-side navigations. 488 // Navigation Timing API to work with browser-side navigations.
480 } 489 }
481 } 490 }
482 491
492
483 // PlzNavigate 493 // PlzNavigate
484 CommonNavigationParams MakeCommonNavigationParams( 494 CommonNavigationParams MakeCommonNavigationParams(
485 blink::WebURLRequest* request, 495 blink::WebURLRequest* request,
486 bool should_replace_current_entry) { 496 bool should_replace_current_entry,
497 const base::TimeTicks& navigation_start) {
487 const RequestExtraData kEmptyData; 498 const RequestExtraData kEmptyData;
488 const RequestExtraData* extra_data = 499 const RequestExtraData* extra_data =
489 static_cast<RequestExtraData*>(request->extraData()); 500 static_cast<RequestExtraData*>(request->extraData());
490 if (!extra_data) 501 if (!extra_data)
491 extra_data = &kEmptyData; 502 extra_data = &kEmptyData;
492 Referrer referrer( 503 Referrer referrer(
493 GURL(request->httpHeaderField(WebString::fromUTF8("Referer")).latin1()), 504 GURL(request->httpHeaderField(WebString::fromUTF8("Referer")).latin1()),
494 request->referrerPolicy()); 505 request->referrerPolicy());
495 506
496 // Set the ui timestamp for this navigation. Currently the timestamp here is 507 // Set the ui timestamp for this navigation. Currently the timestamp here is
497 // only non empty when the navigation was triggered by an Android intent, or 508 // only non empty when the navigation was triggered by an Android intent, or
498 // by the user clicking on a link. The timestamp is converted from a double 509 // by the user clicking on a link. The timestamp is converted from a double
499 // version supported by blink. It will be passed back to the renderer in the 510 // version supported by blink. It will be passed back to the renderer in the
500 // CommitNavigation IPC, and then back to the browser again in the 511 // CommitNavigation IPC, and then back to the browser again in the
501 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. 512 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs.
502 base::TimeTicks ui_timestamp = 513 base::TimeTicks ui_timestamp =
503 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime()); 514 base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime());
504 FrameMsg_UILoadMetricsReportType::Value report_type = 515 FrameMsg_UILoadMetricsReportType::Value report_type =
505 static_cast<FrameMsg_UILoadMetricsReportType::Value>( 516 static_cast<FrameMsg_UILoadMetricsReportType::Value>(
506 request->inputPerfMetricReportPolicy()); 517 request->inputPerfMetricReportPolicy());
507 return CommonNavigationParams( 518 return CommonNavigationParams(
508 request->url(), referrer, extra_data->transition_type(), 519 request->url(), referrer, extra_data->transition_type(),
509 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, 520 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry,
510 ui_timestamp, report_type, GURL(), GURL(), LOFI_UNSPECIFIED); 521 ui_timestamp, report_type, GURL(), GURL(), LOFI_UNSPECIFIED,
522 navigation_start);
511 } 523 }
512 524
513 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) 525 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID)
514 media::Context3D GetSharedMainThreadContext3D() { 526 media::Context3D GetSharedMainThreadContext3D() {
515 cc::ContextProvider* provider = 527 cc::ContextProvider* provider =
516 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); 528 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
517 if (!provider) 529 if (!provider)
518 return media::Context3D(); 530 return media::Context3D();
519 return media::Context3D(provider->ContextGL(), provider->GrContext()); 531 return media::Context3D(provider->ContextGL(), provider->GrContext());
520 } 532 }
(...skipping 2171 matching lines...) Expand 10 before | Expand all | Expand 10 after
2692 WebUserGestureIndicator::isProcessingUserGesture() ? 2704 WebUserGestureIndicator::isProcessingUserGesture() ?
2693 NavigationGestureUser : NavigationGestureAuto); 2705 NavigationGestureUser : NavigationGestureAuto);
2694 } else if (ds->replacesCurrentHistoryItem()) { 2706 } else if (ds->replacesCurrentHistoryItem()) {
2695 // Subframe navigations that don't add session history items must be 2707 // Subframe navigations that don't add session history items must be
2696 // marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we 2708 // marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we
2697 // handle loading of error pages. 2709 // handle loading of error pages.
2698 static_cast<NavigationStateImpl*>(document_state->navigation_state()) 2710 static_cast<NavigationStateImpl*>(document_state->navigation_state())
2699 ->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME); 2711 ->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME);
2700 } 2712 }
2701 2713
2714 // Get the renderer navigation start in TimeTicks format. This will be
2715 // lossy because blink converts TimeTicks internal int64 representation to a
2716 // double.
2717 DCHECK(ds->getNavigationStartTime());
2718 base::TimeTicks navigation_start = base::TimeTicks::FromInternalValue(
2719 ds->getNavigationStartTime() * base::Time::kMicrosecondsPerSecond);
2720 // See if we have a better timestamp from a browser initiated navigation.
2721 // If so, override it. This will be propogated to blink after the request has
2722 // been issued.
2723 if (ds->request().extraData()) {
2724 RequestExtraData* extra_data =
2725 static_cast<RequestExtraData*>(ds->request().extraData());
2726 if (!extra_data->browser_navigation_start().is_null())
2727 navigation_start = extra_data->browser_navigation_start();
2728 }
2729
2702 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), 2730 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
2703 DidStartProvisionalLoad(frame)); 2731 DidStartProvisionalLoad(frame));
2704 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad()); 2732 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad());
2705 2733
2706 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( 2734 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame(
2707 routing_id_, ds->request().url())); 2735 routing_id_, ds->request().url(), navigation_start));
2708 } 2736 }
2709 2737
2710 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( 2738 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
2711 blink::WebLocalFrame* frame) { 2739 blink::WebLocalFrame* frame) {
2712 DCHECK(!frame_ || frame_ == frame); 2740 DCHECK(!frame_ || frame_ == frame);
2713 render_view_->history_controller()->RemoveChildrenForRedirect(this); 2741 render_view_->history_controller()->RemoveChildrenForRedirect(this);
2714 } 2742 }
2715 2743
2716 void RenderFrameImpl::didFailProvisionalLoad( 2744 void RenderFrameImpl::didFailProvisionalLoad(
2717 blink::WebLocalFrame* frame, 2745 blink::WebLocalFrame* frame,
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
3345 3373
3346 // The request's extra data may indicate that we should set a custom user 3374 // The request's extra data may indicate that we should set a custom user
3347 // agent. This needs to be done here, after WebKit is through with setting the 3375 // agent. This needs to be done here, after WebKit is through with setting the
3348 // user agent on its own. Similarly, it may indicate that we should set an 3376 // user agent on its own. Similarly, it may indicate that we should set an
3349 // X-Requested-With header. This must be done here to avoid breaking CORS 3377 // X-Requested-With header. This must be done here to avoid breaking CORS
3350 // checks. 3378 // checks.
3351 // PlzNavigate: there may also be a stream url associated with the request. 3379 // PlzNavigate: there may also be a stream url associated with the request.
3352 WebString custom_user_agent; 3380 WebString custom_user_agent;
3353 WebString requested_with; 3381 WebString requested_with;
3354 scoped_ptr<StreamOverrideParameters> stream_override; 3382 scoped_ptr<StreamOverrideParameters> stream_override;
3383 base::TimeTicks navigation_start;
3355 if (request.extraData()) { 3384 if (request.extraData()) {
3356 RequestExtraData* old_extra_data = 3385 RequestExtraData* old_extra_data =
3357 static_cast<RequestExtraData*>(request.extraData()); 3386 static_cast<RequestExtraData*>(request.extraData());
3358 3387
3388 navigation_start = old_extra_data->browser_navigation_start();
3359 custom_user_agent = old_extra_data->custom_user_agent(); 3389 custom_user_agent = old_extra_data->custom_user_agent();
3360 if (!custom_user_agent.isNull()) { 3390 if (!custom_user_agent.isNull()) {
3361 if (custom_user_agent.isEmpty()) 3391 if (custom_user_agent.isEmpty())
3362 request.clearHTTPHeaderField("User-Agent"); 3392 request.clearHTTPHeaderField("User-Agent");
3363 else 3393 else
3364 request.setHTTPHeaderField("User-Agent", custom_user_agent); 3394 request.setHTTPHeaderField("User-Agent", custom_user_agent);
3365 } 3395 }
3366 3396
3367 requested_with = old_extra_data->requested_with(); 3397 requested_with = old_extra_data->requested_with();
3368 if (!requested_with.isNull()) { 3398 if (!requested_with.isNull()) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
3443 extra_data->set_allow_download( 3473 extra_data->set_allow_download(
3444 navigation_state->common_params().allow_download); 3474 navigation_state->common_params().allow_download);
3445 extra_data->set_transition_type(transition_type); 3475 extra_data->set_transition_type(transition_type);
3446 extra_data->set_should_replace_current_entry(should_replace_current_entry); 3476 extra_data->set_should_replace_current_entry(should_replace_current_entry);
3447 extra_data->set_transferred_request_child_id( 3477 extra_data->set_transferred_request_child_id(
3448 navigation_state->start_params().transferred_request_child_id); 3478 navigation_state->start_params().transferred_request_child_id);
3449 extra_data->set_transferred_request_request_id( 3479 extra_data->set_transferred_request_request_id(
3450 navigation_state->start_params().transferred_request_request_id); 3480 navigation_state->start_params().transferred_request_request_id);
3451 extra_data->set_service_worker_provider_id(provider_id); 3481 extra_data->set_service_worker_provider_id(provider_id);
3452 extra_data->set_stream_override(stream_override.Pass()); 3482 extra_data->set_stream_override(stream_override.Pass());
3483 extra_data->set_browser_navigation_start(navigation_start);
3453 if (request.loFiState() != WebURLRequest::LoFiUnspecified) 3484 if (request.loFiState() != WebURLRequest::LoFiUnspecified)
3454 extra_data->set_lofi_state(static_cast<LoFiState>(request.loFiState())); 3485 extra_data->set_lofi_state(static_cast<LoFiState>(request.loFiState()));
3455 else if (is_main_frame_ && !navigation_state->request_committed()) 3486 else if (is_main_frame_ && !navigation_state->request_committed())
3456 extra_data->set_lofi_state(navigation_state->common_params().lofi_state); 3487 extra_data->set_lofi_state(navigation_state->common_params().lofi_state);
3457 else 3488 else
3458 extra_data->set_lofi_state(is_using_lofi_ ? LOFI_ON : LOFI_OFF); 3489 extra_data->set_lofi_state(is_using_lofi_ ? LOFI_ON : LOFI_OFF);
3459 request.setExtraData(extra_data); 3490 request.setExtraData(extra_data);
3460 3491
3461 // TODO(creis): Update prefetching to work with out-of-process iframes. 3492 // TODO(creis): Update prefetching to work with out-of-process iframes.
3462 WebFrame* top_frame = frame->top(); 3493 WebFrame* top_frame = frame->top();
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after
4297 WebURLRequest::CachePolicy cache_policy = 4328 WebURLRequest::CachePolicy cache_policy =
4298 WebURLRequest::UseProtocolCachePolicy; 4329 WebURLRequest::UseProtocolCachePolicy;
4299 RenderFrameImpl::PrepareRenderViewForNavigation( 4330 RenderFrameImpl::PrepareRenderViewForNavigation(
4300 common_params.url, request_params, &is_reload, &cache_policy); 4331 common_params.url, request_params, &is_reload, &cache_policy);
4301 4332
4302 GetContentClient()->SetActiveURL(common_params.url); 4333 GetContentClient()->SetActiveURL(common_params.url);
4303 4334
4304 pending_navigation_params_.reset(new NavigationParams( 4335 pending_navigation_params_.reset(new NavigationParams(
4305 common_params, StartNavigationParams(), request_params)); 4336 common_params, StartNavigationParams(), request_params));
4306 4337
4307 // Inform the browser of the start of the provisional load. This is needed so
4308 // that the load is properly tracked by the WebNavigation API.
4309 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( 4338 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame(
4310 routing_id_, common_params.url)); 4339 routing_id_, common_params.url, common_params.navigation_start));
4311 4340
4312 // Send the provisional load failure. 4341 // Send the provisional load failure.
4313 blink::WebURLError error = 4342 blink::WebURLError error =
4314 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code); 4343 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code);
4315 WebURLRequest failed_request = CreateURLRequestForNavigation( 4344 WebURLRequest failed_request = CreateURLRequestForNavigation(
4316 common_params, scoped_ptr<StreamOverrideParameters>(), 4345 common_params, scoped_ptr<StreamOverrideParameters>(),
4317 frame_->isViewSourceModeEnabled()); 4346 frame_->isViewSourceModeEnabled());
4318 SendFailedProvisionalLoad(failed_request, error, frame_); 4347 SendFailedProvisionalLoad(failed_request, error, frame_);
4319 4348
4320 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) { 4349 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) {
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
4642 } 4671 }
4643 4672
4644 pending_navigation_params_.reset( 4673 pending_navigation_params_.reset(
4645 new NavigationParams(common_params, start_params, request_params)); 4674 new NavigationParams(common_params, start_params, request_params));
4646 4675
4647 // Create parameters for a standard navigation. 4676 // Create parameters for a standard navigation.
4648 blink::WebFrameLoadType load_type = blink::WebFrameLoadType::Standard; 4677 blink::WebFrameLoadType load_type = blink::WebFrameLoadType::Standard;
4649 bool should_load_request = false; 4678 bool should_load_request = false;
4650 WebHistoryItem item_for_history_navigation; 4679 WebHistoryItem item_for_history_navigation;
4651 WebURLRequest request = CreateURLRequestForNavigation( 4680 WebURLRequest request = CreateURLRequestForNavigation(
4652 common_params, stream_params.Pass(), frame_->isViewSourceModeEnabled()); 4681 common_params, stream_params.Pass(),
4682 frame_->isViewSourceModeEnabled());
4653 #if defined(OS_ANDROID) 4683 #if defined(OS_ANDROID)
4654 request.setHasUserGesture(start_params.has_user_gesture); 4684 request.setHasUserGesture(start_params.has_user_gesture);
4655 #endif 4685 #endif
4656 4686
4657 // PlzNavigate: Make sure that Blink's loader will not try to use browser side 4687 // PlzNavigate: Make sure that Blink's loader will not try to use browser side
4658 // navigation for this request (since it already went to the browser). 4688 // navigation for this request (since it already went to the browser).
4659 if (browser_side_navigation) 4689 if (browser_side_navigation)
4660 request.setCheckForBrowserSideNavigation(false); 4690 request.setCheckForBrowserSideNavigation(false);
4661 4691
4662 // If we are reloading, then use the history state of the current frame. 4692 // If we are reloading, then use the history state of the current frame.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
4767 request.setHTTPBody(http_body); 4797 request.setHTTPBody(http_body);
4768 } 4798 }
4769 4799
4770 // A session history navigation should have been accompanied by state. 4800 // A session history navigation should have been accompanied by state.
4771 CHECK_EQ(request_params.page_id, -1); 4801 CHECK_EQ(request_params.page_id, -1);
4772 4802
4773 should_load_request = true; 4803 should_load_request = true;
4774 } 4804 }
4775 4805
4776 if (should_load_request) { 4806 if (should_load_request) {
4777 // Record this before starting the load. We need a lower bound of this 4807 base::TimeTicks updated_navigation_start;
4778 // time to sanitize the navigationStart override set below. 4808 if (load_type == blink::WebFrameLoadType::Standard) {
4779 base::TimeTicks renderer_navigation_start = base::TimeTicks::Now(); 4809 updated_navigation_start =
4810 SanitizeNavigationTiming(common_params.navigation_start);
4811 static_cast<RequestExtraData*>(request.extraData())
4812 ->set_browser_navigation_start(updated_navigation_start);
4813 }
4780 4814
4781 // Perform a navigation to a data url if needed. 4815 // Perform a navigation to a data url if needed.
4782 if (!common_params.base_url_for_data_url.is_empty() || 4816 if (!common_params.base_url_for_data_url.is_empty() ||
4783 (browser_side_navigation && 4817 (browser_side_navigation &&
4784 common_params.url.SchemeIs(url::kDataScheme))) { 4818 common_params.url.SchemeIs(url::kDataScheme))) {
4785 LoadDataURL(common_params, frame_); 4819 LoadDataURL(common_params, frame_);
4786 } else { 4820 } else {
4787 // Load the request. 4821 // Load the request.
4788 frame_->toWebLocalFrame()->load(request, load_type, 4822 frame_->toWebLocalFrame()->load(request, load_type,
4789 item_for_history_navigation); 4823 item_for_history_navigation);
4790 } 4824 }
4791 4825 // Update the navigationStart value after the request has been made.
4792 if (load_type == blink::WebFrameLoadType::Standard) { 4826 UpdateFrameNavigationTiming(frame_, updated_navigation_start);
4793 UpdateFrameNavigationTiming(frame_,
4794 request_params.browser_navigation_start,
4795 renderer_navigation_start);
4796 }
4797 } 4827 }
4798 4828
4799 // In case LoadRequest failed before didCreateDataSource was called. 4829 // In case LoadRequest failed before didCreateDataSource was called.
4800 pending_navigation_params_.reset(); 4830 pending_navigation_params_.reset();
4801 } 4831 }
4802 4832
4803 void RenderFrameImpl::UpdateEncoding(WebFrame* frame, 4833 void RenderFrameImpl::UpdateEncoding(WebFrame* frame,
4804 const std::string& encoding_name) { 4834 const std::string& encoding_name) {
4805 // Only update main frame's encoding_name. 4835 // Only update main frame's encoding_name.
4806 if (!frame->parent()) 4836 if (!frame->parent())
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
4977 // Note: At this stage, the goal is to apply all the modifications the 5007 // Note: At this stage, the goal is to apply all the modifications the
4978 // renderer wants to make to the request, and then send it to the browser, so 5008 // renderer wants to make to the request, and then send it to the browser, so
4979 // that the actual network request can be started. Ideally, all such 5009 // that the actual network request can be started. Ideally, all such
4980 // modifications should take place in willSendRequest, and in the 5010 // modifications should take place in willSendRequest, and in the
4981 // implementation of willSendRequest for the various InspectorAgents 5011 // implementation of willSendRequest for the various InspectorAgents
4982 // (devtools). 5012 // (devtools).
4983 // 5013 //
4984 // TODO(clamy): Apply devtools override. 5014 // TODO(clamy): Apply devtools override.
4985 // TODO(clamy): Make sure that navigation requests are not modified somewhere 5015 // TODO(clamy): Make sure that navigation requests are not modified somewhere
4986 // else in blink. 5016 // else in blink.
5017
5018 base::TimeTicks navigation_start = base::TimeTicks::Now();
5019
4987 willSendRequest(frame_, 0, *request, blink::WebURLResponse()); 5020 willSendRequest(frame_, 0, *request, blink::WebURLResponse());
4988 5021
4989 // TODO(clamy): Same-document navigations should not be sent back to the 5022 // TODO(clamy): Same-document navigations should not be sent back to the
4990 // browser. 5023 // browser.
4991 // TODO(clamy): Data urls should not be sent back to the browser either. 5024 // TODO(clamy): Data urls should not be sent back to the browser either.
4992 bool should_replace_current_entry = false; 5025 bool should_replace_current_entry = false;
4993 WebDataSource* provisional_data_source = frame_->provisionalDataSource(); 5026 WebDataSource* provisional_data_source = frame_->provisionalDataSource();
4994 WebDataSource* current_data_source = frame_->dataSource(); 5027 WebDataSource* current_data_source = frame_->dataSource();
4995 WebDataSource* data_source = 5028 WebDataSource* data_source =
4996 provisional_data_source ? provisional_data_source : current_data_source; 5029 provisional_data_source ? provisional_data_source : current_data_source;
(...skipping 13 matching lines...) Expand all
5010 DCHECK(GetFetchRedirectModeForWebURLRequest(*request) == 5043 DCHECK(GetFetchRedirectModeForWebURLRequest(*request) ==
5011 FetchRedirectMode::MANUAL_MODE); 5044 FetchRedirectMode::MANUAL_MODE);
5012 DCHECK(frame_->parent() || 5045 DCHECK(frame_->parent() ||
5013 GetRequestContextFrameTypeForWebURLRequest(*request) == 5046 GetRequestContextFrameTypeForWebURLRequest(*request) ==
5014 REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL); 5047 REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL);
5015 DCHECK(!frame_->parent() || 5048 DCHECK(!frame_->parent() ||
5016 GetRequestContextFrameTypeForWebURLRequest(*request) == 5049 GetRequestContextFrameTypeForWebURLRequest(*request) ==
5017 REQUEST_CONTEXT_FRAME_TYPE_NESTED); 5050 REQUEST_CONTEXT_FRAME_TYPE_NESTED);
5018 5051
5019 Send(new FrameHostMsg_BeginNavigation( 5052 Send(new FrameHostMsg_BeginNavigation(
5020 routing_id_, 5053 routing_id_, MakeCommonNavigationParams(
5021 MakeCommonNavigationParams(request, should_replace_current_entry), 5054 request, should_replace_current_entry, navigation_start),
5022 BeginNavigationParams( 5055 BeginNavigationParams(
5023 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request), 5056 request->httpMethod().latin1(), GetWebURLRequestHeaders(*request),
5024 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture(), 5057 GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture(),
5025 request->skipServiceWorker(), 5058 request->skipServiceWorker(),
5026 GetRequestContextTypeForWebURLRequest(*request)), 5059 GetRequestContextTypeForWebURLRequest(*request)),
5027 GetRequestBodyForWebURLRequest(*request))); 5060 GetRequestBodyForWebURLRequest(*request)));
5028 } 5061 }
5029 5062
5030 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params, 5063 void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params,
5031 WebFrame* frame) { 5064 WebFrame* frame) {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
5284 mojo::ServiceProviderPtr service_provider; 5317 mojo::ServiceProviderPtr service_provider;
5285 mojo::URLRequestPtr request(mojo::URLRequest::New()); 5318 mojo::URLRequestPtr request(mojo::URLRequest::New());
5286 request->url = mojo::String::From(url); 5319 request->url = mojo::String::From(url);
5287 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), 5320 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider),
5288 nullptr, nullptr, 5321 nullptr, nullptr,
5289 base::Bind(&OnGotContentHandlerID)); 5322 base::Bind(&OnGotContentHandlerID));
5290 return service_provider.Pass(); 5323 return service_provider.Pass();
5291 } 5324 }
5292 5325
5293 } // namespace content 5326 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698