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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_files.cc

Issue 10854199: ResourceId and unit test cleanup. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: minor Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/chromeos/gdata/gdata_files.h" 5 #include "chrome/browser/chromeos/gdata/gdata_files.h"
6 6
7 #include "base/platform_file.h" 7 #include "base/platform_file.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 15 matching lines...) Expand all
26 } 26 }
27 27
28 } // namespace 28 } // namespace
29 29
30 // GDataEntry class. 30 // GDataEntry class.
31 31
32 GDataEntry::GDataEntry(GDataDirectoryService* directory_service) 32 GDataEntry::GDataEntry(GDataDirectoryService* directory_service)
33 : parent_(NULL), 33 : parent_(NULL),
34 directory_service_(directory_service), 34 directory_service_(directory_service),
35 deleted_(false) { 35 deleted_(false) {
36 DCHECK(directory_service);
36 } 37 }
37 38
38 GDataEntry::~GDataEntry() { 39 GDataEntry::~GDataEntry() {
39 } 40 }
40 41
41 GDataFile* GDataEntry::AsGDataFile() { 42 GDataFile* GDataEntry::AsGDataFile() {
42 return NULL; 43 return NULL;
43 } 44 }
44 45
45 GDataDirectory* GDataEntry::AsGDataDirectory() { 46 GDataDirectory* GDataEntry::AsGDataDirectory() {
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 } 230 }
230 } 231 }
231 entry->set_base_name(full_file_name.value()); 232 entry->set_base_name(full_file_name.value());
232 233
233 DVLOG(1) << "AddEntry: dir = " << GetFilePath().value() 234 DVLOG(1) << "AddEntry: dir = " << GetFilePath().value()
234 << ", file = " + entry->base_name() 235 << ", file = " + entry->base_name()
235 << ", parent resource = " << entry->parent_resource_id() 236 << ", parent resource = " << entry->parent_resource_id()
236 << ", resource = " + entry->resource_id(); 237 << ", resource = " + entry->resource_id();
237 238
238 // Add entry to resource map. 239 // Add entry to resource map.
239 if (directory_service_) 240 directory_service_->AddEntryToResourceMap(entry);
240 directory_service_->AddEntryToResourceMap(entry);
241 241
242 // Setup child and parent links. 242 // Setup child and parent links.
243 AddChild(entry); 243 AddChild(entry);
244 entry->SetParent(this); 244 entry->SetParent(this);
245 } 245 }
246 246
247 bool GDataDirectory::TakeOverEntries(GDataDirectory* dir) { 247 bool GDataDirectory::TakeOverEntries(GDataDirectory* dir) {
248 for (GDataFileCollection::iterator iter = dir->child_files_.begin(); 248 for (GDataFileCollection::const_iterator iter = dir->child_files_.begin();
249 iter != dir->child_files_.end(); ++iter) { 249 iter != dir->child_files_.end(); ++iter) {
250 GDataEntry* entry = iter->second; 250 GDataEntry* entry = iter->second;
251 directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
251 entry->SetParent(NULL); 252 entry->SetParent(NULL);
252 AddEntry(entry); 253 AddEntry(entry);
253 } 254 }
254 dir->child_files_.clear(); 255 dir->child_files_.clear();
255 256
256 for (GDataDirectoryCollection::iterator iter = 257 for (GDataDirectoryCollection::iterator iter =
257 dir->child_directories_.begin(); 258 dir->child_directories_.begin();
258 iter != dir->child_directories_.end(); ++iter) { 259 iter != dir->child_directories_.end(); ++iter) {
259 GDataEntry* entry = iter->second; 260 GDataEntry* entry = iter->second;
261 directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
260 entry->SetParent(NULL); 262 entry->SetParent(NULL);
261 AddEntry(entry); 263 AddEntry(entry);
262 } 264 }
263 dir->child_directories_.clear(); 265 dir->child_directories_.clear();
264 return true; 266 return true;
265 } 267 }
266 268
267 void GDataDirectory::RemoveEntry(GDataEntry* entry) { 269 void GDataDirectory::RemoveEntry(GDataEntry* entry) {
268 DCHECK(entry); 270 DCHECK(entry);
269 271
270 RemoveChild(entry); 272 RemoveChild(entry);
271 delete entry; 273 delete entry;
272 } 274 }
273 275
274 GDataEntry* GDataDirectory::FindChild( 276 GDataEntry* GDataDirectory::FindChild(
275 const FilePath::StringType& file_name) const { 277 const FilePath::StringType& file_name) const {
276 GDataFileCollection::const_iterator it = child_files_.find(file_name); 278 GDataFileCollection::const_iterator iter = child_files_.find(file_name);
277 if (it != child_files_.end()) 279 if (iter != child_files_.end())
278 return it->second; 280 return iter->second;
279 281
280 GDataDirectoryCollection::const_iterator itd = 282 GDataDirectoryCollection::const_iterator itd =
281 child_directories_.find(file_name); 283 child_directories_.find(file_name);
282 if (itd != child_directories_.end()) 284 if (itd != child_directories_.end())
283 return itd->second; 285 return itd->second;
284 286
285 return NULL; 287 return NULL;
286 } 288 }
287 289
288 void GDataDirectory::AddChild(GDataEntry* entry) { 290 void GDataDirectory::AddChild(GDataEntry* entry) {
289 DCHECK(entry); 291 DCHECK(entry);
290 292
291 GDataFile* file = entry->AsGDataFile(); 293 if (entry->AsGDataFile())
292 if (file) 294 child_files_.insert(std::make_pair(entry->base_name(),
293 child_files_.insert(std::make_pair(entry->base_name(), file)); 295 entry->AsGDataFile()));
294 296
295 GDataDirectory* directory = entry->AsGDataDirectory(); 297 if (entry->AsGDataDirectory())
296 if (directory) 298 child_directories_.insert(std::make_pair(entry->base_name(),
297 child_directories_.insert(std::make_pair(entry->base_name(), directory)); 299 entry->AsGDataDirectory()));
298 } 300 }
299 301
300 void GDataDirectory::RemoveChild(GDataEntry* entry) { 302 void GDataDirectory::RemoveChild(GDataEntry* entry) {
301 DCHECK(entry); 303 DCHECK(entry);
302 304
303 const std::string& base_name(entry->base_name()); 305 const std::string& base_name(entry->base_name());
304 // entry must be present in this directory. 306 // entry must be present in this directory.
305 DCHECK_EQ(entry, FindChild(base_name)); 307 DCHECK_EQ(entry, FindChild(base_name));
306 // Remove entry from resource map first. 308 // Remove entry from resource map first.
307 if (directory_service_) 309 directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
308 directory_service_->RemoveEntryFromResourceMap(entry);
309 310
310 // Then delete it from tree. 311 // Then delete it from tree.
311 child_files_.erase(base_name); 312 child_files_.erase(base_name);
312 child_directories_.erase(base_name); 313 child_directories_.erase(base_name);
313 314
314 entry->SetParent(NULL); 315 entry->SetParent(NULL);
315 } 316 }
316 317
317 void GDataDirectory::RemoveChildren() { 318 void GDataDirectory::RemoveChildren() {
318 RemoveChildFiles(); 319 RemoveChildFiles();
319 RemoveChildDirectories(); 320 RemoveChildDirectories();
320 } 321 }
321 322
322 void GDataDirectory::RemoveChildFiles() { 323 void GDataDirectory::RemoveChildFiles() {
324 DVLOG(1) << "RemoveChildFiles " << resource_id();
323 for (GDataFileCollection::const_iterator iter = child_files_.begin(); 325 for (GDataFileCollection::const_iterator iter = child_files_.begin();
324 iter != child_files_.end(); ++iter) { 326 iter != child_files_.end(); ++iter) {
325 if (directory_service_) 327 directory_service_->RemoveEntryFromResourceMap(iter->second->resource_id());
326 directory_service_->RemoveEntryFromResourceMap(iter->second);
327 } 328 }
328 STLDeleteValues(&child_files_); 329 STLDeleteValues(&child_files_);
329 child_files_.clear(); 330 child_files_.clear();
330 } 331 }
331 332
332 void GDataDirectory::RemoveChildDirectories() { 333 void GDataDirectory::RemoveChildDirectories() {
333 for (GDataDirectoryCollection::iterator iter = child_directories_.begin(); 334 for (GDataDirectoryCollection::iterator iter = child_directories_.begin();
334 iter != child_directories_.end(); ++iter) { 335 iter != child_directories_.end(); ++iter) {
335 GDataDirectory* dir = iter->second; 336 GDataDirectory* dir = iter->second;
336 // Remove directories recursively. 337 // Remove directories recursively.
337 dir->RemoveChildren(); 338 dir->RemoveChildren();
338 if (directory_service_) 339 directory_service_->RemoveEntryFromResourceMap(dir->resource_id());
339 directory_service_->RemoveEntryFromResourceMap(dir);
340 } 340 }
341 STLDeleteValues(&child_directories_); 341 STLDeleteValues(&child_directories_);
342 child_directories_.clear(); 342 child_directories_.clear();
343 } 343 }
344 344
345 // Recursively extracts the paths set of all sub-directories.
satorux1 2012/08/17 11:49:17 remove this comment?
achuithb 2012/08/17 21:02:27 Done.
346 void GDataDirectory::GetChildDirectoryPaths(std::set<FilePath>* child_dirs) {
347 for (GDataDirectoryCollection::const_iterator it = child_directories_.begin();
348 it != child_directories_.end(); ++it) {
349 GDataDirectory* child_dir = it->second;
350 child_dirs->insert(child_dir->GetFilePath());
351 child_dir->GetChildDirectoryPaths(child_dirs);
352 }
353 }
354
345 // Convert to/from proto. 355 // Convert to/from proto.
346 356
347 // static 357 // static
348 void GDataEntry::ConvertProtoToPlatformFileInfo( 358 void GDataEntry::ConvertProtoToPlatformFileInfo(
349 const PlatformFileInfoProto& proto, 359 const PlatformFileInfoProto& proto,
350 base::PlatformFileInfo* file_info) { 360 base::PlatformFileInfo* file_info) {
351 file_info->size = proto.size(); 361 file_info->size = proto.size();
352 file_info->is_directory = proto.is_directory(); 362 file_info->is_directory = proto.is_directory();
353 file_info->is_symbolic_link = proto.is_symbolic_link(); 363 file_info->is_symbolic_link = proto.is_symbolic_link();
354 file_info->last_modified = base::Time::FromInternalValue( 364 file_info->last_modified = base::Time::FromInternalValue(
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 for (GDataDirectoryCollection::const_iterator iter = 501 for (GDataDirectoryCollection::const_iterator iter =
492 child_directories_.begin(); 502 child_directories_.begin();
493 iter != child_directories_.end(); ++iter) { 503 iter != child_directories_.end(); ++iter) {
494 GDataDirectory* dir = iter->second; 504 GDataDirectory* dir = iter->second;
495 dir->ToProto(proto->add_child_directories()); 505 dir->ToProto(proto->add_child_directories());
496 } 506 }
497 } 507 }
498 508
499 scoped_ptr<GDataEntryProtoVector> GDataDirectory::ToProtoVector() const { 509 scoped_ptr<GDataEntryProtoVector> GDataDirectory::ToProtoVector() const {
500 scoped_ptr<GDataEntryProtoVector> entries(new GDataEntryProtoVector); 510 scoped_ptr<GDataEntryProtoVector> entries(new GDataEntryProtoVector);
501 for (GDataFileCollection::const_iterator iter = child_files().begin(); 511 for (GDataFileCollection::const_iterator iter = child_files_.begin();
502 iter != child_files().end(); ++iter) { 512 iter != child_files_.end(); ++iter) {
503 GDataEntryProto proto; 513 GDataEntryProto proto;
504 iter->second->ToProto(&proto); 514 iter->second->ToProto(&proto);
505 entries->push_back(proto); 515 entries->push_back(proto);
506 } 516 }
507 for (GDataDirectoryCollection::const_iterator iter = 517 for (GDataDirectoryCollection::const_iterator iter =
508 child_directories().begin(); 518 child_directories_.begin();
509 iter != child_directories().end(); ++iter) { 519 iter != child_directories_.end(); ++iter) {
510 GDataEntryProto proto; 520 GDataEntryProto proto;
511 // Convert to GDataEntry, as we don't want to include children in |proto|. 521 // Convert to GDataEntry, as we don't want to include children in |proto|.
512 static_cast<const GDataEntry*>(iter->second)->ToProtoFull(&proto); 522 static_cast<const GDataEntry*>(iter->second)->ToProtoFull(&proto);
513 entries->push_back(proto); 523 entries->push_back(proto);
514 } 524 }
515 525
516 return entries.Pass(); 526 return entries.Pass();
517 } 527 }
518 528
519 void GDataEntry::SerializeToString(std::string* serialized_proto) const { 529 void GDataEntry::SerializeToString(std::string* serialized_proto) const {
520 const GDataFile* file = AsGDataFileConst(); 530 const GDataFile* file = AsGDataFileConst();
521 const GDataDirectory* dir = AsGDataDirectoryConst(); 531 const GDataDirectory* dir = AsGDataDirectoryConst();
522 532
523 if (file) { 533 if (file) {
524 GDataEntryProto entry_proto; 534 GDataEntryProto entry_proto;
525 file->ToProto(&entry_proto); 535 file->ToProto(&entry_proto);
526 const bool ok = entry_proto.SerializeToString(serialized_proto); 536 const bool ok = entry_proto.SerializeToString(serialized_proto);
527 DCHECK(ok); 537 DCHECK(ok);
528 } else if (dir) { 538 } else if (dir) {
529 GDataDirectoryProto dir_proto; 539 GDataDirectoryProto dir_proto;
530 dir->ToProto(&dir_proto); 540 dir->ToProto(&dir_proto);
531 const bool ok = dir_proto.SerializeToString(serialized_proto); 541 const bool ok = dir_proto.SerializeToString(serialized_proto);
532 DCHECK(ok); 542 DCHECK(ok);
533 } 543 }
534 } 544 }
535 545
536 } // namespace gdata 546 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698