| 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 "webkit/fileapi/file_system_usage_cache.h" | 5 #include "webkit/fileapi/file_system_usage_cache.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/pickle.h" | 9 #include "base/pickle.h" |
| 10 | 10 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 uint32 dirty = 0; | 79 uint32 dirty = 0; |
| 80 int64 fs_usage; | 80 int64 fs_usage; |
| 81 fs_usage = Read(usage_file_path, &is_valid, &dirty); | 81 fs_usage = Read(usage_file_path, &is_valid, &dirty); |
| 82 | 82 |
| 83 return fs_usage >= 0 && Write(usage_file_path, false, dirty, fs_usage); | 83 return fs_usage >= 0 && Write(usage_file_path, false, dirty, fs_usage); |
| 84 } | 84 } |
| 85 | 85 |
| 86 bool FileSystemUsageCache::IsValid(const FilePath& usage_file_path) { | 86 bool FileSystemUsageCache::IsValid(const FilePath& usage_file_path) { |
| 87 bool is_valid = true; | 87 bool is_valid = true; |
| 88 uint32 dirty = 0; | 88 uint32 dirty = 0; |
| 89 Read(usage_file_path, &is_valid, &dirty); | 89 int64 result = Read(usage_file_path, &is_valid, &dirty); |
| 90 if (result < 0) |
| 91 return false; |
| 92 |
| 90 return is_valid; | 93 return is_valid; |
| 91 } | 94 } |
| 92 | 95 |
| 93 // static | 96 // static |
| 94 int FileSystemUsageCache::AtomicUpdateUsageByDelta( | 97 int FileSystemUsageCache::AtomicUpdateUsageByDelta( |
| 95 const FilePath& usage_file_path, int64 delta) { | 98 const FilePath& usage_file_path, int64 delta) { |
| 96 bool is_valid = true; | 99 bool is_valid = true; |
| 97 uint32 dirty = 0; | 100 uint32 dirty = 0; |
| 98 int64 fs_usage; | 101 int64 fs_usage; |
| 99 // TODO(dmikurube): Make sure that usage_file_path is available. | 102 // TODO(dmikurube): Make sure that usage_file_path is available. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 uint32 dirty, | 159 uint32 dirty, |
| 157 int64 fs_usage) { | 160 int64 fs_usage) { |
| 158 Pickle write_pickle; | 161 Pickle write_pickle; |
| 159 write_pickle.WriteBytes(kUsageFileHeader, kUsageFileHeaderSize); | 162 write_pickle.WriteBytes(kUsageFileHeader, kUsageFileHeaderSize); |
| 160 write_pickle.WriteBool(is_valid); | 163 write_pickle.WriteBool(is_valid); |
| 161 write_pickle.WriteUInt32(dirty); | 164 write_pickle.WriteUInt32(dirty); |
| 162 write_pickle.WriteInt64(fs_usage); | 165 write_pickle.WriteInt64(fs_usage); |
| 163 | 166 |
| 164 DCHECK(!usage_file_path.empty()); | 167 DCHECK(!usage_file_path.empty()); |
| 165 FilePath temporary_usage_file_path; | 168 FilePath temporary_usage_file_path; |
| 166 file_util::CreateTemporaryFileInDir(usage_file_path.DirName(), | 169 if (!file_util::CreateTemporaryFileInDir(usage_file_path.DirName(), |
| 167 &temporary_usage_file_path); | 170 &temporary_usage_file_path)) { |
| 171 return -1; |
| 172 } |
| 173 |
| 168 int bytes_written = file_util::WriteFile(temporary_usage_file_path, | 174 int bytes_written = file_util::WriteFile(temporary_usage_file_path, |
| 169 (const char *)write_pickle.data(), | 175 (const char *)write_pickle.data(), |
| 170 write_pickle.size()); | 176 write_pickle.size()); |
| 171 if (bytes_written != kUsageFileSize) | 177 if (bytes_written != kUsageFileSize) |
| 172 return -1; | 178 return -1; |
| 173 | 179 |
| 174 if (file_util::ReplaceFile(temporary_usage_file_path, usage_file_path)) | 180 if (file_util::ReplaceFile(temporary_usage_file_path, usage_file_path)) |
| 175 return bytes_written; | 181 return bytes_written; |
| 176 else | 182 else |
| 177 return -1; | 183 return -1; |
| 178 } | 184 } |
| 179 | 185 |
| 180 } // namespace fileapi | 186 } // namespace fileapi |
| OLD | NEW |