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

Side by Side Diff: content/renderer/history_controller.h

Issue 1027863002: Move provisional navigation parameters to RenderFrame, and use the HistoryController to distribute … (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes Created 5 years, 9 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
« no previous file with comments | « content/public/renderer/render_view_observer.h ('k') | content/renderer/history_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /* 5 /*
6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
8 * (http://www.torchmobile.com/) 8 * (http://www.torchmobile.com/)
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "third_party/WebKit/public/web/WebHistoryCommitType.h" 44 #include "third_party/WebKit/public/web/WebHistoryCommitType.h"
45 #include "third_party/WebKit/public/web/WebHistoryItem.h" 45 #include "third_party/WebKit/public/web/WebHistoryItem.h"
46 46
47 namespace blink { 47 namespace blink {
48 class WebFrame; 48 class WebFrame;
49 } 49 }
50 50
51 namespace content { 51 namespace content {
52 class RenderFrameImpl; 52 class RenderFrameImpl;
53 class RenderViewImpl; 53 class RenderViewImpl;
54 struct NavigationParams;
54 55
55 // A guide to history state in the renderer: 56 // A guide to history state in the renderer:
56 // 57 //
57 // HistoryController: Owned by RenderView, is the entry point for interacting 58 // HistoryController: Owned by RenderView, is the entry point for interacting
58 // with history. Handles most of the operations to modify history state, 59 // with history. Handles most of the operations to modify history state,
59 // navigate to an existing back/forward entry, etc. 60 // navigate to an existing back/forward entry, etc.
60 // 61 //
61 // HistoryEntry: Represents a single entry in the back/forward list, 62 // HistoryEntry: Represents a single entry in the back/forward list,
62 // encapsulating all frames in the page it represents. It provides access 63 // encapsulating all frames in the page it represents. It provides access
63 // to each frame's state via lookups by frame id or frame name. 64 // to each frame's state via lookups by frame id or frame name.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // HistoryNode 2_1: (WebHistoryItem G (url: bar.com/e)) 104 // HistoryNode 2_1: (WebHistoryItem G (url: bar.com/e))
104 // HistoryNode 2_3: (WebHistoryItem H (url: bar.com/f)) 105 // HistoryNode 2_3: (WebHistoryItem H (url: bar.com/f))
105 // HistoryNode 2_2: (WebHistoryItem E (url: bar.com/c)) *REUSED* 106 // HistoryNode 2_2: (WebHistoryItem E (url: bar.com/c)) *REUSED*
106 // 107 //
107 class CONTENT_EXPORT HistoryController { 108 class CONTENT_EXPORT HistoryController {
108 public: 109 public:
109 explicit HistoryController(RenderViewImpl* render_view); 110 explicit HistoryController(RenderViewImpl* render_view);
110 ~HistoryController(); 111 ~HistoryController();
111 112
112 void GoToEntry(scoped_ptr<HistoryEntry> entry, 113 void GoToEntry(scoped_ptr<HistoryEntry> entry,
114 scoped_ptr<NavigationParams> navigation_params,
113 blink::WebURLRequest::CachePolicy cache_policy); 115 blink::WebURLRequest::CachePolicy cache_policy);
114 116
115 void UpdateForCommit(RenderFrameImpl* frame, 117 void UpdateForCommit(RenderFrameImpl* frame,
116 const blink::WebHistoryItem& item, 118 const blink::WebHistoryItem& item,
117 blink::WebHistoryCommitType commit_type, 119 blink::WebHistoryCommitType commit_type,
118 bool navigation_within_page); 120 bool navigation_within_page);
119 121
120 HistoryEntry* GetCurrentEntry(); 122 HistoryEntry* GetCurrentEntry();
121 blink::WebHistoryItem GetItemForNewChildFrame(RenderFrameImpl* frame) const; 123 blink::WebHistoryItem GetItemForNewChildFrame(RenderFrameImpl* frame) const;
122 void RemoveChildrenForRedirect(RenderFrameImpl* frame); 124 void RemoveChildrenForRedirect(RenderFrameImpl* frame);
123 125
124 private: 126 private:
125 typedef std::vector<std::pair<blink::WebFrame*, blink::WebHistoryItem> > 127 typedef std::vector<std::pair<blink::WebFrame*, blink::WebHistoryItem> >
126 HistoryFrameLoadVector; 128 HistoryFrameLoadVector;
127 void RecursiveGoToEntry(blink::WebFrame* frame, 129 void RecursiveGoToEntry(blink::WebFrame* frame,
128 HistoryFrameLoadVector& sameDocumentLoads, 130 HistoryFrameLoadVector& sameDocumentLoads,
129 HistoryFrameLoadVector& differentDocumentLoads); 131 HistoryFrameLoadVector& differentDocumentLoads);
130 132
131 void UpdateForInitialLoadInChildFrame(RenderFrameImpl* frame, 133 void UpdateForInitialLoadInChildFrame(RenderFrameImpl* frame,
132 const blink::WebHistoryItem& item); 134 const blink::WebHistoryItem& item);
133 void CreateNewBackForwardItem(RenderFrameImpl* frame, 135 void CreateNewBackForwardItem(RenderFrameImpl* frame,
134 const blink::WebHistoryItem& item, 136 const blink::WebHistoryItem& item,
135 bool clone_children_of_target); 137 bool clone_children_of_target);
136 138
137 RenderViewImpl* render_view_; 139 RenderViewImpl* render_view_;
138 140
141 // A HistoryEntry representing the currently-loaded page.
139 scoped_ptr<HistoryEntry> current_entry_; 142 scoped_ptr<HistoryEntry> current_entry_;
143 // A HistoryEntry representing the page that is being loaded, or an empty
144 // scoped_ptr if no page is being loaded.
140 scoped_ptr<HistoryEntry> provisional_entry_; 145 scoped_ptr<HistoryEntry> provisional_entry_;
146 // The NavigationParams corresponding to the last load that was initiated by
147 // |GoToEntry|. This is kept around so that it can be passed into existing
148 // frames modified during a history navigation in GoToEntry(), and can be
149 // passed into frames created after the commit that resulted from the
150 // navigation in GetItemForNewChildFrame().
151 scoped_ptr<NavigationParams> navigation_params_;
141 152
142 DISALLOW_COPY_AND_ASSIGN(HistoryController); 153 DISALLOW_COPY_AND_ASSIGN(HistoryController);
143 }; 154 };
144 155
145 } // namespace content 156 } // namespace content
146 157
147 #endif // CONTENT_RENDERER_HISTORY_CONTROLLER_H_ 158 #endif // CONTENT_RENDERER_HISTORY_CONTROLLER_H_
OLDNEW
« no previous file with comments | « content/public/renderer/render_view_observer.h ('k') | content/renderer/history_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698