Index: apps/saved_files_service.cc |
diff --git a/apps/saved_files_service.cc b/apps/saved_files_service.cc |
index 36a7571241c787a1f3f3223db3ed6465fdde060e..766efce8ef5a17ee5539b5282bf63ff3ebbf71bd 100644 |
--- a/apps/saved_files_service.cc |
+++ b/apps/saved_files_service.cc |
@@ -5,10 +5,11 @@ |
#include "apps/saved_files_service.h" |
#include <algorithm> |
+#include <map> |
#include "apps/saved_files_service_factory.h" |
#include "base/basictypes.h" |
-#include "base/containers/hash_tables.h" |
+#include "base/containers/scoped_ptr_hash_map.h" |
#include "base/value_conversions.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -177,9 +178,8 @@ class SavedFilesService::SavedFiles { |
// Contains all file entries that have been registered, keyed by ID. Owns |
// values. |
- base::hash_map<std::string, SavedFileEntry*> registered_file_entries_; |
- STLValueDeleter<base::hash_map<std::string, SavedFileEntry*> > |
- registered_file_entries_deleter_; |
+ base::ScopedPtrHashMap<std::string, scoped_ptr<SavedFileEntry>> |
+ registered_file_entries_; |
// The queue of file entries that have been retained, keyed by |
// sequence_number. Values are a subset of values in registered_file_entries_. |
@@ -194,9 +194,7 @@ SavedFilesService* SavedFilesService::Get(Profile* profile) { |
return SavedFilesServiceFactory::GetForProfile(profile); |
} |
-SavedFilesService::SavedFilesService(Profile* profile) |
- : extension_id_to_saved_files_deleter_(&extension_id_to_saved_files_), |
- profile_(profile) { |
+SavedFilesService::SavedFilesService(Profile* profile) : profile_(profile) { |
registrar_.Add(this, |
extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
content::NotificationService::AllSources()); |
@@ -277,7 +275,7 @@ void SavedFilesService::ClearQueue(const extensions::Extension* extension) { |
SavedFilesService::SavedFiles* SavedFilesService::Get( |
const std::string& extension_id) const { |
- std::map<std::string, SavedFiles*>::const_iterator it = |
+ ScopedPtrMap<std::string, scoped_ptr<SavedFiles>>::const_iterator it = |
extension_id_to_saved_files_.find(extension_id); |
if (it != extension_id_to_saved_files_.end()) |
return it->second; |
@@ -291,26 +289,20 @@ SavedFilesService::SavedFiles* SavedFilesService::GetOrInsert( |
if (saved_files) |
return saved_files; |
- saved_files = new SavedFiles(profile_, extension_id); |
- extension_id_to_saved_files_.insert( |
- std::make_pair(extension_id, saved_files)); |
+ scoped_ptr<SavedFiles> scoped_saved_files( |
+ new SavedFiles(profile_, extension_id)); |
+ saved_files = scoped_saved_files.get(); |
+ extension_id_to_saved_files_.insert(extension_id, scoped_saved_files.Pass()); |
return saved_files; |
} |
void SavedFilesService::Clear(const std::string& extension_id) { |
- std::map<std::string, SavedFiles*>::iterator it = |
- extension_id_to_saved_files_.find(extension_id); |
- if (it != extension_id_to_saved_files_.end()) { |
- delete it->second; |
- extension_id_to_saved_files_.erase(it); |
- } |
+ extension_id_to_saved_files_.erase(extension_id); |
} |
SavedFilesService::SavedFiles::SavedFiles(Profile* profile, |
const std::string& extension_id) |
- : profile_(profile), |
- extension_id_(extension_id), |
- registered_file_entries_deleter_(®istered_file_entries_) { |
+ : profile_(profile), extension_id_(extension_id) { |
LoadSavedFileEntriesFromPreferences(); |
} |
@@ -323,13 +315,12 @@ void SavedFilesService::SavedFiles::RegisterFileEntry( |
if (ContainsKey(registered_file_entries_, id)) |
return; |
- registered_file_entries_.insert( |
- std::make_pair(id, new SavedFileEntry(id, file_path, is_directory, 0))); |
+ registered_file_entries_.add( |
+ id, make_scoped_ptr(new SavedFileEntry(id, file_path, is_directory, 0))); |
} |
void SavedFilesService::SavedFiles::EnqueueFileEntry(const std::string& id) { |
- base::hash_map<std::string, SavedFileEntry*>::iterator it = |
- registered_file_entries_.find(id); |
+ auto it = registered_file_entries_.find(id); |
tapted
2015/06/19 00:12:01
`it` becomes a shadowed variable just below, which
Matt Giuca
2015/06/19 04:03:25
I'm hesitant to use get() because there's no get()
|
DCHECK(it != registered_file_entries_.end()); |
SavedFileEntry* file_entry = it->second; |
@@ -370,8 +361,7 @@ bool SavedFilesService::SavedFiles::IsRegistered(const std::string& id) const { |
const SavedFileEntry* SavedFilesService::SavedFiles::GetFileEntry( |
const std::string& id) const { |
- base::hash_map<std::string, SavedFileEntry*>::const_iterator it = |
- registered_file_entries_.find(id); |
+ auto it = registered_file_entries_.find(id); |
tapted
2015/06/19 00:12:01
nit: just `return registered_file_entries_.get(id)
Matt Giuca
2015/06/19 04:03:25
As above, I think we should consider get() to be d
|
if (it == registered_file_entries_.end()) |
return NULL; |
@@ -381,10 +371,8 @@ const SavedFileEntry* SavedFilesService::SavedFiles::GetFileEntry( |
std::vector<SavedFileEntry> SavedFilesService::SavedFiles::GetAllFileEntries() |
const { |
std::vector<SavedFileEntry> result; |
- for (base::hash_map<std::string, SavedFileEntry*>::const_iterator it = |
- registered_file_entries_.begin(); |
- it != registered_file_entries_.end(); |
- ++it) { |
+ for (auto it = registered_file_entries_.begin(); |
+ it != registered_file_entries_.end(); ++it) { |
result.push_back(*it->second); |
} |
return result; |
@@ -432,10 +420,11 @@ void SavedFilesService::SavedFiles::LoadSavedFileEntriesFromPreferences() { |
for (std::vector<SavedFileEntry>::iterator it = saved_entries.begin(); |
it != saved_entries.end(); |
++it) { |
- SavedFileEntry* file_entry = new SavedFileEntry(*it); |
- registered_file_entries_.insert(std::make_pair(file_entry->id, file_entry)); |
+ scoped_ptr<SavedFileEntry> file_entry(new SavedFileEntry(*it)); |
+ const std::string& id = file_entry->id; |
saved_file_lru_.insert( |
- std::make_pair(file_entry->sequence_number, file_entry)); |
+ std::make_pair(file_entry->sequence_number, file_entry.get())); |
+ registered_file_entries_.add(id, file_entry.Pass()); |
} |
} |