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

Side by Side Diff: Source/core/page/HistoryController.h

Issue 139103003: Reland "Remove children from HistoryNodes that redirect during back/forward navigation" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Make trybots happy Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 3 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 class HistoryNode { 94 class HistoryNode {
95 public: 95 public:
96 static PassOwnPtr<HistoryNode> create(HistoryEntry*, HistoryItem*); 96 static PassOwnPtr<HistoryNode> create(HistoryEntry*, HistoryItem*);
97 ~HistoryNode() { } 97 ~HistoryNode() { }
98 98
99 HistoryNode* addChild(PassRefPtr<HistoryItem>); 99 HistoryNode* addChild(PassRefPtr<HistoryItem>);
100 PassOwnPtr<HistoryNode> cloneAndReplace(HistoryEntry*, HistoryItem* newItem, bool clipAtTarget, Frame* targetFrame, Frame* currentFrame); 100 PassOwnPtr<HistoryNode> cloneAndReplace(HistoryEntry*, HistoryItem* newItem, bool clipAtTarget, Frame* targetFrame, Frame* currentFrame);
101 HistoryItem* value() { return m_value.get(); } 101 HistoryItem* value() { return m_value.get(); }
102 void updateValue(PassRefPtr<HistoryItem> item) { m_value = item; } 102 void updateValue(PassRefPtr<HistoryItem> item) { m_value = item; }
103 const Vector<OwnPtr<HistoryNode> >& children() const { return m_children; } 103 const Vector<OwnPtr<HistoryNode> >& children() const { return m_children; }
104 void removeChildren();
104 105
105 private: 106 private:
106 HistoryNode(HistoryEntry*, HistoryItem*); 107 HistoryNode(HistoryEntry*, HistoryItem*);
107 108
108 HistoryEntry* m_entry; 109 HistoryEntry* m_entry;
109 Vector<OwnPtr<HistoryNode> > m_children; 110 Vector<OwnPtr<HistoryNode> > m_children;
110 RefPtr<HistoryItem> m_value; 111 RefPtr<HistoryItem> m_value;
112
111 }; 113 };
112 114
113 class HistoryEntry { 115 class HistoryEntry {
114 public: 116 public:
115 static PassOwnPtr<HistoryEntry> create(HistoryItem* root); 117 static PassOwnPtr<HistoryEntry> create(HistoryItem* root);
116 PassOwnPtr<HistoryEntry> cloneAndReplace(HistoryItem* newItem, bool clipAtTa rget, Frame* targetFrame, Page*); 118 PassOwnPtr<HistoryEntry> cloneAndReplace(HistoryItem* newItem, bool clipAtTa rget, Frame* targetFrame, Page*);
117 119
118 HistoryNode* historyNodeForFrame(Frame*); 120 HistoryNode* historyNodeForFrame(Frame*);
119 HistoryItem* itemForFrame(Frame*); 121 HistoryItem* itemForFrame(Frame*);
120 HistoryItem* root() const { return m_root->value(); } 122 HistoryItem* root() const { return m_root->value(); }
(...skipping 19 matching lines...) Expand all
140 // Should only be called by embedder. To request a back/forward 142 // Should only be called by embedder. To request a back/forward
141 // navigation, call FrameLoaderClient::navigateBackForward(). 143 // navigation, call FrameLoaderClient::navigateBackForward().
142 void goToItem(HistoryItem*, ResourceRequestCachePolicy); 144 void goToItem(HistoryItem*, ResourceRequestCachePolicy);
143 145
144 void updateBackForwardListForFragmentScroll(Frame*, HistoryItem*); 146 void updateBackForwardListForFragmentScroll(Frame*, HistoryItem*);
145 void updateForCommit(Frame*, HistoryItem*, HistoryCommitType); 147 void updateForCommit(Frame*, HistoryItem*, HistoryCommitType);
146 148
147 PassRefPtr<HistoryItem> currentItemForExport(); 149 PassRefPtr<HistoryItem> currentItemForExport();
148 PassRefPtr<HistoryItem> previousItemForExport(); 150 PassRefPtr<HistoryItem> previousItemForExport();
149 HistoryItem* itemForNewChildFrame(Frame*) const; 151 HistoryItem* itemForNewChildFrame(Frame*) const;
152 void removeChildrenForRedirect(Frame*);
150 153
151 void setDefersLoading(bool); 154 void setDefersLoading(bool);
152 155
153 private: 156 private:
154 void goToEntry(PassOwnPtr<HistoryEntry>, ResourceRequestCachePolicy); 157 void goToEntry(PassOwnPtr<HistoryEntry>, ResourceRequestCachePolicy);
155 typedef HashMap<Frame*, HistoryItem*> HistoryFrameLoadSet; 158 typedef HashMap<Frame*, HistoryItem*> HistoryFrameLoadSet;
156 void recursiveGoToEntry(Frame*, HistoryFrameLoadSet& sameDocumentLoads, Hist oryFrameLoadSet& differentDocumentLoads); 159 void recursiveGoToEntry(Frame*, HistoryFrameLoadSet& sameDocumentLoads, Hist oryFrameLoadSet& differentDocumentLoads);
157 160
158 void updateForInitialLoadInChildFrame(Frame*, HistoryItem*); 161 void updateForInitialLoadInChildFrame(Frame*, HistoryItem*);
159 void createNewBackForwardItem(Frame*, HistoryItem*, bool doClip); 162 void createNewBackForwardItem(Frame*, HistoryItem*, bool doClip);
160 163
161 Page* m_page; 164 Page* m_page;
162 165
163 OwnPtr<HistoryEntry> m_currentEntry; 166 OwnPtr<HistoryEntry> m_currentEntry;
164 OwnPtr<HistoryEntry> m_previousEntry; 167 OwnPtr<HistoryEntry> m_previousEntry;
165 OwnPtr<HistoryEntry> m_provisionalEntry; 168 OwnPtr<HistoryEntry> m_provisionalEntry;
166 169
167 bool m_defersLoading; 170 bool m_defersLoading;
168 RefPtr<HistoryItem> m_deferredItem; 171 RefPtr<HistoryItem> m_deferredItem;
169 ResourceRequestCachePolicy m_deferredCachePolicy; 172 ResourceRequestCachePolicy m_deferredCachePolicy;
170 }; 173 };
171 174
172 } // namespace WebCore 175 } // namespace WebCore
173 176
174 #endif // HistoryController_h 177 #endif // HistoryController_h
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/navigation/back-to-redirect-with-frame-expected.txt ('k') | Source/core/page/HistoryController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698