| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index df70a011bf97a45271eb3f3906a5dd709b1fc197..c139bfaf305d578beb59ed5484f5be5ef7672f03 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -3388,10 +3388,11 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) {
|
| NavigationStateImpl* navigation_state = static_cast<NavigationStateImpl*>(
|
| document_state->navigation_state());
|
| bool is_top_most = !frame->parent();
|
| + NavigationGesture gesture = WebUserGestureIndicator::isProcessingUserGesture()
|
| + ? NavigationGestureUser
|
| + : NavigationGestureAuto;
|
| if (is_top_most) {
|
| - render_view_->set_navigation_gesture(
|
| - WebUserGestureIndicator::isProcessingUserGesture() ?
|
| - NavigationGestureUser : NavigationGestureAuto);
|
| + render_view_->set_navigation_gesture(gesture);
|
| } else if (ds->replacesCurrentHistoryItem()) {
|
| // Subframe navigations that don't add session history items must be
|
| // marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we
|
| @@ -3409,7 +3410,7 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) {
|
| observer.DidStartProvisionalLoad();
|
|
|
| Send(new FrameHostMsg_DidStartProvisionalLoad(
|
| - routing_id_, ds->request().url(), navigation_start));
|
| + routing_id_, ds->request().url(), navigation_start, gesture));
|
| }
|
|
|
| void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
|
| @@ -5029,8 +5030,9 @@ void RenderFrameImpl::OnCommitNavigation(
|
| // If the request was initiated in the context of a user gesture then make
|
| // sure that the navigation also executes in the context of a user gesture.
|
| std::unique_ptr<blink::WebScopedUserGesture> gesture(
|
| - request_params.has_user_gesture ? new blink::WebScopedUserGesture(frame_)
|
| - : nullptr);
|
| + (request_params.gesture == NavigationGestureUser)
|
| + ? new blink::WebScopedUserGesture(frame_)
|
| + : nullptr);
|
|
|
| NavigateInternal(common_params, StartNavigationParams(), request_params,
|
| std::move(stream_override));
|
| @@ -6123,7 +6125,8 @@ void RenderFrameImpl::BeginNavigation(const NavigationPolicyInfo& info) {
|
| BeginNavigationParams begin_navigation_params(
|
| GetWebURLRequestHeaders(info.urlRequest),
|
| GetLoadFlagsForWebURLRequest(info.urlRequest),
|
| - info.urlRequest.hasUserGesture(),
|
| + info.urlRequest.hasUserGesture() ? NavigationGestureUser
|
| + : NavigationGestureAuto,
|
| info.urlRequest.skipServiceWorker() !=
|
| blink::WebURLRequest::SkipServiceWorker::None,
|
| GetRequestContextTypeForWebURLRequest(info.urlRequest));
|
|
|