Index: chrome/browser/chromeos/gdata/gdata_wapi_parser.cc |
diff --git a/chrome/browser/chromeos/gdata/gdata_wapi_parser.cc b/chrome/browser/chromeos/gdata/gdata_wapi_parser.cc |
index 909f96dede7d1120f904f4b93912012985201910..9007276c4bae943877b1494a9dbc981dc6155d6b 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_wapi_parser.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_wapi_parser.cc |
@@ -15,6 +15,7 @@ |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
+#include "chrome/browser/chromeos/gdata/drive_api_parser.h" |
#include "chrome/browser/chromeos/gdata/gdata_util.h" |
#include "third_party/libxml/chromium/libxml_utils.h" |
@@ -804,6 +805,83 @@ DocumentEntry* DocumentEntry::CreateFromXml(XmlReader* xml_reader) { |
} |
// static |
+DocumentEntry* DocumentEntry::CreateFromFileResource(const FileResource& file) { |
+ scoped_ptr<DocumentEntry> entry(new DocumentEntry()); |
+ |
+ // DocumentEntry |
+ entry->resource_id_ = file.file_id(); |
+ entry->id_ = file.file_id(); |
+ entry->kind_ = file.GetKind(); |
+ entry->title_ = UTF8ToUTF16(file.title()); |
+ entry->published_time_ = file.created_date(); |
+ // TODO(kochi): entry->labels_ |
+ entry->content_.url_ = file.web_content_link(); |
+ entry->content_.mime_type_ = file.mime_type(); |
+ // TODO(kochi): entry->feed_links_ |
+ |
+ // For file entries |
+ entry->filename_ = UTF8ToUTF16(file.title()); |
+ entry->suggested_filename_ = UTF8ToUTF16(file.title()); |
+ entry->file_md5_ = file.md5_checksum(); |
+ entry->file_size_ = file.file_size(); |
+ |
+ entry->deleted_ = false; // later filled by CreateFromChangeResource. |
+ entry->removed_ = false; // later filled by CreateFromChangeResource. |
+ |
+ // FeedEntry |
+ entry->etag_ = file.etag(); |
+ // entry->authors_ |
+ // entry->links_. |
+ if (!file.parents().empty()) { |
+ Link* link = new Link(); |
+ link->type_ = Link::PARENT; |
+ link->href_ = file.parents()[0]->parent_link(); |
+ entry->links_.push_back(link); |
+ } |
+ if (!file.self_link().is_empty()) { |
+ Link* link = new Link(); |
+ link->type_ = Link::EDIT; |
+ link->href_ = file.self_link(); |
+ entry->links_.push_back(link); |
+ } |
+ if (!file.thumbnail_link().is_empty()) { |
+ Link* link = new Link(); |
+ link->type_ = Link::THUMBNAIL; |
+ link->href_ = file.thumbnail_link(); |
+ entry->links_.push_back(link); |
+ } |
+ if (!file.alternate_link().is_empty()) { |
+ Link* link = new Link(); |
+ link->type_ = Link::ALTERNATE; |
+ link->href_ = file.alternate_link(); |
+ entry->links_.push_back(link); |
+ } |
+ if (!file.embed_link().is_empty()) { |
+ Link* link = new Link(); |
+ link->type_ = Link::EMBED; |
+ link->href_ = file.embed_link(); |
+ entry->links_.push_back(link); |
+ } |
+ // entry->categories_ |
+ entry->updated_time_ = file.modified_by_me_date(); |
+ |
+ // TODO: Do we need this? |
+ entry->FillRemainingFields(); |
+ return entry.release(); |
+} |
+ |
+// static |
+DocumentEntry* |
+DocumentEntry::CreateFromChangeResource(const ChangeResource& change) { |
+ DocumentEntry* entry = CreateFromFileResource(change.file()); |
+ |
+ entry->deleted_ = change.is_deleted(); |
+ entry->removed_ = change.is_deleted(); |
+ |
+ return entry; |
+} |
+ |
+// static |
std::string DocumentEntry::GetEntryNodeName() { |
return kEntryNode; |
} |
@@ -878,6 +956,35 @@ scoped_ptr<DocumentFeed> DocumentFeed::CreateFrom(const base::Value& value) { |
return feed.Pass(); |
} |
+// static |
+scoped_ptr<DocumentFeed> DocumentFeed::CreateFromFileList( |
satorux1
2012/08/10 18:14:34
This doesn't seem to be used.
kochi
2012/08/13 09:08:39
Removed.
|
+ const FileList& filelist) { |
+ scoped_ptr<DocumentFeed> feed(new DocumentFeed()); |
+ ScopedVector<FileResource>::const_iterator iter = filelist.items().begin(); |
+ while (iter != filelist.items().end()) { |
+ feed->entries_.push_back(DocumentEntry::CreateFromFileResource(**iter)); |
+ ++iter; |
+ } |
+ return feed.Pass(); |
+} |
+ |
+// static |
+scoped_ptr<DocumentFeed> DocumentFeed::CreateFromChangeList( |
+ const ChangeList& changelist) { |
+ scoped_ptr<DocumentFeed> feed(new DocumentFeed()); |
+ int64 largest_changestamp = 0; |
+ ScopedVector<ChangeResource>::const_iterator iter = |
+ changelist.items().begin(); |
+ while (iter != changelist.items().end()) { |
+ const FileResource& file = (*iter)->file(); |
+ largest_changestamp = std::max(largest_changestamp, (*iter)->change_id()); |
+ feed->entries_.push_back(DocumentEntry::CreateFromFileResource(file)); |
+ ++iter; |
+ } |
+ feed->largest_changestamp_ = largest_changestamp; |
+ return feed.Pass(); |
+} |
+ |
bool DocumentFeed::GetNextFeedURL(GURL* url) { |
DCHECK(url); |
for (size_t i = 0; i < links_.size(); ++i) { |