| 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 822aba07208b48a68222a45b3005605bcdb96b1b..fc767692b9fcd29e835f402e61bf667bfeccc058 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 |
|
| @@ -175,6 +179,53 @@ 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;
|
| + }
|
| +}
|
| +
|
| +bool ParseSearchFileName(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 false;
|
| +
|
| + *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);
|
| + return (!resource_id->empty() && !original_file_name->empty());
|
| +}
|
| +
|
| FilePath ExtractGDataPath(const FilePath& path) {
|
| if (!IsUnderGDataMountPoint(path))
|
| return FilePath();
|
|
|