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

Side by Side Diff: chrome/browser/sessions/tab_restore_service.cc

Issue 3012001: Move implementation from header to source. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: blank line Created 10 years, 5 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 (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include "chrome/browser/sessions/tab_restore_service.h" 5 #include "chrome/browser/sessions/tab_restore_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <map> 9 #include <map>
10 10
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/scoped_vector.h" 12 #include "base/scoped_vector.h"
13 #include "base/stl_util-inl.h" 13 #include "base/stl_util-inl.h"
14 #include "chrome/browser/browser_list.h" 14 #include "chrome/browser/browser_list.h"
15 #include "chrome/browser/browser_window.h" 15 #include "chrome/browser/browser_window.h"
16 #include "chrome/browser/profile.h" 16 #include "chrome/browser/profile.h"
17 #include "chrome/browser/sessions/session_service.h" 17 #include "chrome/browser/sessions/session_service.h"
18 #include "chrome/browser/sessions/session_command.h" 18 #include "chrome/browser/sessions/session_command.h"
19 #include "chrome/browser/sessions/session_types.h" 19 #include "chrome/browser/sessions/session_types.h"
20 #include "chrome/browser/tab_contents/navigation_controller.h" 20 #include "chrome/browser/tab_contents/navigation_controller.h"
21 #include "chrome/browser/tab_contents/navigation_entry.h" 21 #include "chrome/browser/tab_contents/navigation_entry.h"
22 #include "chrome/browser/tab_contents/tab_contents.h" 22 #include "chrome/browser/tab_contents/tab_contents.h"
23 #include "chrome/common/extensions/extension.h" 23 #include "chrome/common/extensions/extension.h"
24 24
25 using base::Time; 25 using base::Time;
26 26
27 // TimeFactory-----------------------------------------------------------------
28
29 TabRestoreService::TimeFactory::~TimeFactory() {}
30
27 // Entry ---------------------------------------------------------------------- 31 // Entry ----------------------------------------------------------------------
28 32
29 // ID of the next Entry. 33 // ID of the next Entry.
30 static SessionID::id_type next_entry_id = 1; 34 static SessionID::id_type next_entry_id = 1;
31 35
32 TabRestoreService::Entry::Entry() 36 TabRestoreService::Entry::Entry()
33 : id(next_entry_id++), 37 : id(next_entry_id++),
34 type(TAB), 38 type(TAB),
35 from_last_session(false) {} 39 from_last_session(false) {}
36 40
37 TabRestoreService::Entry::Entry(Type type) 41 TabRestoreService::Entry::Entry(Type type)
38 : id(next_entry_id++), 42 : id(next_entry_id++),
39 type(type), 43 type(type),
40 from_last_session(false) {} 44 from_last_session(false) {}
41 45
46 TabRestoreService::Entry::~Entry() {}
47
42 // TabRestoreService ---------------------------------------------------------- 48 // TabRestoreService ----------------------------------------------------------
43 49
44 // static 50 // static
45 const size_t TabRestoreService::kMaxEntries = 10; 51 const size_t TabRestoreService::kMaxEntries = 10;
46 52
47 // Identifier for commands written to file. 53 // Identifier for commands written to file.
48 // The ordering in the file is as follows: 54 // The ordering in the file is as follows:
49 // . When the user closes a tab a command of type 55 // . When the user closes a tab a command of type
50 // kCommandSelectedNavigationInTab is written identifying the tab and 56 // kCommandSelectedNavigationInTab is written identifying the tab and
51 // the selected index, then a kCommandPinnedState command if the tab was 57 // the selected index, then a kCommandPinnedState command if the tab was
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } // namespace 150 } // namespace
145 151
146 TabRestoreService::Tab::Tab() 152 TabRestoreService::Tab::Tab()
147 : Entry(TAB), 153 : Entry(TAB),
148 current_navigation_index(-1), 154 current_navigation_index(-1),
149 browser_id(0), 155 browser_id(0),
150 tabstrip_index(-1), 156 tabstrip_index(-1),
151 pinned(false) { 157 pinned(false) {
152 } 158 }
153 159
160 TabRestoreService::Tab::~Tab() {
161 }
162
154 TabRestoreService::Window::Window() : Entry(WINDOW), selected_tab_index(-1) { 163 TabRestoreService::Window::Window() : Entry(WINDOW), selected_tab_index(-1) {
155 } 164 }
156 165
166 TabRestoreService::Window::~Window() {
167 }
168
157 TabRestoreService::TabRestoreService(Profile* profile, 169 TabRestoreService::TabRestoreService(Profile* profile,
158 TabRestoreService::TimeFactory* time_factory) 170 TabRestoreService::TimeFactory* time_factory)
159 : BaseSessionService(BaseSessionService::TAB_RESTORE, profile, 171 : BaseSessionService(BaseSessionService::TAB_RESTORE, profile,
160 FilePath()), 172 FilePath()),
161 load_state_(NOT_LOADED), 173 load_state_(NOT_LOADED),
162 restoring_(false), 174 restoring_(false),
163 reached_max_(false), 175 reached_max_(false),
164 entries_to_write_(0), 176 entries_to_write_(0),
165 entries_written_(0), 177 entries_written_(0),
166 time_factory_(time_factory) { 178 time_factory_(time_factory) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 set_pending_reset(true); 265 set_pending_reset(true);
254 266
255 // Schedule a command, otherwise if there are no pending commands Save does 267 // Schedule a command, otherwise if there are no pending commands Save does
256 // nothing. 268 // nothing.
257 ScheduleCommand(CreateRestoredEntryCommand(1)); 269 ScheduleCommand(CreateRestoredEntryCommand(1));
258 270
259 STLDeleteElements(&entries_); 271 STLDeleteElements(&entries_);
260 NotifyTabsChanged(); 272 NotifyTabsChanged();
261 } 273 }
262 274
275 const TabRestoreService::Entries& TabRestoreService::entries() const {
276 return entries_;
277 }
278
263 void TabRestoreService::RestoreMostRecentEntry(Browser* browser) { 279 void TabRestoreService::RestoreMostRecentEntry(Browser* browser) {
264 if (entries_.empty()) 280 if (entries_.empty())
265 return; 281 return;
266 282
267 RestoreEntryById(browser, entries_.front()->id, false); 283 RestoreEntryById(browser, entries_.front()->id, false);
268 } 284 }
269 285
270 void TabRestoreService::RestoreEntryById(Browser* browser, 286 void TabRestoreService::RestoreEntryById(Browser* browser,
271 SessionID::id_type id, 287 SessionID::id_type id,
272 bool replace_existing_tab) { 288 bool replace_existing_tab) {
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 // correctly write out the entries when Save is invoked (Save starts from 1046 // correctly write out the entries when Save is invoked (Save starts from
1031 // the front, not the end and we just added the entries to the end). 1047 // the front, not the end and we just added the entries to the end).
1032 entries_to_write_ = staging_entries_.size(); 1048 entries_to_write_ = staging_entries_.size();
1033 1049
1034 PruneAndNotify(); 1050 PruneAndNotify();
1035 } 1051 }
1036 1052
1037 Time TabRestoreService::TimeNow() const { 1053 Time TabRestoreService::TimeNow() const {
1038 return time_factory_ ? time_factory_->TimeNow() : Time::Now(); 1054 return time_factory_ ? time_factory_->TimeNow() : Time::Now();
1039 } 1055 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698