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 2673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2684 | 2684 |
2685 // Update the request time if WebKit has better knowledge of it. | 2685 // Update the request time if WebKit has better knowledge of it. |
2686 if (document_state->request_time().is_null() && | 2686 if (document_state->request_time().is_null() && |
2687 triggering_event_time != 0.0) { | 2687 triggering_event_time != 0.0) { |
2688 document_state->set_request_time(Time::FromDoubleT(triggering_event_time)); | 2688 document_state->set_request_time(Time::FromDoubleT(triggering_event_time)); |
2689 } | 2689 } |
2690 | 2690 |
2691 // Start time is only set after request time. | 2691 // Start time is only set after request time. |
2692 document_state->set_start_load_time(Time::Now()); | 2692 document_state->set_start_load_time(Time::Now()); |
2693 | 2693 |
| 2694 NavigationStateImpl* navigation_state = static_cast<NavigationStateImpl*>( |
| 2695 document_state->navigation_state()); |
2694 bool is_top_most = !frame->parent(); | 2696 bool is_top_most = !frame->parent(); |
2695 if (is_top_most) { | 2697 if (is_top_most) { |
2696 render_view_->set_navigation_gesture( | 2698 render_view_->set_navigation_gesture( |
2697 WebUserGestureIndicator::isProcessingUserGesture() ? | 2699 WebUserGestureIndicator::isProcessingUserGesture() ? |
2698 NavigationGestureUser : NavigationGestureAuto); | 2700 NavigationGestureUser : NavigationGestureAuto); |
2699 } else if (ds->replacesCurrentHistoryItem()) { | 2701 } else if (ds->replacesCurrentHistoryItem()) { |
2700 // Subframe navigations that don't add session history items must be | 2702 // Subframe navigations that don't add session history items must be |
2701 // marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we | 2703 // marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we |
2702 // handle loading of error pages. | 2704 // handle loading of error pages. |
2703 static_cast<NavigationStateImpl*>(document_state->navigation_state()) | 2705 navigation_state->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
2704 ->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME); | |
2705 } | 2706 } |
2706 | 2707 |
| 2708 base::TimeTicks navigation_start = |
| 2709 navigation_state->common_params().navigation_start; |
| 2710 DCHECK(!navigation_start.is_null()); |
| 2711 |
2707 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 2712 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
2708 DidStartProvisionalLoad(frame)); | 2713 DidStartProvisionalLoad(frame)); |
2709 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad()); | 2714 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad()); |
2710 | 2715 |
2711 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( | 2716 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( |
2712 routing_id_, ds->request().url())); | 2717 routing_id_, ds->request().url(), navigation_start)); |
2713 } | 2718 } |
2714 | 2719 |
2715 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( | 2720 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( |
2716 blink::WebLocalFrame* frame) { | 2721 blink::WebLocalFrame* frame) { |
2717 DCHECK(!frame_ || frame_ == frame); | 2722 DCHECK(!frame_ || frame_ == frame); |
2718 render_view_->history_controller()->RemoveChildrenForRedirect(this); | 2723 render_view_->history_controller()->RemoveChildrenForRedirect(this); |
2719 } | 2724 } |
2720 | 2725 |
2721 void RenderFrameImpl::didFailProvisionalLoad( | 2726 void RenderFrameImpl::didFailProvisionalLoad( |
2722 blink::WebLocalFrame* frame, | 2727 blink::WebLocalFrame* frame, |
(...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4310 common_params.url, request_params, &is_reload, &cache_policy); | 4315 common_params.url, request_params, &is_reload, &cache_policy); |
4311 | 4316 |
4312 GetContentClient()->SetActiveURL(common_params.url); | 4317 GetContentClient()->SetActiveURL(common_params.url); |
4313 | 4318 |
4314 pending_navigation_params_.reset(new NavigationParams( | 4319 pending_navigation_params_.reset(new NavigationParams( |
4315 common_params, StartNavigationParams(), request_params)); | 4320 common_params, StartNavigationParams(), request_params)); |
4316 | 4321 |
4317 // Inform the browser of the start of the provisional load. This is needed so | 4322 // Inform the browser of the start of the provisional load. This is needed so |
4318 // that the load is properly tracked by the WebNavigation API. | 4323 // that the load is properly tracked by the WebNavigation API. |
4319 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( | 4324 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( |
4320 routing_id_, common_params.url)); | 4325 routing_id_, common_params.url, common_params.navigation_start)); |
4321 | 4326 |
4322 // Send the provisional load failure. | 4327 // Send the provisional load failure. |
4323 blink::WebURLError error = | 4328 blink::WebURLError error = |
4324 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code); | 4329 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code); |
4325 WebURLRequest failed_request = CreateURLRequestForNavigation( | 4330 WebURLRequest failed_request = CreateURLRequestForNavigation( |
4326 common_params, scoped_ptr<StreamOverrideParameters>(), | 4331 common_params, scoped_ptr<StreamOverrideParameters>(), |
4327 frame_->isViewSourceModeEnabled()); | 4332 frame_->isViewSourceModeEnabled()); |
4328 SendFailedProvisionalLoad(failed_request, error, frame_); | 4333 SendFailedProvisionalLoad(failed_request, error, frame_); |
4329 | 4334 |
4330 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) { | 4335 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) { |
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5305 mojo::ServiceProviderPtr service_provider; | 5310 mojo::ServiceProviderPtr service_provider; |
5306 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5311 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
5307 request->url = mojo::String::From(url); | 5312 request->url = mojo::String::From(url); |
5308 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5313 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
5309 nullptr, nullptr, | 5314 nullptr, nullptr, |
5310 base::Bind(&OnGotContentHandlerID)); | 5315 base::Bind(&OnGotContentHandlerID)); |
5311 return service_provider.Pass(); | 5316 return service_provider.Pass(); |
5312 } | 5317 } |
5313 | 5318 |
5314 } // namespace content | 5319 } // namespace content |
OLD | NEW |