| Index: chrome/browser/chromeos/gdata/gdata_cache.cc
|
| diff --git a/chrome/browser/chromeos/gdata/gdata_cache.cc b/chrome/browser/chromeos/gdata/gdata_cache.cc
|
| index 1585eaa4f6a86b173397e0e81435f07827d12374..02df3b9b4118969b9a15e68ef9b0375273601fb1 100644
|
| --- a/chrome/browser/chromeos/gdata/gdata_cache.cc
|
| +++ b/chrome/browser/chromeos/gdata/gdata_cache.cc
|
| @@ -231,7 +231,7 @@ void DeleteFilesSelectively(const FilePath& path_to_delete_pattern,
|
| void CollectBacklog(std::vector<std::string>* to_fetch,
|
| std::vector<std::string>* to_upload,
|
| const std::string& resource_id,
|
| - const GDataCache::CacheEntry& cache_entry) {
|
| + const GDataCacheEntry& cache_entry) {
|
| DCHECK(to_fetch);
|
| DCHECK(to_upload);
|
|
|
| @@ -246,7 +246,7 @@ void CollectBacklog(std::vector<std::string>* to_fetch,
|
| // present (cached locally).
|
| void CollectExistingPinnedFile(std::vector<std::string>* resource_ids,
|
| const std::string& resource_id,
|
| - const GDataCache::CacheEntry& cache_entry) {
|
| + const GDataCacheEntry& cache_entry) {
|
| DCHECK(resource_ids);
|
|
|
| if (cache_entry.IsPinned() && cache_entry.IsPresent())
|
| @@ -323,9 +323,9 @@ void RunGetResourceIdsCallback(
|
| // Runs callback with pointers dereferenced.
|
| // Used to implement GetCacheEntryOnUIThread().
|
| void RunGetCacheEntryCallback(
|
| - const GDataCache::GetCacheEntryCallback& callback,
|
| + const GetCacheEntryCallback& callback,
|
| bool* success,
|
| - GDataCache::CacheEntry* cache_entry) {
|
| + GDataCacheEntry* cache_entry) {
|
| DCHECK(success);
|
| DCHECK(cache_entry);
|
|
|
| @@ -335,7 +335,7 @@ void RunGetCacheEntryCallback(
|
|
|
| } // namespace
|
|
|
| -std::string GDataCache::CacheEntry::ToString() const {
|
| +std::string GDataCacheEntry::ToString() const {
|
| std::vector<std::string> cache_states;
|
| if (IsPresent())
|
| cache_states.push_back("present");
|
| @@ -428,7 +428,7 @@ void GDataCache::GetCacheEntryOnUIThread(
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| bool* success = new bool(false);
|
| - GDataCache::CacheEntry* cache_entry = new GDataCache::CacheEntry;
|
| + GDataCacheEntry* cache_entry = new GDataCacheEntry;
|
| pool_->GetSequencedTaskRunner(sequence_token_)->PostTaskAndReply(
|
| FROM_HERE,
|
| base::Bind(&GDataCache::GetCacheEntryHelper,
|
| @@ -711,7 +711,7 @@ void GDataCache::RequestInitializeOnUIThread() {
|
| base::Bind(&GDataCache::Initialize, base::Unretained(this)));
|
| }
|
|
|
| -scoped_ptr<GDataCache::CacheEntry> GDataCache::GetCacheEntry(
|
| +scoped_ptr<GDataCacheEntry> GDataCache::GetCacheEntry(
|
| const std::string& resource_id,
|
| const std::string& md5) {
|
| AssertOnSequencedWorkerPool();
|
| @@ -780,7 +780,7 @@ void GDataCache::GetFile(const std::string& resource_id,
|
| DCHECK(error);
|
| DCHECK(cache_file_path);
|
|
|
| - scoped_ptr<CacheEntry> cache_entry = GetCacheEntry(
|
| + scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(
|
| resource_id, md5);
|
| if (cache_entry.get() && cache_entry->IsPresent()) {
|
| CachedFileOrigin file_origin;
|
| @@ -794,7 +794,7 @@ void GDataCache::GetFile(const std::string& resource_id,
|
| *cache_file_path = GetCacheFilePath(
|
| resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| file_origin);
|
| *error = base::PLATFORM_FILE_OK;
|
| } else {
|
| @@ -812,10 +812,10 @@ void GDataCache::Store(const std::string& resource_id,
|
|
|
| FilePath dest_path;
|
| FilePath symlink_path;
|
| - CacheEntry new_cache_entry(md5, CACHE_STATE_NONE);
|
| + GDataCacheEntry new_cache_entry(md5, CACHE_STATE_NONE);
|
| CacheSubDirectoryType sub_dir_type = CACHE_TYPE_TMP;
|
|
|
| - scoped_ptr<CacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
| + scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
|
|
| // If file was previously pinned, store it in persistent dir and create
|
| // symlink in pinned dir.
|
| @@ -897,10 +897,10 @@ void GDataCache::Pin(const std::string& resource_id,
|
| FilePath dest_path;
|
| FilePath symlink_path;
|
| bool create_symlink = true;
|
| - CacheEntry new_cache_entry(md5, CACHE_STATE_NONE);
|
| + GDataCacheEntry new_cache_entry(md5, CACHE_STATE_NONE);
|
| CacheSubDirectoryType sub_dir_type = CACHE_TYPE_PERSISTENT;
|
|
|
| - scoped_ptr<CacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
| + scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
|
|
| if (!cache_entry.get()) { // Entry does not exist in cache.
|
| // Set both |dest_path| and |source_path| to /dev/null, so that:
|
| @@ -926,14 +926,14 @@ void GDataCache::Pin(const std::string& resource_id,
|
| DCHECK(cache_entry->IsPersistent());
|
| dest_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_LOCALLY_MODIFIED);
|
| source_path = dest_path;
|
| } else {
|
| // Gets the current path of the file in cache.
|
| source_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_FROM_SERVER);
|
|
|
| // If file was pinned before but actual file blob doesn't exist in cache:
|
| @@ -982,7 +982,7 @@ void GDataCache::Unpin(const std::string& resource_id,
|
| AssertOnSequencedWorkerPool();
|
| DCHECK(error);
|
|
|
| - scoped_ptr<CacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
| + scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
|
|
|
| // Unpinning a file means its entry must exist in cache.
|
| if (!cache_entry.get()) {
|
| @@ -1007,14 +1007,14 @@ void GDataCache::Unpin(const std::string& resource_id,
|
| DCHECK(cache_entry->IsPersistent());
|
| dest_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_LOCALLY_MODIFIED);
|
| source_path = dest_path;
|
| } else {
|
| // Gets the current path of the file in cache.
|
| source_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_FROM_SERVER);
|
|
|
| // If file was pinned but actual file blob still doesn't exist in cache,
|
| @@ -1049,7 +1049,7 @@ void GDataCache::Unpin(const std::string& resource_id,
|
|
|
| if (*error == base::PLATFORM_FILE_OK) {
|
| // Now that file operations have completed, update cache map.
|
| - CacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| + GDataCacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| new_cache_entry.SetPinned(false);
|
| new_cache_entry.SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
|
| metadata_->UpdateCache(resource_id, new_cache_entry);
|
| @@ -1073,7 +1073,7 @@ void GDataCache::SetMountedState(const FilePath& file_path,
|
| DCHECK(!to_mount == (extra_extension == util::kMountedArchiveFileExtension));
|
|
|
| // Get cache entry associated with the resource_id and md5
|
| - scoped_ptr<CacheEntry> cache_entry = GetCacheEntry(
|
| + scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(
|
| resource_id, md5);
|
| if (!cache_entry.get()) {
|
| *error = base::PLATFORM_FILE_ERROR_NOT_FOUND;
|
| @@ -1098,7 +1098,7 @@ void GDataCache::SetMountedState(const FilePath& file_path,
|
| // Determine the source and destination paths for moving the cache blob.
|
| FilePath source_path;
|
| CacheSubDirectoryType dest_subdir;
|
| - CacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| + GDataCacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| if (to_mount) {
|
| source_path = unmounted_path;
|
| *cache_file_path = mounted_path;
|
| @@ -1134,7 +1134,7 @@ void GDataCache::MarkDirty(const std::string& resource_id,
|
| // would have lost the md5 info during cache initialization, because the file
|
| // would have been renamed to .local extension.
|
| // So, search for entry in cache without comparing md5.
|
| - scoped_ptr<CacheEntry> cache_entry =
|
| + scoped_ptr<GDataCacheEntry> cache_entry =
|
| GetCacheEntry(resource_id, std::string());
|
|
|
| // Marking a file dirty means its entry and actual file blob must exist in
|
| @@ -1191,7 +1191,7 @@ void GDataCache::MarkDirty(const std::string& resource_id,
|
| FilePath source_path = GetCacheFilePath(
|
| resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_FROM_SERVER);
|
|
|
| // Determine destination path.
|
| @@ -1219,7 +1219,7 @@ void GDataCache::MarkDirty(const std::string& resource_id,
|
|
|
| if (*error == base::PLATFORM_FILE_OK) {
|
| // Now that file operations have completed, update cache map.
|
| - CacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| + GDataCacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| new_cache_entry.SetDirty(true);
|
| new_cache_entry.SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
|
| metadata_->UpdateCache(resource_id, new_cache_entry);
|
| @@ -1237,7 +1237,7 @@ void GDataCache::CommitDirty(const std::string& resource_id,
|
| // would have lost the md5 info during cache initialization, because the file
|
| // would have been renamed to .local extension.
|
| // So, search for entry in cache without comparing md5.
|
| - scoped_ptr<CacheEntry> cache_entry =
|
| + scoped_ptr<GDataCacheEntry> cache_entry =
|
| GetCacheEntry(resource_id, std::string());
|
|
|
| // Committing a file dirty means its entry and actual file blob must exist in
|
| @@ -1272,7 +1272,7 @@ void GDataCache::CommitDirty(const std::string& resource_id,
|
| // Get target path of symlink i.e. current path of the file in cache.
|
| FilePath target_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_LOCALLY_MODIFIED);
|
|
|
| // Since there's no need to move files, use |target_path| for both
|
| @@ -1294,7 +1294,7 @@ void GDataCache::ClearDirty(const std::string& resource_id,
|
|
|
| // |md5| is the new .<md5> extension to rename the file to.
|
| // So, search for entry in cache without comparing md5.
|
| - scoped_ptr<CacheEntry> cache_entry =
|
| + scoped_ptr<GDataCacheEntry> cache_entry =
|
| GetCacheEntry(resource_id, std::string());
|
|
|
| // Clearing a dirty file means its entry and actual file blob must exist in
|
| @@ -1323,7 +1323,7 @@ void GDataCache::ClearDirty(const std::string& resource_id,
|
| // Get the current path of the file in cache.
|
| FilePath source_path = GetCacheFilePath(resource_id,
|
| md5,
|
| - cache_entry->GetSubDirectoryType(),
|
| + GetSubDirectoryType(*cache_entry),
|
| CACHED_FILE_LOCALLY_MODIFIED);
|
|
|
| // Determine destination path.
|
| @@ -1367,7 +1367,7 @@ void GDataCache::ClearDirty(const std::string& resource_id,
|
|
|
| if (*error == base::PLATFORM_FILE_OK) {
|
| // Now that file operations have completed, update cache map.
|
| - CacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| + GDataCacheEntry new_cache_entry(md5, cache_entry->cache_state());
|
| new_cache_entry.SetDirty(false);
|
| new_cache_entry.SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
|
| metadata_->UpdateCache(resource_id, new_cache_entry);
|
| @@ -1383,7 +1383,7 @@ void GDataCache::Remove(const std::string& resource_id,
|
| // RemoveFromCacheOnBlockingPool, because we would delete all cache files
|
| // corresponding to <resource_id> regardless of the md5.
|
| // So, search for entry in cache without taking md5 into account.
|
| - scoped_ptr<CacheEntry> cache_entry =
|
| + scoped_ptr<GDataCacheEntry> cache_entry =
|
| GetCacheEntry(resource_id, std::string());
|
|
|
| // If entry doesn't exist or is dirty or mounted in cache, nothing to do.
|
| @@ -1494,12 +1494,12 @@ void GDataCache::OnCommitDirty(base::PlatformFileError* error,
|
| void GDataCache::GetCacheEntryHelper(const std::string& resource_id,
|
| const std::string& md5,
|
| bool* success,
|
| - GDataCache::CacheEntry* cache_entry) {
|
| + GDataCacheEntry* cache_entry) {
|
| AssertOnSequencedWorkerPool();
|
| DCHECK(success);
|
| DCHECK(cache_entry);
|
|
|
| - scoped_ptr<GDataCache::CacheEntry> value(GetCacheEntry(resource_id, md5));
|
| + scoped_ptr<GDataCacheEntry> value(GetCacheEntry(resource_id, md5));
|
| *success = value.get();
|
| if (*success)
|
| *cache_entry = *value;
|
| @@ -1549,6 +1549,12 @@ bool GDataCache::CreateCacheDirectories(
|
| return success;
|
| }
|
|
|
| +// static
|
| +GDataCache::CacheSubDirectoryType GDataCache::GetSubDirectoryType(
|
| + const GDataCacheEntry& cache_entry) {
|
| + return cache_entry.IsPersistent() ? CACHE_TYPE_PERSISTENT : CACHE_TYPE_TMP;
|
| +}
|
| +
|
| void SetFreeDiskSpaceGetterForTesting(FreeDiskSpaceGetterInterface* getter) {
|
| delete global_free_disk_getter_for_testing; // Safe to delete NULL;
|
| global_free_disk_getter_for_testing = getter;
|
|
|