| Index: chrome/browser/drive/drive_api_util.cc
|
| diff --git a/chrome/browser/drive/drive_api_util.cc b/chrome/browser/drive/drive_api_util.cc
|
| index 13cefa6c91ffa4dbbe199e0393d57cd1f6d5c8fc..2a3dbd414626a1665a4fe6c30e3f61029014901b 100644
|
| --- a/chrome/browser/drive/drive_api_util.cc
|
| +++ b/chrome/browser/drive/drive_api_util.cc
|
| @@ -25,28 +25,23 @@ namespace drive {
|
| namespace util {
|
| namespace {
|
|
|
| -std::string GetMimeTypeFromEntryKind(google_apis::DriveEntryKind kind) {
|
| - switch (kind) {
|
| - case google_apis::ENTRY_KIND_DOCUMENT:
|
| - return kGoogleDocumentMimeType;
|
| - case google_apis::ENTRY_KIND_SPREADSHEET:
|
| - return kGoogleSpreadsheetMimeType;
|
| - case google_apis::ENTRY_KIND_PRESENTATION:
|
| - return kGooglePresentationMimeType;
|
| - case google_apis::ENTRY_KIND_DRAWING:
|
| - return kGoogleDrawingMimeType;
|
| - case google_apis::ENTRY_KIND_TABLE:
|
| - return kGoogleTableMimeType;
|
| - case google_apis::ENTRY_KIND_FORM:
|
| - return kGoogleFormMimeType;
|
| - default:
|
| - return std::string();
|
| - }
|
| -}
|
| -
|
| // Returns the argument string.
|
| std::string Identity(const std::string& resource_id) { return resource_id; }
|
|
|
| +struct HostedDocumentKind {
|
| + const char* mime_type;
|
| + const char* extension;
|
| +};
|
| +
|
| +const HostedDocumentKind kHostedDocumentKinds[] = {
|
| + {kGoogleDocumentMimeType, ".gdoc"},
|
| + {kGoogleSpreadsheetMimeType, ".gsheet"},
|
| + {kGooglePresentationMimeType, ".gslides"},
|
| + {kGoogleDrawingMimeType, ".gdraw"},
|
| + {kGoogleTableMimeType, ".gtable"},
|
| + {kGoogleFormMimeType, ".gform"}
|
| +};
|
| +
|
| } // namespace
|
|
|
|
|
| @@ -173,97 +168,6 @@ void ParseShareUrlAndRun(const google_apis::GetShareUrlCallback& callback,
|
| callback.Run(error, share_link ? share_link->href() : GURL());
|
| }
|
|
|
| -scoped_ptr<google_apis::FileResource> ConvertResourceEntryToFileResource(
|
| - const google_apis::ResourceEntry& entry) {
|
| - scoped_ptr<google_apis::FileResource> file(new google_apis::FileResource);
|
| -
|
| - file->set_file_id(entry.resource_id());
|
| - file->set_title(entry.title());
|
| - file->set_created_date(entry.published_time());
|
| -
|
| - if (std::find(entry.labels().begin(), entry.labels().end(),
|
| - "shared-with-me") != entry.labels().end()) {
|
| - // Set current time to mark the file is shared_with_me, since ResourceEntry
|
| - // doesn't have |shared_with_me_date| equivalent.
|
| - file->set_shared_with_me_date(base::Time::Now());
|
| - }
|
| -
|
| - file->set_shared(std::find(entry.labels().begin(), entry.labels().end(),
|
| - "shared") != entry.labels().end());
|
| -
|
| - if (entry.is_folder()) {
|
| - file->set_mime_type(kDriveFolderMimeType);
|
| - } else {
|
| - std::string mime_type = GetMimeTypeFromEntryKind(entry.kind());
|
| - if (mime_type.empty())
|
| - mime_type = entry.content_mime_type();
|
| - file->set_mime_type(mime_type);
|
| - }
|
| -
|
| - file->set_md5_checksum(entry.file_md5());
|
| - file->set_file_size(entry.file_size());
|
| -
|
| - file->mutable_labels()->set_trashed(entry.deleted());
|
| - file->set_etag(entry.etag());
|
| -
|
| - google_apis::ImageMediaMetadata* image_media_metadata =
|
| - file->mutable_image_media_metadata();
|
| - image_media_metadata->set_width(entry.image_width());
|
| - image_media_metadata->set_height(entry.image_height());
|
| - image_media_metadata->set_rotation(entry.image_rotation());
|
| -
|
| - std::vector<google_apis::ParentReference>* parents = file->mutable_parents();
|
| - for (size_t i = 0; i < entry.links().size(); ++i) {
|
| - using google_apis::Link;
|
| - const Link& link = *entry.links()[i];
|
| - switch (link.type()) {
|
| - case Link::LINK_PARENT: {
|
| - google_apis::ParentReference parent;
|
| - parent.set_parent_link(link.href());
|
| -
|
| - std::string file_id =
|
| - drive::util::ExtractResourceIdFromUrl(link.href());
|
| - parent.set_file_id(file_id);
|
| - parents->push_back(parent);
|
| - break;
|
| - }
|
| - case Link::LINK_ALTERNATE:
|
| - file->set_alternate_link(link.href());
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| -
|
| - file->set_modified_date(entry.updated_time());
|
| - file->set_last_viewed_by_me_date(entry.last_viewed_time());
|
| -
|
| - return file.Pass();
|
| -}
|
| -
|
| -google_apis::DriveEntryKind GetKind(
|
| - const google_apis::FileResource& file_resource) {
|
| - if (file_resource.IsDirectory())
|
| - return google_apis::ENTRY_KIND_FOLDER;
|
| -
|
| - const std::string& mime_type = file_resource.mime_type();
|
| - if (mime_type == kGoogleDocumentMimeType)
|
| - return google_apis::ENTRY_KIND_DOCUMENT;
|
| - if (mime_type == kGoogleSpreadsheetMimeType)
|
| - return google_apis::ENTRY_KIND_SPREADSHEET;
|
| - if (mime_type == kGooglePresentationMimeType)
|
| - return google_apis::ENTRY_KIND_PRESENTATION;
|
| - if (mime_type == kGoogleDrawingMimeType)
|
| - return google_apis::ENTRY_KIND_DRAWING;
|
| - if (mime_type == kGoogleTableMimeType)
|
| - return google_apis::ENTRY_KIND_TABLE;
|
| - if (mime_type == kGoogleFormMimeType)
|
| - return google_apis::ENTRY_KIND_FORM;
|
| - if (mime_type == "application/pdf")
|
| - return google_apis::ENTRY_KIND_PDF;
|
| - return google_apis::ENTRY_KIND_FILE;
|
| -}
|
| -
|
| scoped_ptr<google_apis::ResourceEntry>
|
| ConvertFileResourceToResourceEntry(
|
| const google_apis::FileResource& file_resource) {
|
| @@ -272,7 +176,12 @@ ConvertFileResourceToResourceEntry(
|
| // ResourceEntry
|
| entry->set_resource_id(file_resource.file_id());
|
| entry->set_id(file_resource.file_id());
|
| - entry->set_kind(GetKind(file_resource));
|
| + if (file_resource.IsDirectory())
|
| + entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_FOLDER);
|
| + else if (IsHostedDocument(file_resource.mime_type()))
|
| + entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_UNKNOWN);
|
| + else
|
| + entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_FILE);
|
| entry->set_title(file_resource.title());
|
| entry->set_published_time(file_resource.created_date());
|
|
|
| @@ -435,5 +344,37 @@ std::string GetMd5Digest(const base::FilePath& file_path) {
|
|
|
| const char kWapiRootDirectoryResourceId[] = "folder:root";
|
|
|
| +std::string GetHostedDocumentExtension(const std::string& mime_type) {
|
| + for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
|
| + if (mime_type == kHostedDocumentKinds[i].mime_type)
|
| + return kHostedDocumentKinds[i].extension;
|
| + }
|
| + return std::string();
|
| +}
|
| +
|
| +std::string GetHostedDocumentMimeType(const std::string& extension) {
|
| + for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
|
| + if (extension == kHostedDocumentKinds[i].extension)
|
| + return kHostedDocumentKinds[i].mime_type;
|
| + }
|
| + return std::string();
|
| +}
|
| +
|
| +bool IsHostedDocument(const std::string& mime_type) {
|
| + for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
|
| + if (mime_type == kHostedDocumentKinds[i].mime_type)
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool IsHostedDocumentByExtension(const std::string& extension) {
|
| + for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
|
| + if (extension == kHostedDocumentKinds[i].extension)
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| } // namespace util
|
| } // namespace drive
|
|
|