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

Unified Diff: third_party/WebKit/Source/core/loader/FrameLoader.cpp

Issue 2628683003: Add DidSaveScrollOrScaleState flag to prevent restoreScrollPositionAndViewState restore from default (Closed)
Patch Set: majidvp comment#33 addressed Created 3 years, 11 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: 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() ||

Powered by Google App Engine
This is Rietveld 408576698