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 dbac872e1e02f01cbcb98b8a5e338196cd80d7bd..12fedb29068239d16ee4e7e744f0c92971863704 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_file_system.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_file_system.cc |
@@ -451,22 +451,35 @@ void RemoveStaleEntryOnUpload(const std::string& resource_id, |
// |run_callback| is true. |
satorux1
2012/07/30 10:17:18
please document about the new parameters.
kinaba
2012/07/31 08:46:04
Done.
|
void AddEntryToSearchResults( |
std::vector<SearchResultInfo>* results, |
+ bool* entry_skipped, |
const SearchCallback& callback, |
+ const base::Closure& entry_skipped_callback, |
GDataFileError error, |
bool run_callback, |
GDataEntry* entry) { |
- // If a result is not present in our local file system snapshot, ignore it. |
+ DCHECK(entry_skipped); |
+ |
+ // If a result is not present in our local file system snapshot, invoke |
+ // |entry_skipped_callback| and refreshes the snapshot with delta feed. |
// For example, this may happen if the entry has recently been added to the |
// drive (and we still haven't received its delta feed). |
if (entry) { |
const bool is_directory = entry->AsGDataDirectory() != NULL; |
results->push_back(SearchResultInfo(entry->GetFilePath(), is_directory)); |
+ } else { |
+ *entry_skipped = true; |
} |
if (run_callback) { |
scoped_ptr<std::vector<SearchResultInfo> > result_vec(results); |
if (!callback.is_null()) |
callback.Run(error, result_vec.Pass()); |
+ |
+ if (*entry_skipped) { |
+ delete entry_skipped; |
satorux1
2012/07/30 10:17:18
does this mean |entry_skipped| will be leaked, if
tbarzic
2012/07/30 23:32:33
agree, I don't really see the point of using bool*
kinaba
2012/07/31 08:46:04
Done. Removed the boolean variable.
The leak is c
tbarzic
2012/07/31 17:43:25
yeah, I figured the leak was not intentional :)
I
|
+ if (!entry_skipped_callback.is_null()) |
+ entry_skipped_callback.Run(); |
+ } |
} |
} |
@@ -2723,6 +2736,7 @@ void GDataFileSystem::OnSearch(const SearchCallback& callback, |
// The directory is not really part of the file system, so it has no parent or |
// root. |
std::vector<SearchResultInfo>* results(new std::vector<SearchResultInfo>()); |
+ bool* entry_skipped(new bool(false)); |
DCHECK_EQ(1u, params->feed_list->size()); |
DocumentFeed* feed = params->feed_list->at(0); |
@@ -2764,7 +2778,9 @@ void GDataFileSystem::OnSearch(const SearchCallback& callback, |
directory_service_->GetEntryByResourceIdAsync(entry_resource_id, |
base::Bind(&AddEntryToSearchResults, |
results, |
+ entry_skipped, |
callback, |
+ base::Bind(&GDataFileSystem::CheckForUpdates, ui_weak_ptr_), |
error, |
i+1 == feed->entries().size())); |
} |