Chromium Code Reviews| Index: google_apis/drive/drive_api_parser.cc |
| diff --git a/google_apis/drive/drive_api_parser.cc b/google_apis/drive/drive_api_parser.cc |
| index 5cdff358f6914ce153d269320935f916dd2dab43..2551e7900bbdd887f55c4484d24f781672539379 100644 |
| --- a/google_apis/drive/drive_api_parser.cc |
| +++ b/google_apis/drive/drive_api_parser.cc |
| @@ -28,6 +28,13 @@ bool CreateFileResourceFromValue(const base::Value* value, |
| return !!*file; |
| } |
| +bool CreateTeamDriveResourceFromValue( |
| + const base::Value* value, |
| + std::unique_ptr<TeamDriveResource>* file) { |
| + *file = TeamDriveResource::CreateFrom(*value); |
| + return !!*file; |
| +} |
| + |
| // Converts |url_string| to |result|. Always returns true to be used |
| // for JSONValueConverter::RegisterCustomField method. |
| // TODO(mukai): make it return false in case of invalid |url_string|. |
| @@ -191,14 +198,28 @@ const char kNextLink[] = "nextLink"; |
| // Change Resource |
| // https://developers.google.com/drive/v2/reference/changes |
| const char kChangeKind[] = "drive#change"; |
| +const char kType[] = "type"; |
| const char kFileId[] = "fileId"; |
| const char kDeleted[] = "deleted"; |
| const char kFile[] = "file"; |
| +const char kTeamDrive[] = "teamDrive"; |
| +const char kTeamDriveId[] = "teamDriveId"; |
| // Changes List |
| // https://developers.google.com/drive/v2/reference/changes/list |
| const char kChangeListKind[] = "drive#changeList"; |
| +// Maps category name to enum ChangeType. |
| +struct ChangeTypeMap { |
| + ChangeResource::ChangeType type; |
| + const char* type_name; |
| +}; |
| + |
| +const ChangeTypeMap kChangeTypeMap[] = { |
|
hashimoto
2017/03/22 06:40:30
Please use constexpr.
yamaguchi
2017/03/22 07:30:36
Done.
|
| + { ChangeResource::FILE, "file" }, |
| + { ChangeResource::TEAM_DRIVE, "teamDrive" }, |
| +}; |
| + |
| // Maps category name to enum IconCategory. |
| struct AppIconCategoryMap { |
| DriveAppIcon::IconCategory category; |
| @@ -658,7 +679,8 @@ bool FileList::Parse(const base::Value& value) { |
| //////////////////////////////////////////////////////////////////////////////// |
| // ChangeResource implementation |
| -ChangeResource::ChangeResource() : change_id_(0), deleted_(false) {} |
| +ChangeResource::ChangeResource() |
| + : change_id_(0), type_(UNKNOWN), deleted_(false) {} |
| ChangeResource::~ChangeResource() {} |
| @@ -667,6 +689,8 @@ void ChangeResource::RegisterJSONConverter( |
| base::JSONValueConverter<ChangeResource>* converter) { |
| converter->RegisterCustomField<int64_t>(kId, &ChangeResource::change_id_, |
| &base::StringToInt64); |
| + converter->RegisterCustomField<ChangeType>(kType, &ChangeResource::type_, |
| + &ChangeResource::GetType); |
| converter->RegisterStringField(kFileId, &ChangeResource::file_id_); |
| converter->RegisterBoolField(kDeleted, &ChangeResource::deleted_); |
| converter->RegisterCustomValueField(kFile, &ChangeResource::file_, |
| @@ -674,6 +698,9 @@ void ChangeResource::RegisterJSONConverter( |
| converter->RegisterCustomField<base::Time>( |
| kModificationDate, &ChangeResource::modification_date_, |
| &util::GetTimeFromString); |
| + converter->RegisterStringField(kTeamDriveId, &ChangeResource::team_drive_id_); |
| + converter->RegisterCustomValueField(kTeamDrive, &ChangeResource::team_drive_, |
| + &CreateTeamDriveResourceFromValue); |
| } |
| // static |
| @@ -696,6 +723,19 @@ bool ChangeResource::Parse(const base::Value& value) { |
| return true; |
| } |
| +// static |
| +bool ChangeResource::GetType(const base::StringPiece& type_name, |
| + ChangeResource::ChangeType* result) { |
| + for (size_t i = 0; i < arraysize(kChangeTypeMap); i++) { |
| + if (type_name == kChangeTypeMap[i].type_name) { |
| + *result = kChangeTypeMap[i].type; |
| + return true; |
| + } |
| + } |
| + DVLOG(1) << "Unknown change type" << type_name; |
| + return false; |
| +} |
| + |
| //////////////////////////////////////////////////////////////////////////////// |
| // ChangeList implementation |