DescriptionSplit 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 : #
Messages
Total messages: 15 (0 generated)
|