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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 1446253002: PlzNavigate: inform the WebFrameClient that a form will be submitted (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 10 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | testing/buildbot/filters/browser-side-navigation.linux.browser_tests.filter » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index e67fa1846569b41b3e8f4cd501093268215a0e7f..b8ddba89ee0edaa8e336a036e21983138060726f 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2878,23 +2878,29 @@ void RenderFrameImpl::willSendSubmitEvent(const blink::WebFormElement& form) {
}
void RenderFrameImpl::willSubmitForm(const blink::WebFormElement& form) {
- 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 (!IsBrowserSideNavigationEnabled()) {
+ 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);
- }
+ 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(
- 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));
}
« no previous file with comments | « no previous file | testing/buildbot/filters/browser-side-navigation.linux.browser_tests.filter » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698