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

Issue 28983004: Split the frame tree logic out of HistoryItem (Closed)

Created:
7 years, 2 months ago by Nate Chapin
Modified:
7 years, 1 month ago
CC:
blink-reviews, jamesr, dglazkov+blink, gavinp+loader_chromium.org, abarth-chromium
Visibility:
Public.

Description

Split the frame tree logic out of HistoryItem This is a proposal for separating the per-frame data we need for history from the frame-tree that HistoryItem stores. This patch introduces HistoryEntry, which is basically a wrapper around a tree of HistoryEntryItems. HistoryEntryItem contains a HistoryItem (which stores the relevant data for the frame) and a vector of child HistoryEntryItems. Multiple HistoryEntryItems can hold references to the same HistoryItem. HistoryEntry/HistoryEntryItem have logic for doing a parital clone of themselves while replacing the navigated item. HistoryEntry keeps 2 maps. One maps frame ids (which are new) to HistoryEntryItems, the other maps FrameTree::uniqueName() to HistoryEntryItems. The frame id maps is sufficient for the vast majority of cases, but a secondary mechanism for finding a HistoryEntryItem is necessary when doing a back/forward navigation with iframes, as child iframes may want to load from history, but the HistoryEntry may not know about the new Frame object yet. HistoryController know lives in Page, though for simplicity I left a helper on FrameLoader that gets the Page's HistoryController. This patch doesn't plumb the new data model all the way out, so HistoryController retains a mechanic for converting between the old HistoryItem child tree and the HistoryEntry tree. Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=162131

Patch Set 1 #

Total comments: 1

Patch Set 2 : #

Total comments: 4

Patch Set 3 : Merged to trunk #

Patch Set 4 : #

Patch Set 5 : #

Patch Set 6 : #

Patch Set 7 : #

Total comments: 10

Patch Set 8 : Rename to HistoryNode, mega comment on how history works #

Total comments: 1

Patch Set 9 : #

Patch Set 10 : #

Patch Set 11 : #

