OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 #include "chrome/browser/sessions/session_backend.h" | 5 #include "chrome/browser/sessions/session_backend.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 if (current_session_file_.get() && current_session_file_->IsOpen() && | 237 if (current_session_file_.get() && current_session_file_->IsOpen() && |
238 !AppendCommandsToFile(current_session_file_.get(), *commands)) { | 238 !AppendCommandsToFile(current_session_file_.get(), *commands)) { |
239 current_session_file_.reset(NULL); | 239 current_session_file_.reset(NULL); |
240 } | 240 } |
241 empty_file_ = false; | 241 empty_file_ = false; |
242 STLDeleteElements(commands); | 242 STLDeleteElements(commands); |
243 delete commands; | 243 delete commands; |
244 } | 244 } |
245 | 245 |
246 void SessionBackend::ReadLastSessionCommands( | 246 void SessionBackend::ReadLastSessionCommands( |
247 scoped_refptr<BaseSessionService::InternalGetCommandsRequest> request) { | 247 const CancelableTaskTracker::IsCanceledCallback& is_canceled, |
248 if (request->canceled()) | 248 const BaseSessionService::InternalGetCommandsCallback& callback) { |
| 249 if (is_canceled.Run()) |
249 return; | 250 return; |
| 251 |
250 Init(); | 252 Init(); |
251 ReadLastSessionCommandsImpl(&(request->commands)); | 253 |
252 request->ForwardResult(request->handle(), request); | 254 ScopedVector<SessionCommand> commands; |
| 255 ReadLastSessionCommandsImpl(&(commands.get())); |
| 256 callback.Run(commands.Pass()); |
253 } | 257 } |
254 | 258 |
255 bool SessionBackend::ReadLastSessionCommandsImpl( | 259 bool SessionBackend::ReadLastSessionCommandsImpl( |
256 std::vector<SessionCommand*>* commands) { | 260 std::vector<SessionCommand*>* commands) { |
257 Init(); | 261 Init(); |
258 SessionFileReader file_reader(GetLastSessionPath()); | 262 SessionFileReader file_reader(GetLastSessionPath()); |
259 return file_reader.Read(type_, commands); | 263 return file_reader.Read(type_, commands); |
260 } | 264 } |
261 | 265 |
262 void SessionBackend::DeleteLastSession() { | 266 void SessionBackend::DeleteLastSession() { |
(...skipping 24 matching lines...) Expand all Loading... |
287 last_session_path); | 291 last_session_path); |
288 } | 292 } |
289 | 293 |
290 if (file_util::PathExists(current_session_path)) | 294 if (file_util::PathExists(current_session_path)) |
291 file_util::Delete(current_session_path, false); | 295 file_util::Delete(current_session_path, false); |
292 | 296 |
293 // Create and open the file for the current session. | 297 // Create and open the file for the current session. |
294 ResetFile(); | 298 ResetFile(); |
295 } | 299 } |
296 | 300 |
297 void SessionBackend::ReadCurrentSessionCommands( | |
298 scoped_refptr<BaseSessionService::InternalGetCommandsRequest> request) { | |
299 if (request->canceled()) | |
300 return; | |
301 Init(); | |
302 ReadCurrentSessionCommandsImpl(&(request->commands)); | |
303 request->ForwardResult(request->handle(), request); | |
304 } | |
305 | |
306 bool SessionBackend::ReadCurrentSessionCommandsImpl( | 301 bool SessionBackend::ReadCurrentSessionCommandsImpl( |
307 std::vector<SessionCommand*>* commands) { | 302 std::vector<SessionCommand*>* commands) { |
308 Init(); | 303 Init(); |
309 SessionFileReader file_reader(GetCurrentSessionPath()); | 304 SessionFileReader file_reader(GetCurrentSessionPath()); |
310 return file_reader.Read(type_, commands); | 305 return file_reader.Read(type_, commands); |
311 } | 306 } |
312 | 307 |
313 bool SessionBackend::AppendCommandsToFile(net::FileStream* file, | 308 bool SessionBackend::AppendCommandsToFile(net::FileStream* file, |
314 const std::vector<SessionCommand*>& commands) { | 309 const std::vector<SessionCommand*>& commands) { |
315 for (std::vector<SessionCommand*>::const_iterator i = commands.begin(); | 310 for (std::vector<SessionCommand*>::const_iterator i = commands.begin(); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 } | 394 } |
400 | 395 |
401 FilePath SessionBackend::GetCurrentSessionPath() { | 396 FilePath SessionBackend::GetCurrentSessionPath() { |
402 FilePath path = path_to_dir_; | 397 FilePath path = path_to_dir_; |
403 if (type_ == BaseSessionService::TAB_RESTORE) | 398 if (type_ == BaseSessionService::TAB_RESTORE) |
404 path = path.AppendASCII(kCurrentTabSessionFileName); | 399 path = path.AppendASCII(kCurrentTabSessionFileName); |
405 else | 400 else |
406 path = path.AppendASCII(kCurrentSessionFileName); | 401 path = path.AppendASCII(kCurrentSessionFileName); |
407 return path; | 402 return path; |
408 } | 403 } |
OLD | NEW |