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

Unified Diff: google_apis/drive/drive_api_parser.cc

Issue 2748053005: Parse TeamDrive resource inside ChangeList. (Closed)
Patch Set: Default the type field to UNKNOWN as it's not causing new test failures. Created 3 years, 9 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 | « google_apis/drive/drive_api_parser.h ('k') | google_apis/drive/drive_api_parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..1782e6242d2748796c64d80e6e5b775cc3ff1dc6 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,21 +198,35 @@ 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;
+};
+
+constexpr ChangeTypeMap kChangeTypeMap[] = {
+ { ChangeResource::FILE, "file" },
+ { ChangeResource::TEAM_DRIVE, "teamDrive" },
+};
+
// Maps category name to enum IconCategory.
struct AppIconCategoryMap {
DriveAppIcon::IconCategory category;
const char* category_name;
};
-const AppIconCategoryMap kAppIconCategoryMap[] = {
+constexpr AppIconCategoryMap kAppIconCategoryMap[] = {
{ DriveAppIcon::DOCUMENT, "document" },
{ DriveAppIcon::APPLICATION, "application" },
{ DriveAppIcon::SHARED_DOCUMENT, "documentShared" },
@@ -429,6 +450,9 @@ TeamDriveCapabilities::TeamDriveCapabilities()
can_share_(false) {
}
+TeamDriveCapabilities::TeamDriveCapabilities(const TeamDriveCapabilities& src) =
+ default;
+
TeamDriveCapabilities::~TeamDriveCapabilities(){}
// static
@@ -658,7 +682,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 +692,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 +701,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 +726,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
« no previous file with comments | « google_apis/drive/drive_api_parser.h ('k') | google_apis/drive/drive_api_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698