chromeos: Stop returning scoped_ptr from  GDataCache::GetCacheEntry

Remove unused code from gdata_cache_unittes.cc

BUG=133504
TEST=unit_tests --gtest_filter="GData*"

Review URL: https://chromiumcodereview.appspot.com/10581038

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146312 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/chromeos/gdata/gdata_cache.cc b/chrome/browser/chromeos/gdata/gdata_cache.cc
index 5bb2c09c..cb06f06 100644
--- a/chrome/browser/chromeos/gdata/gdata_cache.cc
+++ b/chrome/browser/chromeos/gdata/gdata_cache.cc
@@ -711,11 +711,12 @@
       base::Bind(&GDataCache::Initialize, base::Unretained(this)));
 }
 
-scoped_ptr<GDataCacheEntry> GDataCache::GetCacheEntry(
-    const std::string& resource_id,
-    const std::string& md5) {
+bool GDataCache::GetCacheEntry(const std::string& resource_id,
+                               const std::string& md5,
+                               GDataCacheEntry* entry) {
+  DCHECK(entry);
   AssertOnSequencedWorkerPool();
-  return metadata_->GetCacheEntry(resource_id, md5);
+  return metadata_->GetCacheEntry(resource_id, md5, entry);
 }
 
 // static
@@ -780,13 +781,13 @@
   DCHECK(error);
   DCHECK(cache_file_path);
 
-  scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(
-      resource_id, md5);
-  if (cache_entry.get() && cache_entry->IsPresent()) {
+  GDataCacheEntry cache_entry;
+  if (GetCacheEntry(resource_id, md5, &cache_entry) &&
+      cache_entry.IsPresent()) {
     CachedFileOrigin file_origin;
-    if (cache_entry->IsMounted()) {
+    if (cache_entry.IsMounted()) {
       file_origin = CACHED_FILE_MOUNTED;
-    } else if (cache_entry->IsDirty()) {
+    } else if (cache_entry.IsDirty()) {
       file_origin = CACHED_FILE_LOCALLY_MODIFIED;
     } else {
       file_origin = CACHED_FILE_FROM_SERVER;
@@ -794,7 +795,7 @@
     *cache_file_path = GetCacheFilePath(
         resource_id,
         md5,
-        GetSubDirectoryType(*cache_entry),
+        GetSubDirectoryType(cache_entry),
         file_origin);
     *error = base::PLATFORM_FILE_OK;
   } else {
@@ -814,15 +815,14 @@
   FilePath symlink_path;
   CacheSubDirectoryType sub_dir_type = CACHE_TYPE_TMP;
 
-  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.
-  if (cache_entry.get()) {  // File exists in cache.
+  GDataCacheEntry cache_entry;
+  if (GetCacheEntry(resource_id, md5, &cache_entry)) {  // File exists in cache.
     // If file is dirty or mounted, return error.
-    if (cache_entry->IsDirty() || cache_entry->IsMounted()) {
+    if (cache_entry.IsDirty() || cache_entry.IsMounted()) {
       LOG(WARNING) << "Can't store a file to replace a "
-                   << (cache_entry->IsDirty() ? "dirty" : "mounted")
+                   << (cache_entry.IsDirty() ? "dirty" : "mounted")
                    << " file: res_id=" << resource_id
                    << ", md5=" << md5;
       *error = base::PLATFORM_FILE_ERROR_IN_USE;
@@ -830,7 +830,7 @@
     }
 
     // If file is pinned, determines destination path.
-    if (cache_entry->IsPinned()) {
+    if (cache_entry.IsPinned()) {
       sub_dir_type = CACHE_TYPE_PERSISTENT;
       dest_path = GetCacheFilePath(resource_id, md5, sub_dir_type,
                                    CACHED_FILE_FROM_SERVER);
@@ -838,9 +838,6 @@
           resource_id, std::string(), CACHE_TYPE_PINNED,
           CACHED_FILE_FROM_SERVER);
     }
-  } else {
-    // The file does not exist in the cache. Create a new entry.
-    cache_entry.reset(new GDataCacheEntry);
   }
 
   // File wasn't pinned or doesn't exist in cache, store in tmp dir.
@@ -880,10 +877,10 @@
 
   if (*error == base::PLATFORM_FILE_OK) {
     // Now that file operations have completed, update cache map.
-    cache_entry->set_md5(md5);
-    cache_entry->SetPresent(true);
-    cache_entry->SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
-    metadata_->AddOrUpdateCacheEntry(resource_id, *cache_entry);
+    cache_entry.set_md5(md5);
+    cache_entry.SetPresent(true);
+    cache_entry.SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
+    metadata_->AddOrUpdateCacheEntry(resource_id, cache_entry);
   }
 }
 
@@ -900,9 +897,9 @@
   bool create_symlink = true;
   CacheSubDirectoryType sub_dir_type = CACHE_TYPE_PERSISTENT;
 
-  scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
-
-  if (!cache_entry.get()) {  // Entry does not exist in cache.
+  GDataCacheEntry cache_entry;
+  if (!GetCacheEntry(resource_id, md5, &cache_entry)) {
+    // Entry does not exist in cache.
     // Set both |dest_path| and |source_path| to /dev/null, so that:
     // 1) ModifyCacheState won't move files when |source_path| and |dest_path|
     //    are the same.
@@ -914,27 +911,24 @@
     // Set sub_dir_type to TMP. The file will be first downloaded in 'tmp',
     // then moved to 'persistent'.
     sub_dir_type = CACHE_TYPE_TMP;
-
-    // We'll add a new cache entry.
-    cache_entry.reset(new GDataCacheEntry);
   } else {  // File exists in cache, determines destination path.
     // Determine source and destination paths.
 
     // If file is dirty or mounted, don't move it, so determine |dest_path| and
     // set |source_path| the same, because ModifyCacheState only moves files if
     // source and destination are different.
-    if (cache_entry->IsDirty() || cache_entry->IsMounted()) {
-      DCHECK(cache_entry->IsPersistent());
+    if (cache_entry.IsDirty() || cache_entry.IsMounted()) {
+      DCHECK(cache_entry.IsPersistent());
       dest_path = GetCacheFilePath(resource_id,
                                    md5,
-                                   GetSubDirectoryType(*cache_entry),
+                                   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,
-                                     GetSubDirectoryType(*cache_entry),
+                                     GetSubDirectoryType(cache_entry),
                                      CACHED_FILE_FROM_SERVER);
 
       // If file was pinned before but actual file blob doesn't exist in cache:
@@ -942,7 +936,7 @@
       //   because ModifyCacheState only moves files if source and destination
       //   are different
       // - don't create symlink since it already exists.
-      if (!cache_entry->IsPresent()) {
+      if (!cache_entry.IsPresent()) {
         dest_path = source_path;
         create_symlink = false;
       } else {  // File exists, move it to persistent dir.
@@ -970,10 +964,10 @@
 
   if (*error == base::PLATFORM_FILE_OK) {
     // Now that file operations have completed, update cache map.
-    cache_entry->set_md5(md5);
-    cache_entry->SetPinned(true);
-    cache_entry->SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
-    metadata_->AddOrUpdateCacheEntry(resource_id, *cache_entry);
+    cache_entry.set_md5(md5);
+    cache_entry.SetPinned(true);
+    cache_entry.SetPersistent(sub_dir_type == CACHE_TYPE_PERSISTENT);
+    metadata_->AddOrUpdateCacheEntry(resource_id, cache_entry);
   }
 }
 
@@ -984,10 +978,9 @@
   AssertOnSequencedWorkerPool();
   DCHECK(error);
 
-  scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(resource_id, md5);
-
   // Unpinning a file means its entry must exist in cache.
-  if (!cache_entry.get()) {
+  GDataCacheEntry cache_entry;
+  if (!GetCacheEntry(resource_id, md5, &cache_entry)) {
     LOG(WARNING) << "Can't unpin a file that wasn't pinned or cached: res_id="
                  << resource_id
                  << ", md5=" << md5;
@@ -1004,26 +997,26 @@
   // If file is dirty or mounted, don't move it, so determine |dest_path| and
   // set |source_path| the same, because ModifyCacheState moves files if source
   // and destination are different.
-  if (cache_entry->IsDirty() || cache_entry->IsMounted()) {
+  if (cache_entry.IsDirty() || cache_entry.IsMounted()) {
     sub_dir_type = CACHE_TYPE_PERSISTENT;
-    DCHECK(cache_entry->IsPersistent());
+    DCHECK(cache_entry.IsPersistent());
     dest_path = GetCacheFilePath(resource_id,
                                  md5,
-                                 GetSubDirectoryType(*cache_entry),
+                                 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,
-                                   GetSubDirectoryType(*cache_entry),
+                                   GetSubDirectoryType(cache_entry),
                                    CACHED_FILE_FROM_SERVER);
 
     // If file was pinned but actual file blob still doesn't exist in cache,
     // don't need to move the file, so set |dest_path| to |source_path|, because
     // ModifyCacheState only moves files if source and destination are
     // different.
-    if (!cache_entry->IsPresent()) {
+    if (!cache_entry.IsPresent()) {
       dest_path = source_path;
     } else {  // File exists, move it to tmp dir.
       dest_path = GetCacheFilePath(resource_id, md5,
@@ -1035,7 +1028,7 @@
   // If file was pinned, get absolute path of symlink in pinned dir so as to
   // remove it.
   FilePath symlink_path;
-  if (cache_entry->IsPinned()) {
+  if (cache_entry.IsPinned()) {
     symlink_path = GetCacheFilePath(resource_id,
                                     std::string(),
                                     CACHE_TYPE_PINNED,
@@ -1051,8 +1044,8 @@
 
   if (*error == base::PLATFORM_FILE_OK) {
     // Now that file operations have completed, update cache map.
-    if (cache_entry->IsPresent()) {
-      GDataCacheEntry new_cache_entry(md5, cache_entry->cache_state());
+    if (cache_entry.IsPresent()) {
+      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_->AddOrUpdateCacheEntry(resource_id, new_cache_entry);
@@ -1080,20 +1073,19 @@
   DCHECK(!to_mount == (extra_extension == util::kMountedArchiveFileExtension));
 
   // Get cache entry associated with the resource_id and md5
-  scoped_ptr<GDataCacheEntry> cache_entry = GetCacheEntry(
-      resource_id, md5);
-  if (!cache_entry.get()) {
+  GDataCacheEntry cache_entry;
+  if (!GetCacheEntry(resource_id, md5, &cache_entry)) {
     *error = base::PLATFORM_FILE_ERROR_NOT_FOUND;
     return;
   }
-  if (to_mount == cache_entry->IsMounted()) {
+  if (to_mount == cache_entry.IsMounted()) {
     *error = base::PLATFORM_FILE_ERROR_INVALID_OPERATION;
     return;
   }
 
   // Get the subdir type and path for the unmounted state.
   CacheSubDirectoryType unmounted_subdir =
-      cache_entry->IsPinned() ? CACHE_TYPE_PERSISTENT : CACHE_TYPE_TMP;
+      cache_entry.IsPinned() ? CACHE_TYPE_PERSISTENT : CACHE_TYPE_TMP;
   FilePath unmounted_path = GetCacheFilePath(
       resource_id, md5, unmounted_subdir, CACHED_FILE_FROM_SERVER);
 
@@ -1105,7 +1097,7 @@
   // Determine the source and destination paths for moving the cache blob.
   FilePath source_path;
   CacheSubDirectoryType dest_subdir;
-  GDataCacheEntry 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;
@@ -1141,12 +1133,12 @@
   // 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<GDataCacheEntry> cache_entry =
-      GetCacheEntry(resource_id, std::string());
 
   // Marking a file dirty means its entry and actual file blob must exist in
   // cache.
-  if (!cache_entry.get() || !cache_entry->IsPresent()) {
+  GDataCacheEntry cache_entry;
+  if (!GetCacheEntry(resource_id, std::string(), &cache_entry) ||
+      !cache_entry.IsPresent()) {
     LOG(WARNING) << "Can't mark dirty a file that wasn't cached: res_id="
                  << resource_id
                  << ", md5=" << md5;
@@ -1160,9 +1152,9 @@
   // not being uploaded.  However, for now, cache doesn't know if uploading of a
   // file is in progress.  Per zel, the upload process should be canceled before
   // MarkDirtyInCache is called again.
-  if (cache_entry->IsDirty()) {
+  if (cache_entry.IsDirty()) {
     // The file must be in persistent dir.
-    DCHECK(cache_entry->IsPersistent());
+    DCHECK(cache_entry.IsPersistent());
 
     // Determine symlink path in outgoing dir, so as to remove it.
     FilePath symlink_path = GetCacheFilePath(
@@ -1198,7 +1190,7 @@
   FilePath source_path = GetCacheFilePath(
       resource_id,
       md5,
-      GetSubDirectoryType(*cache_entry),
+      GetSubDirectoryType(cache_entry),
       CACHED_FILE_FROM_SERVER);
 
   // Determine destination path.
@@ -1210,7 +1202,7 @@
 
   // If file is pinned, update symlink in pinned dir.
   FilePath symlink_path;
-  if (cache_entry->IsPinned()) {
+  if (cache_entry.IsPinned()) {
     symlink_path = GetCacheFilePath(resource_id,
                                     std::string(),
                                     CACHE_TYPE_PINNED,
@@ -1226,7 +1218,7 @@
 
   if (*error == base::PLATFORM_FILE_OK) {
     // Now that file operations have completed, update cache map.
-    GDataCacheEntry 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_->AddOrUpdateCacheEntry(resource_id, new_cache_entry);
@@ -1244,12 +1236,12 @@
   // 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<GDataCacheEntry> cache_entry =
-      GetCacheEntry(resource_id, std::string());
 
   // Committing a file dirty means its entry and actual file blob must exist in
   // cache.
-  if (!cache_entry.get() || !cache_entry->IsPresent()) {
+  GDataCacheEntry cache_entry;
+  if (!GetCacheEntry(resource_id, std::string(), &cache_entry) ||
+      !cache_entry.IsPresent()) {
     LOG(WARNING) << "Can't commit dirty a file that wasn't cached: res_id="
                  << resource_id
                  << ", md5=" << md5;
@@ -1259,7 +1251,7 @@
 
   // If a file is not dirty (it should have been marked dirty via
   // MarkDirtyInCache), committing it dirty is an invalid operation.
-  if (!cache_entry->IsDirty()) {
+  if (!cache_entry.IsDirty()) {
     LOG(WARNING) << "Can't commit a non-dirty file: res_id="
                  << resource_id
                  << ", md5=" << md5;
@@ -1268,7 +1260,7 @@
   }
 
   // Dirty files must be in persistent dir.
-  DCHECK(cache_entry->IsPersistent());
+  DCHECK(cache_entry.IsPersistent());
 
   // Create symlink in outgoing dir.
   FilePath symlink_path = GetCacheFilePath(resource_id,
@@ -1279,7 +1271,7 @@
   // Get target path of symlink i.e. current path of the file in cache.
   FilePath target_path = GetCacheFilePath(resource_id,
                                           md5,
-                                          GetSubDirectoryType(*cache_entry),
+                                          GetSubDirectoryType(cache_entry),
                                           CACHED_FILE_LOCALLY_MODIFIED);
 
   // Since there's no need to move files, use |target_path| for both
@@ -1301,12 +1293,12 @@
 
   // |md5| is the new .<md5> extension to rename the file to.
   // So, search for entry in cache without comparing md5.
-  scoped_ptr<GDataCacheEntry> cache_entry =
-      GetCacheEntry(resource_id, std::string());
+  GDataCacheEntry cache_entry;
 
   // Clearing a dirty file means its entry and actual file blob must exist in
   // cache.
-  if (!cache_entry.get() || !cache_entry->IsPresent()) {
+  if (!GetCacheEntry(resource_id, std::string(), &cache_entry) ||
+      !cache_entry.IsPresent()) {
     LOG(WARNING) << "Can't clear dirty state of a file that wasn't cached: "
                  << "res_id=" << resource_id
                  << ", md5=" << md5;
@@ -1316,7 +1308,7 @@
 
   // If a file is not dirty (it should have been marked dirty via
   // MarkDirtyInCache), clearing its dirty state is an invalid operation.
-  if (!cache_entry->IsDirty()) {
+  if (!cache_entry.IsDirty()) {
     LOG(WARNING) << "Can't clear dirty state of a non-dirty file: res_id="
                  << resource_id
                  << ", md5=" << md5;
@@ -1325,19 +1317,19 @@
   }
 
   // File must be dirty and hence in persistent dir.
-  DCHECK(cache_entry->IsPersistent());
+  DCHECK(cache_entry.IsPersistent());
 
   // Get the current path of the file in cache.
   FilePath source_path = GetCacheFilePath(resource_id,
                                           md5,
-                                          GetSubDirectoryType(*cache_entry),
+                                          GetSubDirectoryType(cache_entry),
                                           CACHED_FILE_LOCALLY_MODIFIED);
 
   // Determine destination path.
   // If file is pinned, move it to persistent dir with .md5 extension;
   // otherwise, move it to tmp dir with .md5 extension.
   const CacheSubDirectoryType sub_dir_type =
-      cache_entry->IsPinned() ? CACHE_TYPE_PERSISTENT : CACHE_TYPE_TMP;
+      cache_entry.IsPinned() ? CACHE_TYPE_PERSISTENT : CACHE_TYPE_TMP;
   FilePath dest_path = GetCacheFilePath(resource_id,
                                         md5,
                                         sub_dir_type,
@@ -1356,7 +1348,7 @@
                             false /* don't create symlink */);
 
   // If file is pinned, update symlink in pinned dir.
-  if (*error == base::PLATFORM_FILE_OK && cache_entry->IsPinned()) {
+  if (*error == base::PLATFORM_FILE_OK && cache_entry.IsPinned()) {
     symlink_path = GetCacheFilePath(resource_id,
                                     std::string(),
                                     CACHE_TYPE_PINNED,
@@ -1374,7 +1366,7 @@
 
   if (*error == base::PLATFORM_FILE_OK) {
     // Now that file operations have completed, update cache map.
-    GDataCacheEntry 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_->AddOrUpdateCacheEntry(resource_id, new_cache_entry);
@@ -1389,16 +1381,15 @@
   // MD5 is not passed into RemoveCacheEntry 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<GDataCacheEntry> cache_entry =
-      GetCacheEntry(resource_id, std::string());
+  GDataCacheEntry cache_entry;
 
   // If entry doesn't exist or is dirty or mounted in cache, nothing to do.
-  if (!cache_entry.get() ||
-      cache_entry->IsDirty() ||
-      cache_entry->IsMounted()) {
+  const bool entry_found =
+      GetCacheEntry(resource_id, std::string(), &cache_entry);
+  if (!entry_found || cache_entry.IsDirty() || cache_entry.IsMounted()) {
     DVLOG(1) << "Entry is "
-             << (cache_entry.get() ?
-                 (cache_entry->IsDirty() ? "dirty" : "mounted") :
+             << (entry_found ?
+                 (cache_entry.IsDirty() ? "dirty" : "mounted") :
                  "non-existent")
              << " in cache, not removing";
     *error = base::PLATFORM_FILE_OK;
@@ -1505,10 +1496,7 @@
   DCHECK(success);
   DCHECK(cache_entry);
 
-  scoped_ptr<GDataCacheEntry> value(GetCacheEntry(resource_id, md5));
-  *success = value.get();
-  if (*success)
-    *cache_entry = *value;
+  *success = GetCacheEntry(resource_id, md5, cache_entry);
 }
 
 // static