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

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 on 1608283002 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
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 96b971dfdf57e2106c8d681053a26a5229c5a855..cae2122e7116acf54838d3b9900320b861f86be3 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2871,23 +2871,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));
}

Powered by Google App Engine
This is Rietveld 408576698