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

Side by Side Diff: components/sessions/core/tab_restore_service_helper.h

Issue 2200993004: Make TabRestoreService::Entry noncopyable and fix up surrounding code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tab-test-cleanup
Patch Set: Get session ID from entries, take tabs' active status directly instead of an index Created 4 years, 4 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 #ifndef COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_ 5 #ifndef COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_
6 #define COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_ 6 #define COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_
7 7
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 // Helper methods used to implement TabRestoreService. 72 // Helper methods used to implement TabRestoreService.
73 void AddObserver(TabRestoreServiceObserver* observer); 73 void AddObserver(TabRestoreServiceObserver* observer);
74 void RemoveObserver(TabRestoreServiceObserver* observer); 74 void RemoveObserver(TabRestoreServiceObserver* observer);
75 void CreateHistoricalTab(LiveTab* live_tab, int index); 75 void CreateHistoricalTab(LiveTab* live_tab, int index);
76 void BrowserClosing(LiveTabContext* context); 76 void BrowserClosing(LiveTabContext* context);
77 void BrowserClosed(LiveTabContext* context); 77 void BrowserClosed(LiveTabContext* context);
78 void ClearEntries(); 78 void ClearEntries();
79 const Entries& entries() const; 79 const Entries& entries() const;
80 std::vector<LiveTab*> RestoreMostRecentEntry(LiveTabContext* context); 80 std::vector<LiveTab*> RestoreMostRecentEntry(LiveTabContext* context);
81 Tab* RemoveTabEntryById(SessionID::id_type id); 81 std::unique_ptr<Tab> RemoveTabEntryById(SessionID::id_type id);
82 std::vector<LiveTab*> RestoreEntryById(LiveTabContext* context, 82 std::vector<LiveTab*> RestoreEntryById(LiveTabContext* context,
83 SessionID::id_type id, 83 SessionID::id_type id,
84 WindowOpenDisposition disposition); 84 WindowOpenDisposition disposition);
85 85
86 // Notifies observers the tabs have changed. 86 // Notifies observers the tabs have changed.
87 void NotifyTabsChanged(); 87 void NotifyTabsChanged();
88 88
89 // Notifies observers the service has loaded. 89 // Notifies observers the service has loaded.
90 void NotifyLoaded(); 90 void NotifyLoaded();
91 91
92 // Adds |entry| to the list of entries and takes ownership. If |prune| is true 92 // Adds |entry| to the list of entries. If |prune| is true |PruneAndNotify| is
93 // |PruneAndNotify| is invoked. If |to_front| is true the entry is added to 93 // invoked. If |to_front| is true the entry is added to the front, otherwise
94 // the front, otherwise the back. Normal closes go to the front, but 94 // the back. Normal closes go to the front, but tab/window closes from the
95 // tab/window closes from the previous session are added to the back. 95 // previous session are added to the back.
96 void AddEntry(Entry* entry, bool prune, bool to_front); 96 void AddEntry(std::unique_ptr<Entry> entry, bool prune, bool to_front);
97 97
98 // Prunes |entries_| to contain only kMaxEntries, and removes uninteresting 98 // Prunes |entries_| to contain only kMaxEntries, and removes uninteresting
99 // entries. 99 // entries.
100 void PruneEntries(); 100 void PruneEntries();
101 101
102 // Returns an iterator into |entries_| whose id matches |id|. If |id| 102 // Returns an iterator into |entries_| whose id matches |id|. If |id|
103 // identifies a Window, then its iterator position will be returned. If it 103 // identifies a Window, then its iterator position will be returned. If it
104 // identifies a tab, then the iterator position of the Window in which the Tab 104 // identifies a tab, then the iterator position of the Window in which the Tab
105 // resides is returned. 105 // resides is returned.
106 Entries::iterator GetEntryIteratorById(SessionID::id_type id); 106 Entries::iterator GetEntryIteratorById(SessionID::id_type id);
107 107
108 // Calls either ValidateTab or ValidateWindow as appropriate. 108 // Calls either ValidateTab or ValidateWindow as appropriate.
109 static bool ValidateEntry(Entry* entry); 109 static bool ValidateEntry(const Entry& entry);
110 110
111 private: 111 private:
112 friend class PersistentTabRestoreService; 112 friend class PersistentTabRestoreService;
113 113
114 // Populates the tab's navigations from the LiveTab, and its browser_id and 114 // Populates the tab's navigations from the LiveTab, and its browser_id and
115 // pinned state from the context. 115 // pinned state from the context.
116 void PopulateTab(Tab* tab, 116 void PopulateTab(Tab* tab,
117 int index, 117 int index,
118 LiveTabContext* context, 118 LiveTabContext* context,
119 LiveTab* live_tab); 119 LiveTab* live_tab);
120 120
121 // This is a helper function for RestoreEntryById() for restoring a single 121 // This is a helper function for RestoreEntryById() for restoring a single
122 // tab. If |context| is NULL, this creates a new window for the entry. This 122 // tab. If |context| is NULL, this creates a new window for the entry. This
123 // returns the LiveTabContext into which the tab was restored. |disposition| 123 // returns the LiveTabContext into which the tab was restored. |disposition|
124 // will be respected, but if it is UNKNOWN then the tab's original attributes 124 // will be respected, but if it is UNKNOWN then the tab's original attributes
125 // will be respected instead. If a new LiveTabContext needs to be created for 125 // will be respected instead. If a new LiveTabContext needs to be created for
126 // this tab, If present, |live_tab| will be populated with the LiveTab of the 126 // this tab, If present, |live_tab| will be populated with the LiveTab of the
127 // restored tab. 127 // restored tab.
128 LiveTabContext* RestoreTab(const Tab& tab, 128 LiveTabContext* RestoreTab(const Tab& tab,
129 LiveTabContext* context, 129 LiveTabContext* context,
130 WindowOpenDisposition disposition, 130 WindowOpenDisposition disposition,
131 LiveTab** live_tab); 131 LiveTab** live_tab);
132 132
133 // Returns true if |tab| has more than one navigation. If |tab| has more 133 // Returns true if |tab| has at least one navigation and
134 // than one navigation |tab->current_navigation_index| is constrained based 134 // |tab->current_navigation_index| is in bounds.
135 // on the number of navigations. 135 static bool ValidateTab(const Tab& tab);
136 static bool ValidateTab(Tab* tab);
137 136
138 // Validates all the tabs in a window, plus the window's active tab index. 137 // Validates all the tabs in a window, plus the window's active tab index.
139 static bool ValidateWindow(Window* window); 138 static bool ValidateWindow(const Window& window);
140 139
141 // Returns true if |tab| is one we care about restoring. 140 // Returns true if |tab| is one we care about restoring.
142 bool IsTabInteresting(const Tab* tab); 141 bool IsTabInteresting(const Tab& tab);
143 142
144 // Checks whether |window| is interesting --- if it only contains a single, 143 // Checks whether |window| is interesting --- if it only contains a single,
145 // uninteresting tab, it's not interesting. 144 // uninteresting tab, it's not interesting.
146 bool IsWindowInteresting(const Window* window); 145 bool IsWindowInteresting(const Window& window);
147 146
148 // Validates and checks |entry| for interesting. 147 // Validates and checks |entry| for interesting.
149 bool FilterEntry(Entry* entry); 148 bool FilterEntry(const Entry& entry);
150 149
151 // Finds tab entries with the old browser_id and sets it to the new one. 150 // Finds tab entries with the old browser_id and sets it to the new one.
152 void UpdateTabBrowserIDs(SessionID::id_type old_id, 151 void UpdateTabBrowserIDs(SessionID::id_type old_id,
153 SessionID::id_type new_id); 152 SessionID::id_type new_id);
154 153
155 // Gets the current time. This uses the time_factory_ if there is one. 154 // Gets the current time. This uses the time_factory_ if there is one.
156 base::Time TimeNow() const; 155 base::Time TimeNow() const;
157 156
158 TabRestoreService* const tab_restore_service_; 157 TabRestoreService* const tab_restore_service_;
159 158
(...skipping 16 matching lines...) Expand all
176 std::set<LiveTabContext*> closing_contexts_; 175 std::set<LiveTabContext*> closing_contexts_;
177 176
178 TimeFactory* const time_factory_; 177 TimeFactory* const time_factory_;
179 178
180 DISALLOW_COPY_AND_ASSIGN(TabRestoreServiceHelper); 179 DISALLOW_COPY_AND_ASSIGN(TabRestoreServiceHelper);
181 }; 180 };
182 181
183 } // namespace sessions 182 } // namespace sessions
184 183
185 #endif // COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_ 184 #endif // COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_HELPER_H_
OLDNEW
« no previous file with comments | « components/sessions/core/tab_restore_service.cc ('k') | components/sessions/core/tab_restore_service_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698