Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index d92ca9a1aadae2f96c094c6df39eba4468ee7b52..78419a841204113ae0eeeb8dfc556141a91f5875 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -2556,24 +2556,30 @@ void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame, |
| void RenderFrameImpl::willSubmitForm(blink::WebLocalFrame* frame, |
| const blink::WebFormElement& form) { |
| DCHECK(!frame_ || frame_ == frame); |
| - DocumentState* document_state = |
| - DocumentState::FromDataSource(frame->provisionalDataSource()); |
| - NavigationStateImpl* navigation_state = |
| - static_cast<NavigationStateImpl*>(document_state->navigation_state()); |
| - InternalDocumentStateData* internal_data = |
| - InternalDocumentStateData::FromDocumentState(document_state); |
| + // With PlzNavigate-enabled, this will be called before a DataSource has been |
| + // set-up. |
| + // TODO(clamy): make sure the internal state is properly updated at some |
| + // point in the navigation. |
| + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableBrowserSideNavigation)) { |
| + DocumentState* document_state = |
| + DocumentState::FromDataSource(frame->provisionalDataSource()); |
| + NavigationStateImpl* navigation_state = |
| + static_cast<NavigationStateImpl*>(document_state->navigation_state()); |
| + InternalDocumentStateData* internal_data = |
| + InternalDocumentStateData::FromDocumentState(document_state); |
| + if (ui::PageTransitionCoreTypeIs(navigation_state->GetTransitionType(), |
| + ui::PAGE_TRANSITION_LINK)) { |
| + navigation_state->set_transition_type(ui::PAGE_TRANSITION_FORM_SUBMIT); |
|
Nate Chapin
2015/12/08 23:18:38
I think you can check and modify pending_navigatio
clamy
2015/12/11 14:50:06
At that point pending_navigation_params_ should be
|
| + } |
| - if (ui::PageTransitionCoreTypeIs(navigation_state->GetTransitionType(), |
| - ui::PAGE_TRANSITION_LINK)) { |
| - navigation_state->set_transition_type(ui::PAGE_TRANSITION_FORM_SUBMIT); |
| + // Save these to be processed when the ensuing navigation is committed. |
| + WebSearchableFormData web_searchable_form_data(form); |
| + internal_data->set_searchable_form_url(web_searchable_form_data.url()); |
| + internal_data->set_searchable_form_encoding( |
|
Nate Chapin
2015/12/08 23:18:38
Can we stash these on one of the navigation params
clamy
2015/12/11 14:50:06
As explained above, we can't use the pending_navig
|
| + web_searchable_form_data.encoding().utf8()); |
| } |
| - // Save these to be processed when the ensuing navigation is committed. |
| - WebSearchableFormData web_searchable_form_data(form); |
| - internal_data->set_searchable_form_url(web_searchable_form_data.url()); |
| - internal_data->set_searchable_form_encoding( |
| - web_searchable_form_data.encoding().utf8()); |
| - |
| FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WillSubmitForm(form)); |
| } |
| @@ -4555,7 +4561,7 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
| info.urlRequest.checkForBrowserSideNavigation() && |
| ShouldMakeNetworkRequestForURL(url)) { |
| BeginNavigation(&info.urlRequest); |
| - return blink::WebNavigationPolicyIgnore; |
| + return blink::WebNavigationPolicyHandledByClient; |
| } |
| return info.defaultPolicy; |