| Index: chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| diff --git a/chrome/browser/chromeos/gdata/gdata_file_system.cc b/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| index 53d3884a83bd74f52025fd3f8788c7462e847e9b..b37b8e98e1a2f31faf23249e0bb5dcb4aa7873b7 100644
|
| --- a/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| +++ b/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| @@ -190,21 +190,6 @@ void OnTransferRegularFileCompleteForCopy(
|
| relay_proxy->PostTask(FROM_HERE, base::Bind(callback, error));
|
| }
|
|
|
| -// Gets a cache entry from a GDataCache, must be called on the blocking pool.
|
| -// The result value is copied to cache_entry on success.
|
| -void GetCacheEntryOnBlockingPool(
|
| - GDataCache* cache,
|
| - const std::string& resource_id,
|
| - const std::string& md5,
|
| - GDataCache::CacheEntry* cache_entry,
|
| - bool* success) {
|
| - scoped_ptr<GDataCache::CacheEntry> value(
|
| - cache->GetCacheEntry(resource_id, md5));
|
| - *success = value.get();
|
| - if (*success)
|
| - *cache_entry = *value;
|
| -}
|
| -
|
| // Runs GetFileCallback with pointers dereferenced.
|
| // Used for PostTaskAndReply().
|
| void RunGetFileCallbackHelper(const GetFileCallback& callback,
|
| @@ -253,21 +238,6 @@ void OnAddUploadFileCompleted(
|
| callback.Run(error);
|
| }
|
|
|
| -// Used to implement GetCacheState.
|
| -void RunGetCacheStateCallbackHelper(
|
| - const GetCacheStateCallback& callback,
|
| - GDataCache::CacheEntry* cache_entry,
|
| - bool* success) {
|
| - DCHECK(cache_entry);
|
| - DCHECK(success);
|
| - if (callback.is_null())
|
| - return;
|
| -
|
| - callback.Run(
|
| - base::PLATFORM_FILE_OK,
|
| - *success ? cache_entry->cache_state : GDataCache::CACHE_STATE_NONE);
|
| -}
|
| -
|
| // The class to wait for the initial load of root feed and runs the callback
|
| // after the initialization.
|
| class InitialLoadObserver : public GDataFileSystemInterface::Observer {
|
| @@ -2292,62 +2262,6 @@ void GDataFileSystem::OnUpdatedFileUploaded(
|
| base::Passed(&upload_file_info)));
|
| }
|
|
|
| -void GDataFileSystem::GetCacheState(const std::string& resource_id,
|
| - const std::string& md5,
|
| - const GetCacheStateCallback& callback) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
| - BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - // Always post a task to the UI thread to call GetCacheStateOnUIThread even if
|
| - // GetCacheState is called on the UI thread. This ensures that, regardless of
|
| - // whether GDataFileSystem is locked or not, GDataFileSystem is unlocked when
|
| - // GetCacheStateOnUIThread is called.
|
| - const bool posted = BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(&GDataFileSystem::GetCacheStateOnUIThread,
|
| - ui_weak_ptr_,
|
| - resource_id,
|
| - md5,
|
| - CreateRelayCallback(callback)));
|
| - DCHECK(posted);
|
| -}
|
| -
|
| -void GDataFileSystem::GetCacheStateOnUIThread(
|
| - const std::string& resource_id,
|
| - const std::string& md5,
|
| - const GetCacheStateCallback& callback) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - GDataEntry* entry = root_->GetEntryByResourceId(resource_id);
|
| - if (!entry || !entry->AsGDataFile()) {
|
| - const bool posted = BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(callback,
|
| - base::PLATFORM_FILE_ERROR_NOT_FOUND,
|
| - GDataCache::CACHE_STATE_NONE));
|
| - DCHECK(posted);
|
| - return;
|
| - }
|
| -
|
| - GDataCache::CacheEntry* cache_entry = new GDataCache::CacheEntry;
|
| - bool* success = new bool(false);
|
| - PostBlockingPoolSequencedTaskAndReply(
|
| - FROM_HERE,
|
| - sequence_token_,
|
| - base::Bind(&GetCacheEntryOnBlockingPool,
|
| - cache_,
|
| - resource_id,
|
| - md5,
|
| - cache_entry,
|
| - success),
|
| - base::Bind(&RunGetCacheStateCallbackHelper,
|
| - callback,
|
| - base::Owned(cache_entry),
|
| - base::Owned(success)));
|
| -}
|
| -
|
| void GDataFileSystem::GetAvailableSpace(
|
| const GetAvailableSpaceCallback& callback) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
| @@ -2847,23 +2761,13 @@ void GDataFileSystem::OnFileDownloaded(
|
| // If user cancels download of a pinned-but-not-fetched file, mark file as
|
| // unpinned so that we do not sync the file again.
|
| if (status == GDATA_CANCELLED) {
|
| - GDataCache::CacheEntry* cache_entry = new GDataCache::CacheEntry;
|
| - bool* success = new bool(false);
|
| - PostBlockingPoolSequencedTaskAndReply(
|
| - FROM_HERE,
|
| - sequence_token_,
|
| - base::Bind(&GetCacheEntryOnBlockingPool,
|
| - cache_,
|
| - params.resource_id,
|
| - params.md5,
|
| - cache_entry,
|
| - success),
|
| + cache_->GetCacheEntryOnUIThread(
|
| + params.resource_id,
|
| + params.md5,
|
| base::Bind(&GDataFileSystem::UnpinIfPinned,
|
| ui_weak_ptr_,
|
| params.resource_id,
|
| - params.md5,
|
| - base::Owned(cache_entry),
|
| - base::Owned(success)));
|
| + params.md5));
|
| }
|
|
|
| // At this point, the disk can be full or nearly full for several reasons:
|
| @@ -2891,14 +2795,15 @@ void GDataFileSystem::OnFileDownloaded(
|
| base::Owned(has_enough_space)));
|
| }
|
|
|
| -void GDataFileSystem::UnpinIfPinned(const std::string& resource_id,
|
| - const std::string& md5,
|
| - GDataCache::CacheEntry* cache_entry,
|
| - bool* cache_entry_is_valid) {
|
| +void GDataFileSystem::UnpinIfPinned(
|
| + const std::string& resource_id,
|
| + const std::string& md5,
|
| + bool success,
|
| + const GDataCache::CacheEntry& cache_entry) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| // TODO(hshi): http://crbug.com/127138 notify when file properties change.
|
| // This allows file manager to clear the "Available offline" checkbox.
|
| - if (*cache_entry_is_valid && cache_entry->IsPinned())
|
| + if (success && cache_entry.IsPinned())
|
| cache_->UnpinOnUIThread(resource_id, md5, CacheOperationCallback());
|
| }
|
|
|
|
|