| OLD | NEW |
| 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 #include "components/sessions/core/session_backend.h" | 5 #include "components/sessions/core/session_backend.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 // errored_ is set to true. | 73 // errored_ is set to true. |
| 74 bool FillBuffer(); | 74 bool FillBuffer(); |
| 75 | 75 |
| 76 // Whether an error condition has been detected ( | 76 // Whether an error condition has been detected ( |
| 77 bool errored_; | 77 bool errored_; |
| 78 | 78 |
| 79 // As we read from the file, data goes here. | 79 // As we read from the file, data goes here. |
| 80 std::string buffer_; | 80 std::string buffer_; |
| 81 | 81 |
| 82 // The file. | 82 // The file. |
| 83 scoped_ptr<base::File> file_; | 83 std::unique_ptr<base::File> file_; |
| 84 | 84 |
| 85 // Position in buffer_ of the data. | 85 // Position in buffer_ of the data. |
| 86 size_t buffer_position_; | 86 size_t buffer_position_; |
| 87 | 87 |
| 88 // Number of available bytes; relative to buffer_position_. | 88 // Number of available bytes; relative to buffer_position_. |
| 89 size_t available_count_; | 89 size_t available_count_; |
| 90 | 90 |
| 91 DISALLOW_COPY_AND_ASSIGN(SessionFileReader); | 91 DISALLOW_COPY_AND_ASSIGN(SessionFileReader); |
| 92 }; | 92 }; |
| 93 | 93 |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 !current_session_file_->SetLength(header_size)) | 367 !current_session_file_->SetLength(header_size)) |
| 368 current_session_file_.reset(NULL); | 368 current_session_file_.reset(NULL); |
| 369 } | 369 } |
| 370 if (!current_session_file_.get()) | 370 if (!current_session_file_.get()) |
| 371 current_session_file_.reset(OpenAndWriteHeader(GetCurrentSessionPath())); | 371 current_session_file_.reset(OpenAndWriteHeader(GetCurrentSessionPath())); |
| 372 empty_file_ = true; | 372 empty_file_ = true; |
| 373 } | 373 } |
| 374 | 374 |
| 375 base::File* SessionBackend::OpenAndWriteHeader(const base::FilePath& path) { | 375 base::File* SessionBackend::OpenAndWriteHeader(const base::FilePath& path) { |
| 376 DCHECK(!path.empty()); | 376 DCHECK(!path.empty()); |
| 377 scoped_ptr<base::File> file(new base::File( | 377 std::unique_ptr<base::File> file(new base::File( |
| 378 path, | 378 path, base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | |
| 379 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | | 379 base::File::FLAG_EXCLUSIVE_WRITE | |
| 380 base::File::FLAG_EXCLUSIVE_WRITE | base::File::FLAG_EXCLUSIVE_READ)); | 380 base::File::FLAG_EXCLUSIVE_READ)); |
| 381 if (!file->IsValid()) | 381 if (!file->IsValid()) |
| 382 return NULL; | 382 return NULL; |
| 383 FileHeader header; | 383 FileHeader header; |
| 384 header.signature = kFileSignature; | 384 header.signature = kFileSignature; |
| 385 header.version = kFileCurrentVersion; | 385 header.version = kFileCurrentVersion; |
| 386 int wrote = file->WriteAtCurrentPos(reinterpret_cast<char*>(&header), | 386 int wrote = file->WriteAtCurrentPos(reinterpret_cast<char*>(&header), |
| 387 sizeof(header)); | 387 sizeof(header)); |
| 388 if (wrote != sizeof(header)) | 388 if (wrote != sizeof(header)) |
| 389 return NULL; | 389 return NULL; |
| 390 return file.release(); | 390 return file.release(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 402 base::FilePath SessionBackend::GetCurrentSessionPath() { | 402 base::FilePath SessionBackend::GetCurrentSessionPath() { |
| 403 base::FilePath path = path_to_dir_; | 403 base::FilePath path = path_to_dir_; |
| 404 if (type_ == sessions::BaseSessionService::TAB_RESTORE) | 404 if (type_ == sessions::BaseSessionService::TAB_RESTORE) |
| 405 path = path.AppendASCII(kCurrentTabSessionFileName); | 405 path = path.AppendASCII(kCurrentTabSessionFileName); |
| 406 else | 406 else |
| 407 path = path.AppendASCII(kCurrentSessionFileName); | 407 path = path.AppendASCII(kCurrentSessionFileName); |
| 408 return path; | 408 return path; |
| 409 } | 409 } |
| 410 | 410 |
| 411 } // namespace sessions | 411 } // namespace sessions |
| OLD | NEW |