| 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..eadf7ddf4b063a10fa8891048f1b2bfca68c760e 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(
|
| @@ -4787,8 +4788,8 @@ void RenderFrameImpl::SendDidCommitProvisionalLoad(
|
| params.searchable_form_url = internal_data->searchable_form_url();
|
| params.searchable_form_encoding = internal_data->searchable_form_encoding();
|
|
|
| - params.gesture = render_view_->navigation_gesture_;
|
| - render_view_->navigation_gesture_ = NavigationGestureUnknown;
|
| + params.gesture = render_view_->navigation_gesture();
|
| + render_view_->set_navigation_gesture(NavigationGestureUnknown);
|
|
|
| // Make navigation state a part of the DidCommitProvisionalLoad message so
|
| // that committed entry has it at all times.
|
| @@ -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));
|
| @@ -5755,7 +5757,7 @@ void RenderFrameImpl::NavigateInternal(
|
| bool has_history_navigation_in_frame = false;
|
|
|
| #if defined(OS_ANDROID)
|
| - request.setHasUserGesture(request_params.has_user_gesture);
|
| + request.setHasUserGesture(request_params.gesture == NavigationGestureUser);
|
| #endif
|
|
|
| if (browser_side_navigation) {
|
| @@ -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));
|
|
|