Patch Set 12 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+485 lines, -619 lines) Patch
M Source/core/frame/History.cpp View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
Source/core/history/HistoryItem.h View 1 2 2 chunks +0 lines, -18 lines 0 comments Download
Source/core/history/HistoryItem.cpp View 1 2 4 chunks +1 line, -120 lines 0 comments Download
M Source/core/loader/FrameLoader.h View 1 2 3 4 5 6 7 8 9 10 11 5 chunks +4 lines, -10 lines 0 comments Download
M Source/core/loader/FrameLoader.cpp View 1 2 3 4 5 6 7 8 9 10 11 17 chunks +25 lines, -47 lines 0 comments Download
Source/core/loader/FrameLoaderTypes.h View 1 2 1 chunk +5 lines, -0 lines 0 comments Download
M Source/core/loader/HistoryController.h View 1 2 3 4 5 6 7 8 9 2 chunks +128 lines, -37 lines 0 comments Download
M Source/core/loader/HistoryController.cpp View 1 2 3 4 5 6 7 8 9 10 5 chunks +269 lines, -311 lines 0 comments Download
M Source/core/loader/NavigationScheduler.cpp View 1 2 3 4 5 6 7 2 chunks +2 lines, -2 lines 0 comments Download
M Source/core/page/Page.h View 1 2 3 4 5 6 7 8 9 10 11 4 chunks +4 lines, -3 lines 0 comments Download
M Source/core/page/Page.cpp View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +1 line, -12 lines 0 comments Download
M Source/core/testing/Internals.cpp View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +6 lines, -17 lines 0 comments Download
M Source/web/ContextMenuClientImpl.cpp View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M Source/web/WebFrameImpl.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -4 lines 0 comments Download
M Source/web/WebFrameImpl.cpp View 1 2 3 4 5 6 7 8 9 10 11 5 chunks +8 lines, -15 lines 0 comments Download
M Source/web/WebHistoryItem.cpp View 1 2 3 4 5 6 7 8 1 chunk +8 lines, -0 lines 0 comments Download
M Source/web/WebViewImpl.cpp View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -2 lines 0 comments Download
M Source/web/tests/ProgrammaticScrollTest.cpp View 1 2 3 4 5 6 2 chunks +13 lines, -13 lines 0 comments Download
M Source/web/tests/WebFrameTest.cpp View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -2 lines 0 comments Download
M Source/web/tests/WebViewTest.cpp View 1 2 3 4 5 6 3 chunks +4 lines, -4 lines 0 comments Download
M public/web/WebHistoryItem.h View 1 2 3 4 5 6 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 15 (0 generated)
Nate Chapin
7 years, 2 months ago (2013-10-18 17:04:42 UTC) #1
Charlie Reis
Very cool. I haven't looked at the details closely, but this seems like a nice ...
7 years, 2 months ago (2013-10-19 00:44:15 UTC) #2
Nate Chapin
On 2013/10/19 00:44:15, creis wrote: > Very cool. I haven't looked at the details closely, ...
7 years, 2 months ago (2013-10-21 18:55:18 UTC) #3
Nate Chapin
This new version passes all layout tests and webkit unit tests locally. The downside is ...
7 years, 1 month ago (2013-10-29 19:30:47 UTC) #4
abarth-chromium
> This patch still fails ~50 layout Looks like you need to update the description.
7 years, 1 month ago (2013-10-29 20:27:19 UTC) #5
abarth-chromium
https://codereview.chromium.org/28983004/diff/60001/Source/core/frame/Frame.h File Source/core/frame/Frame.h (right): https://codereview.chromium.org/28983004/diff/60001/Source/core/frame/Frame.h#newcode192 Source/core/frame/Frame.h:192: int64_t m_id; We should make sure creis sees this ...
7 years, 1 month ago (2013-10-29 20:36:57 UTC) #6
Nate Chapin
On 2013/10/29 20:36:57, abarth wrote: > https://codereview.chromium.org/28983004/diff/60001/Source/core/frame/Frame.h > File Source/core/frame/Frame.h (right): > > https://codereview.chromium.org/28983004/diff/60001/Source/core/frame/Frame.h#newcode192 > ...
7 years, 1 month ago (2013-11-11 17:52:42 UTC) #7
abarth-chromium
LGTM, but it's likely I wouldn't find subtle bugs in this CL. The design looks ...
7 years, 1 month ago (2013-11-13 19:15:37 UTC) #8
Nate Chapin
https://codereview.chromium.org/28983004/diff/510001/Source/core/loader/HistoryController.cpp File Source/core/loader/HistoryController.cpp (right): https://codereview.chromium.org/28983004/diff/510001/Source/core/loader/HistoryController.cpp#newcode85 Source/core/loader/HistoryController.cpp:85: m_entry->m_framesToItems.add(value->targetFrameID(), this); On 2013/11/13 19:15:37, abarth wrote: > I ...
7 years, 1 month ago (2013-11-13 19:30:38 UTC) #9
Nate Chapin
Comments addressed. I'd appreciate a proofread of my wall of text before submitting.
7 years, 1 month ago (2013-11-13 21:49:42 UTC) #10
Nate Chapin
On 2013/11/13 21:49:42, Nate Chapin wrote: > Comments addressed. I'd appreciate a proofread of my ...
7 years, 1 month ago (2013-11-13 21:49:58 UTC) #11
abarth-chromium
Looks great! https://codereview.chromium.org/28983004/diff/660001/Source/core/loader/HistoryController.h File Source/core/loader/HistoryController.h (right): https://codereview.chromium.org/28983004/diff/660001/Source/core/loader/HistoryController.h#newcode58 Source/core/loader/HistoryController.h:58: // the strucutre of the page, but ...
7 years, 1 month ago (2013-11-14 05:37:30 UTC) #12
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/japhet@chromium.org/28983004/740001
7 years, 1 month ago (2013-11-14 22:15:09 UTC) #13
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/japhet@chromium.org/28983004/910001
7 years, 1 month ago (2013-11-15 19:05:32 UTC) #14
commit-bot: I haz the power
7 years, 1 month ago (2013-11-15 20:48:39 UTC) #15
Message was sent while issue was closed.
Change committed as 162131

Powered by Google App Engine
This is Rietveld 408576698