| Index: third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| index 0610418fd1c887b2c6234a917927ef78991a3ac6..70c70d8323cacf502426fde2479e93c569be7265 100644
|
| --- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| @@ -743,7 +743,7 @@ void FrameLoader::checkCompleted() {
|
| m_progressTracker->progressCompleted();
|
| // Retry restoring scroll offset since finishing loading disables content
|
| // size clamping.
|
| - restoreScrollPositionAndViewState();
|
| + setScrollFromNavigation();
|
|
|
| m_loadType = FrameLoadTypeStandard;
|
| m_frame->domWindow()->finishedLoading();
|
| @@ -887,7 +887,7 @@ void FrameLoader::loadInSameDocument(
|
| : SerializedScriptValue::nullValue());
|
|
|
| if (historyLoadType == HistorySameDocumentLoad)
|
| - restoreScrollPositionAndViewState();
|
| + setScrollFromNavigation(NavigationWithinSameDocument);
|
|
|
| // We need to scroll to the fragment whether or not a hash change occurred,
|
| // since the user might have scrolled since the previous navigation.
|
| @@ -1376,6 +1376,11 @@ FrameLoadType FrameLoader::loadType() const {
|
| return m_loadType;
|
| }
|
|
|
| +void FrameLoader::setScrollFromNavigation(LoadStartType loadStartType) {
|
| + processFragment(m_frame->document()->url(), loadStartType);
|
| + restoreScrollPositionAndViewState();
|
| +}
|
| +
|
| void FrameLoader::restoreScrollPositionAndViewState() {
|
| FrameView* view = m_frame->view();
|
| if (!m_frame->page() || !view || !view->layoutViewportScrollableArea() ||
|
|
|