| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <utility> | 5 #include <utility> |
| 6 | 6 |
| 7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
| 8 #include "chrome/browser/chromeos/drive/drive_files.h" | 8 #include "chrome/browser/chromeos/drive/drive_files.h" |
| 9 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" | 9 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" |
| 10 #include "chrome/browser/chromeos/drive/gdata_wapi_feed_processor.h" | 10 #include "chrome/browser/chromeos/drive/gdata_wapi_feed_processor.h" |
| 11 #include "content/public/browser/browser_thread.h" | 11 #include "content/public/browser/browser_thread.h" |
| 12 | 12 |
| 13 using content::BrowserThread; | 13 using content::BrowserThread; |
| 14 | 14 |
| 15 namespace gdata { | 15 namespace drive { |
| 16 | 16 |
| 17 FeedToFileResourceMapUmaStats::FeedToFileResourceMapUmaStats() | 17 FeedToFileResourceMapUmaStats::FeedToFileResourceMapUmaStats() |
| 18 : num_regular_files(0), | 18 : num_regular_files(0), |
| 19 num_hosted_documents(0) { | 19 num_hosted_documents(0) { |
| 20 } | 20 } |
| 21 | 21 |
| 22 FeedToFileResourceMapUmaStats::~FeedToFileResourceMapUmaStats() { | 22 FeedToFileResourceMapUmaStats::~FeedToFileResourceMapUmaStats() { |
| 23 } | 23 } |
| 24 | 24 |
| 25 GDataWapiFeedProcessor::GDataWapiFeedProcessor( | 25 GDataWapiFeedProcessor::GDataWapiFeedProcessor( |
| 26 DriveResourceMetadata* resource_metadata) | 26 DriveResourceMetadata* resource_metadata) |
| 27 : resource_metadata_(resource_metadata) { | 27 : resource_metadata_(resource_metadata) { |
| 28 } | 28 } |
| 29 | 29 |
| 30 GDataWapiFeedProcessor::~GDataWapiFeedProcessor() { | 30 GDataWapiFeedProcessor::~GDataWapiFeedProcessor() { |
| 31 } | 31 } |
| 32 | 32 |
| 33 DriveFileError GDataWapiFeedProcessor::ApplyFeeds( | 33 DriveFileError GDataWapiFeedProcessor::ApplyFeeds( |
| 34 const ScopedVector<DocumentFeed>& feed_list, | 34 const ScopedVector<gdata::DocumentFeed>& feed_list, |
| 35 int64 start_changestamp, | 35 int64 start_changestamp, |
| 36 int64 root_feed_changestamp, | 36 int64 root_feed_changestamp, |
| 37 std::set<FilePath>* changed_dirs) { | 37 std::set<FilePath>* changed_dirs) { |
| 38 bool is_delta_feed = start_changestamp != 0; | 38 bool is_delta_feed = start_changestamp != 0; |
| 39 | 39 |
| 40 resource_metadata_->set_origin(FROM_SERVER); | 40 resource_metadata_->set_origin(FROM_SERVER); |
| 41 | 41 |
| 42 int64 delta_feed_changestamp = 0; | 42 int64 delta_feed_changestamp = 0; |
| 43 FeedToFileResourceMapUmaStats uma_stats; | 43 FeedToFileResourceMapUmaStats uma_stats; |
| 44 FileResourceIdMap file_map; | 44 FileResourceIdMap file_map; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 } else { | 221 } else { |
| 222 DVLOG(1) << "Adding orphan " << new_entry->GetFilePath().value(); | 222 DVLOG(1) << "Adding orphan " << new_entry->GetFilePath().value(); |
| 223 dir = orphaned_resources->root(); | 223 dir = orphaned_resources->root(); |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 } | 226 } |
| 227 return dir; | 227 return dir; |
| 228 } | 228 } |
| 229 | 229 |
| 230 DriveFileError GDataWapiFeedProcessor::FeedToFileResourceMap( | 230 DriveFileError GDataWapiFeedProcessor::FeedToFileResourceMap( |
| 231 const ScopedVector<DocumentFeed>& feed_list, | 231 const ScopedVector<gdata::DocumentFeed>& feed_list, |
| 232 FileResourceIdMap* file_map, | 232 FileResourceIdMap* file_map, |
| 233 int64* feed_changestamp, | 233 int64* feed_changestamp, |
| 234 FeedToFileResourceMapUmaStats* uma_stats) { | 234 FeedToFileResourceMapUmaStats* uma_stats) { |
| 235 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 235 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 236 DCHECK(uma_stats); | 236 DCHECK(uma_stats); |
| 237 | 237 |
| 238 DriveFileError error = DRIVE_FILE_OK; | 238 DriveFileError error = DRIVE_FILE_OK; |
| 239 uma_stats->num_regular_files = 0; | 239 uma_stats->num_regular_files = 0; |
| 240 uma_stats->num_hosted_documents = 0; | 240 uma_stats->num_hosted_documents = 0; |
| 241 for (size_t i = 0; i < feed_list.size(); ++i) { | 241 for (size_t i = 0; i < feed_list.size(); ++i) { |
| 242 const DocumentFeed* feed = feed_list[i]; | 242 const gdata::DocumentFeed* feed = feed_list[i]; |
| 243 | 243 |
| 244 // Get upload url from the root feed. Links for all other collections will | 244 // Get upload url from the root feed. Links for all other collections will |
| 245 // be handled in GDatadirectory::FromDocumentEntry(); | 245 // be handled in GDatadirectory::FromDocumentEntry(); |
| 246 if (i == 0) { | 246 if (i == 0) { |
| 247 const Link* root_feed_upload_link = | 247 const gdata::Link* root_feed_upload_link = |
| 248 feed->GetLinkByType(Link::LINK_RESUMABLE_CREATE_MEDIA); | 248 feed->GetLinkByType(gdata::Link::LINK_RESUMABLE_CREATE_MEDIA); |
| 249 if (root_feed_upload_link) | 249 if (root_feed_upload_link) |
| 250 resource_metadata_->root()->set_upload_url( | 250 resource_metadata_->root()->set_upload_url( |
| 251 root_feed_upload_link->href()); | 251 root_feed_upload_link->href()); |
| 252 *feed_changestamp = feed->largest_changestamp(); | 252 *feed_changestamp = feed->largest_changestamp(); |
| 253 DCHECK_GE(*feed_changestamp, 0); | 253 DCHECK_GE(*feed_changestamp, 0); |
| 254 } | 254 } |
| 255 | 255 |
| 256 for (ScopedVector<DocumentEntry>::const_iterator iter = | 256 for (ScopedVector<gdata::DocumentEntry>::const_iterator iter = |
| 257 feed->entries().begin(); | 257 feed->entries().begin(); |
| 258 iter != feed->entries().end(); ++iter) { | 258 iter != feed->entries().end(); ++iter) { |
| 259 DocumentEntry* doc = *iter; | 259 gdata::DocumentEntry* doc = *iter; |
| 260 scoped_ptr<DriveEntry> entry = | 260 scoped_ptr<DriveEntry> entry = |
| 261 resource_metadata_->FromDocumentEntry(*doc); | 261 resource_metadata_->FromDocumentEntry(*doc); |
| 262 // Some document entries don't map into files (i.e. sites). | 262 // Some document entries don't map into files (i.e. sites). |
| 263 if (!entry.get()) | 263 if (!entry.get()) |
| 264 continue; | 264 continue; |
| 265 // Count the number of files. | 265 // Count the number of files. |
| 266 DriveFile* as_file = entry->AsDriveFile(); | 266 DriveFile* as_file = entry->AsDriveFile(); |
| 267 if (as_file) { | 267 if (as_file) { |
| 268 if (as_file->is_hosted_document()) | 268 if (as_file->is_hosted_document()) |
| 269 ++uma_stats->num_hosted_documents; | 269 ++uma_stats->num_hosted_documents; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 294 if (error != DRIVE_FILE_OK) { | 294 if (error != DRIVE_FILE_OK) { |
| 295 // If the code above fails to parse a feed, any DriveEntry instance | 295 // If the code above fails to parse a feed, any DriveEntry instance |
| 296 // added to |file_by_url| is not managed by a DriveDirectory instance, | 296 // added to |file_by_url| is not managed by a DriveDirectory instance, |
| 297 // so we need to explicitly release them here. | 297 // so we need to explicitly release them here. |
| 298 STLDeleteValues(file_map); | 298 STLDeleteValues(file_map); |
| 299 } | 299 } |
| 300 | 300 |
| 301 return error; | 301 return error; |
| 302 } | 302 } |
| 303 | 303 |
| 304 } // namespace gdata | 304 } // namespace drive |
| OLD | NEW |