Index: chrome/browser/chromeos/gdata/gdata_util.cc |
diff --git a/chrome/browser/chromeos/gdata/gdata_util.cc b/chrome/browser/chromeos/gdata/gdata_util.cc |
index ff7916ec14b59b60e3dcc866352dc8bd57e509f4..68377ee7b1c25be20cdbd973c790b20a96e1cf68 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_util.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_util.cc |
@@ -47,6 +47,10 @@ const FilePath::CharType* kGDataMountPointPathComponents[] = { |
"/", "special", "gdata" |
}; |
+const FilePath::CharType* kGDataSearchPathComponents[] = { |
+ "gdata", ".search" |
+}; |
+ |
const int kReadOnlyFilePermissions = base::PLATFORM_FILE_OPEN | |
base::PLATFORM_FILE_READ | |
base::PLATFORM_FILE_EXCLUSIVE_READ | |
@@ -176,6 +180,52 @@ bool IsUnderGDataMountPoint(const FilePath& path) { |
GetGDataMountPointPath().IsParent(path); |
} |
+GDataSearchPathType GetSearchPathStatus(const FilePath& path) { |
+ std::vector<std::string> components; |
+ path.GetComponents(&components); |
+ return GetSearchPathStatusForPathComponents(components); |
+} |
+ |
+GDataSearchPathType GetSearchPathStatusForPathComponents( |
+ const std::vector<std::string>& path_components) { |
+ if (path_components.size() < arraysize(kGDataSearchPathComponents)) |
+ return GDATA_SEARCH_PATH_INVALID; |
+ |
+ for (size_t i = 0; i < arraysize(kGDataSearchPathComponents); i++) { |
+ if (path_components[i] != kGDataSearchPathComponents[i]) |
+ return GDATA_SEARCH_PATH_INVALID; |
+ } |
+ |
+ switch (path_components.size()) { |
+ case 2: |
+ return GDATA_SEARCH_PATH_ROOT; |
+ case 3: |
+ return GDATA_SEARCH_PATH_QUERY; |
+ case 4: |
+ return GDATA_SEARCH_PATH_RESULT; |
+ default: |
+ return GDATA_SEARCH_PATH_RESULT_CHILD; |
+ } |
+} |
+ |
+void CrackSearchFileName(const std::string& search_file_name, |
+ std::string* resource_id, |
+ std::string* original_file_name) { |
+ DCHECK(resource_id); |
+ DCHECK(original_file_name); |
+ |
+ *resource_id = ""; |
+ *original_file_name = ""; |
+ |
+ size_t dot_index = search_file_name.find('.'); |
+ if (dot_index == std::string::npos) |
+ return; |
+ |
+ *resource_id = search_file_name.substr(0, dot_index); |
+ if (search_file_name.length() - 1 > dot_index) |
+ *original_file_name = search_file_name.substr(dot_index + 1); |
+} |
+ |
FilePath ExtractGDataPath(const FilePath& path) { |
if (!IsUnderGDataMountPoint(path)) |
return FilePath(); |