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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 218993014: Call currently unimplemented history shims on WebView (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 74f98124c3c580eaa7dfc12deb612f31a9664162..a2da77b91050a70f71d51578235d3ad2323bb472 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1407,6 +1407,11 @@ blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
this, frame, extra_data, request, type, default_policy, is_redirect);
}
+blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame(
+ blink::WebFrame* frame) {
+ return render_view_->webview()->itemForNewChildFrame(frame);
Charlie Reis 2014/04/02 17:52:59 Should this be on WebFrame rather than WebView?
+}
+
void RenderFrameImpl::willSendSubmitEvent(blink::WebFrame* frame,
const blink::WebFormElement& form) {
DCHECK(!frame_ || frame_ == frame);
@@ -1517,6 +1522,7 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebFrame* frame) {
void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
blink::WebFrame* frame) {
DCHECK(!frame_ || frame_ == frame);
+ render_view_->webview()->removeChildrenForRedirect(frame);
Charlie Reis 2014/04/02 17:52:59 Just curious, why is this on the WebView rather th
if (frame->parent())
return;
// Received a redirect on the main frame.
@@ -1639,6 +1645,17 @@ void RenderFrameImpl::didFailProvisionalLoad(
}
void RenderFrameImpl::didCommitProvisionalLoad(blink::WebFrame* frame,
Charlie Reis 2014/04/02 17:52:59 nit: frame should be on its own line, aligned with
Nate Chapin 2014/04/02 17:58:35 Done.
+ const blink::WebHistoryItem& item,
+ blink::WebHistoryCommitType commit_type) {
+ DocumentState* document_state =
+ DocumentState::FromDataSource(frame->dataSource());
+ render_view_->webview()->updateForCommit(frame, item, commit_type,
Charlie Reis 2014/04/02 17:52:59 updateForCommit should also be on WebFrame rather
+ document_state->navigation_state()->was_within_same_page());
+
+ didCommitProvisionalLoad(frame, commit_type == blink::WebStandardCommit);
+}
+
+void RenderFrameImpl::didCommitProvisionalLoad(blink::WebFrame* frame,
bool is_new_navigation) {
DCHECK(!frame_ || frame_ == frame);
DocumentState* document_state =
@@ -1859,6 +1876,27 @@ void RenderFrameImpl::didFinishLoad(blink::WebFrame* frame) {
}
void RenderFrameImpl::didNavigateWithinPage(blink::WebFrame* frame,
+ const blink::WebHistoryItem& item,
+ blink::WebHistoryCommitType commit_type) {
+ DCHECK(!frame_ || frame_ == frame);
+ // If this was a reference fragment navigation that we initiated, then we
+ // could end up having a non-null pending navigation params. We just need to
+ // update the ExtraData on the datasource so that others who read the
+ // ExtraData will get the new NavigationState. Similarly, if we did not
+ // initiate this navigation, then we need to take care to reset any pre-
+ // existing navigation state to a content-initiated navigation state.
+ // DidCreateDataSource conveniently takes care of this for us.
+ didCreateDataSource(frame, frame->dataSource());
+
+ DocumentState* document_state =
+ DocumentState::FromDataSource(frame->dataSource());
+ NavigationState* new_state = document_state->navigation_state();
+ new_state->set_was_within_same_page(true);
+
+ didCommitProvisionalLoad(frame, item, commit_type);
+}
+
+void RenderFrameImpl::didNavigateWithinPage(blink::WebFrame* frame,
bool is_new_navigation) {
DCHECK(!frame_ || frame_ == frame);
// If this was a reference fragment navigation that we initiated, then we
@@ -1868,6 +1906,7 @@ void RenderFrameImpl::didNavigateWithinPage(blink::WebFrame* frame,
// initiate this navigation, then we need to take care to reset any pre-
// existing navigation state to a content-initiated navigation state.
// DidCreateDataSource conveniently takes care of this for us.
+
Charlie Reis 2014/04/02 17:52:59 nit: No extra line here.
Nate Chapin 2014/04/02 17:58:35 Done.
didCreateDataSource(frame, frame->dataSource());
DocumentState* document_state =
« content/renderer/render_frame_impl.h ('K') | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698