Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: chrome/browser/chromeos/drive/search_metadata.cc

Issue 19871004: drive: Report error from SearchMetadata (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/drive/search_metadata.cc
diff --git a/chrome/browser/chromeos/drive/search_metadata.cc b/chrome/browser/chromeos/drive/search_metadata.cc
index b49f47fee0a5868682b7606c09063898d53409e5..9e5b30c90c9f8c91585eac658fea4e652a55ee47 100644
--- a/chrome/browser/chromeos/drive/search_metadata.cc
+++ b/chrome/browser/chromeos/drive/search_metadata.cc
@@ -152,12 +152,12 @@ void MaybeAddEntryToResult(
}
// Implements SearchMetadata().
-scoped_ptr<MetadataSearchResultVector> SearchMetadataOnBlockingPool(
- ResourceMetadata* resource_metadata,
- FileCache* cache,
- const std::string& query_text,
- int options,
- int at_most_num_matches) {
+FileError SearchMetadataOnBlockingPool(ResourceMetadata* resource_metadata,
+ FileCache* cache,
+ const std::string& query_text,
+ int options,
+ int at_most_num_matches,
+ MetadataSearchResultVector* results) {
ScopedPriorityQueue<MetadataSearchResult,
MetadataSearchResultComparator> result_candidates;
@@ -175,8 +175,6 @@ scoped_ptr<MetadataSearchResultVector> SearchMetadataOnBlockingPool(
}
// Prepare the result.
- scoped_ptr<MetadataSearchResultVector> results(
- new MetadataSearchResultVector);
for (; !result_candidates.empty(); result_candidates.pop()) {
// The path field of entries in result_candidates are empty at this point,
// because we don't want to run the expensive metadata DB look up except for
@@ -184,7 +182,7 @@ scoped_ptr<MetadataSearchResultVector> SearchMetadataOnBlockingPool(
base::FilePath path = resource_metadata->GetFilePath(
result_candidates.top()->entry.resource_id());
if (path.empty())
- continue;
+ return FILE_ERROR_FAILED;
results->push_back(*result_candidates.top());
results->back().path = path;
}
@@ -193,8 +191,17 @@ scoped_ptr<MetadataSearchResultVector> SearchMetadataOnBlockingPool(
// uninteresting candidate at the top.
std::reverse(results->begin(), results->end());
- return results.Pass();
+ return FILE_ERROR_OK;
}
+
+void RunSearchMetadataCallback(const SearchMetadataCallback& callback,
+ scoped_ptr<MetadataSearchResultVector> results,
+ FileError error) {
+ if (error != FILE_ERROR_OK)
+ results.reset();
+ callback.Run(error, results.Pass());
+}
+
} // namespace
void SearchMetadata(
@@ -209,8 +216,9 @@ void SearchMetadata(
DCHECK_LE(0, at_most_num_matches);
DCHECK(!callback.is_null());
- // TODO(hashimoto): Report error code from ResourceMetadata::IterateEntries
- // and stop binding FILE_ERROR_OK to |callback|.
+ scoped_ptr<MetadataSearchResultVector> results(
+ new MetadataSearchResultVector);
+ MetadataSearchResultVector* results_ptr = results.get();
base::PostTaskAndReplyWithResult(blocking_task_runner.get(),
FROM_HERE,
base::Bind(&SearchMetadataOnBlockingPool,
@@ -218,8 +226,11 @@ void SearchMetadata(
cache,
query,
options,
- at_most_num_matches),
- base::Bind(callback, FILE_ERROR_OK));
+ at_most_num_matches,
+ results_ptr),
+ base::Bind(&RunSearchMetadataCallback,
+ callback,
+ base::Passed(&results)));
}
bool FindAndHighlight(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698