Chromium Code Reviews| 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 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ | 6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 // Structure to store information of an existing cache file. | 117 // Structure to store information of an existing cache file. |
| 118 struct CacheEntry { | 118 struct CacheEntry { |
| 119 CacheEntry() : sub_dir_type(CACHE_TYPE_META), | 119 CacheEntry() : sub_dir_type(CACHE_TYPE_META), |
| 120 cache_state(0) {} | 120 cache_state(0) {} |
| 121 | 121 |
| 122 CacheEntry(const std::string& md5, | 122 CacheEntry(const std::string& md5, |
| 123 CacheSubDirectoryType sub_dir_type, | 123 CacheSubDirectoryType sub_dir_type, |
| 124 int cache_state) | 124 int cache_state) |
| 125 : md5(md5), | 125 : md5(md5), |
| 126 sub_dir_type(sub_dir_type), | 126 sub_dir_type(sub_dir_type), |
| 127 cache_state(cache_state) { | 127 cache_state(cache_state) { |
| 128 } | 128 } |
| 129 | 129 |
| 130 bool IsPresent() const { return IsCachePresent(cache_state); } | 130 bool IsPresent() const { return IsCachePresent(cache_state); } |
| 131 bool IsPinned() const { return IsCachePinned(cache_state); } | 131 bool IsPinned() const { return IsCachePinned(cache_state); } |
| 132 bool IsDirty() const { return IsCacheDirty(cache_state); } | 132 bool IsDirty() const { return IsCacheDirty(cache_state); } |
| 133 bool IsMounted() const { return IsCacheMounted(cache_state); } | 133 bool IsMounted() const { return IsCacheMounted(cache_state); } |
| 134 | 134 |
| 135 // For debugging purposes. | 135 // For debugging purposes. |
| 136 std::string ToString() const; | 136 std::string ToString() const; |
| 137 | 137 |
| 138 std::string md5; | 138 std::string md5; |
| 139 CacheSubDirectoryType sub_dir_type; | 139 CacheSubDirectoryType sub_dir_type; |
| 140 int cache_state; | 140 int cache_state; |
| 141 }; | 141 }; |
| 142 | 142 |
| 143 // Callback for GetCacheEntryOnUIThread. | |
| 144 // |success| indicates if the operation was successful. | |
| 145 // |cache_entry| is the obtained cache entry. | |
| 146 // | |
| 147 // TODO(satorux): Unlike other callback types, this has to be defined | |
| 148 // inside GDataCache as CacheEntry is inside GDataCache. We should get them | |
| 149 // outside of GDataCache. | |
|
hshi1
2012/06/28 22:11:21
Maybe gdata_params.h is a good place to define cal
satorux1
2012/06/28 22:41:17
Well, I plan to get rid of gdata_params.h. Callbac
| |
| 150 typedef base::Callback<void(bool success, const CacheEntry& cache_entry)> | |
| 151 GetCacheEntryCallback; | |
| 152 | |
| 143 static bool IsCachePresent(int cache_state) { | 153 static bool IsCachePresent(int cache_state) { |
| 144 return cache_state & CACHE_STATE_PRESENT; | 154 return cache_state & CACHE_STATE_PRESENT; |
| 145 } | 155 } |
| 146 static bool IsCachePinned(int cache_state) { | 156 static bool IsCachePinned(int cache_state) { |
| 147 return cache_state & CACHE_STATE_PINNED; | 157 return cache_state & CACHE_STATE_PINNED; |
| 148 } | 158 } |
| 149 static bool IsCacheDirty(int cache_state) { | 159 static bool IsCacheDirty(int cache_state) { |
| 150 return cache_state & CACHE_STATE_DIRTY; | 160 return cache_state & CACHE_STATE_DIRTY; |
| 151 } | 161 } |
| 152 static bool IsCacheMounted(int cache_state) { | 162 static bool IsCacheMounted(int cache_state) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 bool IsUnderGDataCacheDirectory(const FilePath& path) const; | 208 bool IsUnderGDataCacheDirectory(const FilePath& path) const; |
| 199 | 209 |
| 200 // Adds observer. | 210 // Adds observer. |
| 201 // Must be called on UI thread. | 211 // Must be called on UI thread. |
| 202 void AddObserver(Observer* observer); | 212 void AddObserver(Observer* observer); |
| 203 | 213 |
| 204 // Removes observer. | 214 // Removes observer. |
| 205 // Must be called on UI thread. | 215 // Must be called on UI thread. |
| 206 void RemoveObserver(Observer* observer); | 216 void RemoveObserver(Observer* observer); |
| 207 | 217 |
| 218 // Gets the cache entry by the given resource ID and MD5. | |
| 219 // See also GetCacheEntry(). | |
| 220 // | |
| 221 // Must be called on UI thread. |callback| is run on UI thread. | |
| 222 void GetCacheEntryOnUIThread( | |
| 223 const std::string& resource_id, | |
| 224 const std::string& md5, | |
| 225 const GetCacheEntryCallback& callback); | |
| 226 | |
| 208 // Gets the resource IDs of pinned-but-not-fetched files and | 227 // Gets the resource IDs of pinned-but-not-fetched files and |
| 209 // dirty-but-not-uploaded files. | 228 // dirty-but-not-uploaded files. |
| 210 // | 229 // |
| 211 // Must be called on UI thread. |callback| is run on UI thread. | 230 // Must be called on UI thread. |callback| is run on UI thread. |
| 212 void GetResourceIdsOfBacklogOnUIThread( | 231 void GetResourceIdsOfBacklogOnUIThread( |
| 213 const GetResourceIdsCallback& callback); | 232 const GetResourceIdsCallback& callback); |
| 214 | 233 |
| 215 // Frees up disk space to store the given number of bytes, while keeping | 234 // Frees up disk space to store the given number of bytes, while keeping |
| 216 // kMinFreSpace bytes on the disk, if needed. |has_enough_space| is | 235 // kMinFreSpace bytes on the disk, if needed. |has_enough_space| is |
| 217 // updated to indicate if we have enough space. | 236 // updated to indicate if we have enough space. |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 411 const std::string& resource_id, | 430 const std::string& resource_id, |
| 412 const std::string& md5, | 431 const std::string& md5, |
| 413 const CacheOperationCallback& callback); | 432 const CacheOperationCallback& callback); |
| 414 | 433 |
| 415 // Runs callback and notifies the observers when file is committed. | 434 // Runs callback and notifies the observers when file is committed. |
| 416 void OnCommitDirty(base::PlatformFileError* error, | 435 void OnCommitDirty(base::PlatformFileError* error, |
| 417 const std::string& resource_id, | 436 const std::string& resource_id, |
| 418 const std::string& md5, | 437 const std::string& md5, |
| 419 const CacheOperationCallback& callback); | 438 const CacheOperationCallback& callback); |
| 420 | 439 |
| 440 // Helper function to implement GetCacheEntryOnUIThread(). | |
| 441 void GetCacheEntryHelper(const std::string& resource_id, | |
| 442 const std::string& md5, | |
| 443 bool* success, | |
| 444 GDataCache::CacheEntry* cache_entry); | |
| 445 | |
| 421 // The root directory of the cache (i.e. <user_profile_dir>/GCache/v1). | 446 // The root directory of the cache (i.e. <user_profile_dir>/GCache/v1). |
| 422 const FilePath cache_root_path_; | 447 const FilePath cache_root_path_; |
| 423 // Paths for all subdirectories of GCache, one for each | 448 // Paths for all subdirectories of GCache, one for each |
| 424 // GDataCache::CacheSubDirectoryType enum. | 449 // GDataCache::CacheSubDirectoryType enum. |
| 425 const std::vector<FilePath> cache_paths_; | 450 const std::vector<FilePath> cache_paths_; |
| 426 base::SequencedWorkerPool* pool_; | 451 base::SequencedWorkerPool* pool_; |
| 427 const base::SequencedWorkerPool::SequenceToken sequence_token_; | 452 const base::SequencedWorkerPool::SequenceToken sequence_token_; |
| 428 | 453 |
| 429 // The cache state data. This member must be access only on the blocking pool. | 454 // The cache state data. This member must be access only on the blocking pool. |
| 430 scoped_ptr<GDataCacheMetadata> metadata_; | 455 scoped_ptr<GDataCacheMetadata> metadata_; |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 456 }; | 481 }; |
| 457 | 482 |
| 458 // Sets the free disk space getter for testing. | 483 // Sets the free disk space getter for testing. |
| 459 // The existing getter is deleted. | 484 // The existing getter is deleted. |
| 460 void SetFreeDiskSpaceGetterForTesting( | 485 void SetFreeDiskSpaceGetterForTesting( |
| 461 FreeDiskSpaceGetterInterface* getter); | 486 FreeDiskSpaceGetterInterface* getter); |
| 462 | 487 |
| 463 } // namespace gdata | 488 } // namespace gdata |
| 464 | 489 |
| 465 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ | 490 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_CACHE_H_ |
| OLD | NEW |