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

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

Issue 2949073002: Changing scroll and view state in onpopstate shouldn't overwrite back/forward state restore (Closed)
Patch Set: +test Created 3 years, 6 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/HistoryItem.cpp
diff --git a/third_party/WebKit/Source/core/loader/HistoryItem.cpp b/third_party/WebKit/Source/core/loader/HistoryItem.cpp
index 96342ddc49e244321d38fc21324431976f650405..2bf357a28c8d1ad8b55cceee344f2d602a5ced2b 100644
--- a/third_party/WebKit/Source/core/loader/HistoryItem.cpp
+++ b/third_party/WebKit/Source/core/loader/HistoryItem.cpp
@@ -42,8 +42,7 @@ static long long GenerateSequenceNumber() {
}
HistoryItem::HistoryItem()
- : did_save_scroll_or_scale_state_(false),
- page_scale_factor_(0),
+ : scroll_and_view_state_(nullptr),
item_sequence_number_(GenerateSequenceNumber()),
document_sequence_number_(GenerateSequenceNumber()),
scroll_restoration_type_(kScrollRestorationAuto) {}
@@ -77,31 +76,22 @@ void HistoryItem::SetReferrer(const Referrer& referrer) {
referrer.referrer);
}
-const ScrollOffset& HistoryItem::VisualViewportScrollOffset() const {
- return visual_viewport_scroll_offset_;
-}
-
void HistoryItem::SetVisualViewportScrollOffset(const ScrollOffset& offset) {
- visual_viewport_scroll_offset_ = offset;
- SetDidSaveScrollOrScaleState(true);
-}
-
-const ScrollOffset& HistoryItem::GetScrollOffset() const {
- return scroll_offset_;
+ if (!scroll_and_view_state_)
+ scroll_and_view_state_ = ScrollAndViewState::Create();
+ scroll_and_view_state_->visual_viewport_scroll_offset_ = offset;
}
void HistoryItem::SetScrollOffset(const ScrollOffset& offset) {
- scroll_offset_ = offset;
- SetDidSaveScrollOrScaleState(true);
-}
-
-float HistoryItem::PageScaleFactor() const {
- return page_scale_factor_;
+ if (!scroll_and_view_state_)
+ scroll_and_view_state_ = ScrollAndViewState::Create();
+ scroll_and_view_state_->scroll_offset_ = offset;
}
void HistoryItem::SetPageScaleFactor(float scale_factor) {
- page_scale_factor_ = scale_factor;
- SetDidSaveScrollOrScaleState(true);
+ if (!scroll_and_view_state_)
+ scroll_and_view_state_ = ScrollAndViewState::Create();
+ scroll_and_view_state_->page_scale_factor_ = scale_factor;
}
void HistoryItem::SetDocumentState(const Vector<String>& state) {
@@ -177,6 +167,7 @@ ResourceRequest HistoryItem::GenerateResourceRequest(
DEFINE_TRACE(HistoryItem) {
visitor->Trace(document_state_);
+ visitor->Trace(scroll_and_view_state_);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698