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

Side by Side Diff: chrome/browser/chromeos/drive/drive_resource_metadata.cc

Issue 12610012: chromeos: Remove DriveResourceMetadata::RemoveDirectoryChildFiles/Directories (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add missing delete Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/drive/drive_resource_metadata.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/drive/drive_resource_metadata.h" 5 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h"
6 6
7 #include <leveldb/db.h> 7 #include <leveldb/db.h>
8 #include <stack> 8 #include <stack>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 RemoveEntryFromResourceMap(entry->resource_id()); 737 RemoveEntryFromResourceMap(entry->resource_id());
738 738
739 // Then delete it from tree. 739 // Then delete it from tree.
740 child_maps_[directory->resource_id()].erase(base_name); 740 child_maps_[directory->resource_id()].erase(base_name);
741 741
742 entry->set_parent_resource_id(std::string()); 742 entry->set_parent_resource_id(std::string());
743 } 743 }
744 744
745 void DriveResourceMetadata::RemoveDirectoryChildren( 745 void DriveResourceMetadata::RemoveDirectoryChildren(
746 DriveEntryProto* directory) { 746 DriveEntryProto* directory) {
747 RemoveDirectoryChildFiles(directory);
748 RemoveDirectoryChildDirectories(directory);
749 DCHECK(child_maps_[directory->resource_id()].empty());
750 child_maps_.erase(directory->resource_id());
751 }
752
753 void DriveResourceMetadata::RemoveDirectoryChildFiles(
754 DriveEntryProto* directory) {
755 DCHECK(directory->file_info().is_directory()); 747 DCHECK(directory->file_info().is_directory());
756 DriveResourceMetadata::ChildMap* children = 748 DriveResourceMetadata::ChildMap* children =
757 &child_maps_[directory->resource_id()]; 749 &child_maps_[directory->resource_id()];
758 for (DriveResourceMetadata::ChildMap::iterator iter = children->begin(), 750 for (DriveResourceMetadata::ChildMap::iterator iter = children->begin();
759 iter_next = iter; iter != children->end(); iter = iter_next) { 751 iter != children->end(); ++iter) {
760 ++iter_next;
761 DriveEntryProto* child = GetEntryByResourceId(iter->second); 752 DriveEntryProto* child = GetEntryByResourceId(iter->second);
762 DCHECK(child); 753 DCHECK(child);
763 if (!child->file_info().is_directory()) { 754 // Remove directories recursively.
764 RemoveEntryFromResourceMap(iter->second); 755 if (child->file_info().is_directory())
765 delete child; 756 RemoveDirectoryChildren(child);
766 children->erase(iter); 757
767 } 758 RemoveEntryFromResourceMap(iter->second);
759 delete child;
768 } 760 }
769 } 761 child_maps_.erase(directory->resource_id());
770
771 void DriveResourceMetadata::RemoveDirectoryChildDirectories(
772 DriveEntryProto* directory) {
773 DCHECK(directory->file_info().is_directory());
774 DriveResourceMetadata::ChildMap* children =
775 &child_maps_[directory->resource_id()];
776 for (DriveResourceMetadata::ChildMap::iterator iter = children->begin(),
777 iter_next = iter; iter != children->end(); iter = iter_next) {
778 ++iter_next;
779 DriveEntryProto* entry = GetEntryByResourceId(iter->second);
780 DCHECK(entry);
781 if (entry->file_info().is_directory()) {
782 // Remove directories recursively.
783 RemoveDirectoryChildren(entry);
784 RemoveEntryFromResourceMap(iter->second);
785 delete entry;
786 children->erase(iter);
787 }
788 }
789 } 762 }
790 763
791 void DriveResourceMetadata::ProtoToDirectory(const DriveDirectoryProto& proto, 764 void DriveResourceMetadata::ProtoToDirectory(const DriveDirectoryProto& proto,
792 DriveEntryProto* directory) { 765 DriveEntryProto* directory) {
793 DCHECK(proto.drive_entry().file_info().is_directory()); 766 DCHECK(proto.drive_entry().file_info().is_directory());
794 DCHECK(!proto.drive_entry().has_file_specific_info()); 767 DCHECK(!proto.drive_entry().has_file_specific_info());
795 768
796 *directory = CreateEntryWithProperBaseName(proto.drive_entry()); 769 *directory = CreateEntryWithProperBaseName(proto.drive_entry());
797 770
798 for (int i = 0; i < proto.child_files_size(); ++i) { 771 for (int i = 0; i < proto.child_files_size(); ++i) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 const ChildMap& children = child_maps_[directory->resource_id()]; 805 const ChildMap& children = child_maps_[directory->resource_id()];
833 for (ChildMap::const_iterator iter = children.begin(); 806 for (ChildMap::const_iterator iter = children.begin();
834 iter != children.end(); ++iter) { 807 iter != children.end(); ++iter) {
835 const DriveEntryProto& proto = *GetEntryByResourceId(iter->second); 808 const DriveEntryProto& proto = *GetEntryByResourceId(iter->second);
836 entries->push_back(proto); 809 entries->push_back(proto);
837 } 810 }
838 return entries.Pass(); 811 return entries.Pass();
839 } 812 }
840 813
841 } // namespace drive 814 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/drive_resource_metadata.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698