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

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

Issue 13909002: drive: Supports shared-with-me search in searchDriveMetadata(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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
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 b82715c329eb188d214a9c2fca398f3406de34e5..eb81b642ec15084d422022c8d933050358588097 100644
--- a/chrome/browser/chromeos/drive/search_metadata.cc
+++ b/chrome/browser/chromeos/drive/search_metadata.cc
@@ -33,6 +33,41 @@ bool CompareByTimestamp(const MetadataSearchResult& a,
return a_file_info.last_modified() > b_file_info.last_modified();
}
+// Returns true if |entry| is eligible for the search |options| and should be
+// tested for the match with the query.
+// If SEARCH_METADATA_EXCLUDE_HOSTED_DOCUMENTS is requested, the hosted
+// documents are skipped. If SEARCH_METADATA_EXCLUDE_DIRECTORIES is requested,
+// the directories are skipped. If SEARCH_METADATA_SHARED_WITH_ME is requested,
+// only the entries with shared-with-me label will be tested.
+bool IsEligibleEntry(const DriveEntryProto& entry, int options) {
+ if ((options & SEARCH_METADATA_EXCLUDE_HOSTED_DOCUMENTS) &&
+ entry.file_specific_info().is_hosted_document())
+ return false;
+
+ if ((options & SEARCH_METADATA_EXCLUDE_DIRECTORIES) &&
+ entry.file_info().is_directory())
+ return false;
+
+ if (options & SEARCH_METADATA_SHARED_WITH_ME)
+ return entry.shared_with_me();
+
+ return true;
+}
+
+// Returns true if this search needs to traverse the tree under |entry|.
+bool ShouldReadDirectory(const DriveEntryProto& entry, int options) {
+ // Cannot read non-directory.
+ if (!entry.file_info().is_directory())
+ return false;
+
+ // This is a directory.
+ // Shared-with-me search do not go into a share-with-me directory.
+ if (options & SEARCH_METADATA_SHARED_WITH_ME)
+ return !entry.shared_with_me();
+
+ return true;
+}
+
} // namespace
// Helper class for searching the local resource metadata.
@@ -87,7 +122,7 @@ class SearchMetadataHelper {
base::FilePath::FromUTF8Unsafe(entry.base_name()));
// Recursively reading the sub directory.
- if (entry.file_info().is_directory()) {
+ if (ShouldReadDirectory(entry, options_)) {
++num_pending_reads_;
resource_metadata_->ReadDirectoryByPath(
current_path,
@@ -96,25 +131,16 @@ class SearchMetadataHelper {
current_path));
}
- // Skip the hosted document if |options| has
- // SEARCH_METADATA_EXCLUDE_HOSTED_DOCUMENTS, which is set by
- // DriveFileSystem::SearchMetadata() based on the preference.
- if ((options_ & SEARCH_METADATA_EXCLUDE_HOSTED_DOCUMENTS) &&
- entry.file_specific_info().is_hosted_document())
- continue;
-
- // Skip the directory if SEARCH_METADATA_EXCLUDE_DIRECTORIES is requested.
- if ((options_ & SEARCH_METADATA_EXCLUDE_DIRECTORIES) &&
- entry.file_info().is_directory())
- continue;
-
- // Add it to the search result if the base name of the file contains
- // the query.
+ // Add it to the search result if the entry is eligible for the given
+ // |options| and matches the query. The base name of the entry must
+ // contains |query| to match the query.
std::string highlighted;
- if (FindAndHighlight(entry.base_name(), query_, &highlighted)) {
+ if (IsEligibleEntry(entry, options_) &&
+ FindAndHighlight(entry.base_name(), query_, &highlighted)) {
results_->push_back(
MetadataSearchResult(current_path, entry, highlighted));
}
+
yoshiki 2013/04/10 04:29:49 nit: remove
Haruki Sato 2013/04/10 04:51:13 Done.
}
if (num_pending_reads_ == 0) {

Powered by Google App Engine
This is Rietveld 408576698