Chromium Code Reviews| 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..4997e93adea15b876ca35911bb7cefd1f6b972cb 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(NavigationToDifferentDocument); |
|
majidvp
2017/01/25 20:31:59
Are you sure this is the correct navigation type?
|
| 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() || |