Index: chrome/browser/media_galleries/media_file_system_registry.cc |
diff --git a/chrome/browser/media_galleries/media_file_system_registry.cc b/chrome/browser/media_galleries/media_file_system_registry.cc |
index 5d3611258accef17eb4a7a709b57c91581586b1b..617ccb95f01c4c7b500722d439667e377ea59331 100644 |
--- a/chrome/browser/media_galleries/media_file_system_registry.cc |
+++ b/chrome/browser/media_galleries/media_file_system_registry.cc |
@@ -13,6 +13,7 @@ |
#include "base/callback.h" |
#include "base/files/file_path.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/stl_util.h" |
#include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" |
#include "chrome/browser/media_galleries/gallery_watch_manager.h" |
@@ -94,9 +95,9 @@ class RPHReferenceManager { |
virtual ~RPHReferenceManager(); |
// Remove all references, but don't call |no_references_callback|. |
- void Reset() { base::STLDeleteValues(&observer_map_); } |
+ void Reset() { observer_map_.clear(); } |
- // Returns true if there are no references; |
+ // Returns true if there are no references. |
bool empty() const { return observer_map_.empty(); } |
// Adds a reference to the passed |contents|. Calling this multiple times with |
@@ -134,10 +135,9 @@ class RPHReferenceManager { |
RPHReferenceManager* manager_; |
RenderProcessHost* host_; |
- typedef std::map<WebContents*, RPHWebContentsObserver*> WCObserverMap; |
- WCObserverMap observed_web_contentses_; |
+ std::map<WebContents*, std::unique_ptr<RPHWebContentsObserver>> |
+ observed_web_contentses_; |
}; |
- typedef std::map<const RenderProcessHost*, RPHObserver*> RPHObserverMap; |
// Handlers for observed events. |
void OnRenderProcessHostDestroyed(RenderProcessHost* rph); |
@@ -148,7 +148,8 @@ class RPHReferenceManager { |
// The set of render processes and web contents that may have references to |
// the file system ids this instance manages. |
- RPHObserverMap observer_map_; |
+ std::map<const RenderProcessHost*, std::unique_ptr<RPHObserver>> |
+ observer_map_; |
}; |
RPHReferenceManager::RPHReferenceManager( |
@@ -163,15 +164,10 @@ RPHReferenceManager::~RPHReferenceManager() { |
void RPHReferenceManager::ReferenceFromWebContents( |
content::WebContents* contents) { |
RenderProcessHost* rph = contents->GetRenderProcessHost(); |
- RPHObserver* state = NULL; |
if (!base::ContainsKey(observer_map_, rph)) { |
- state = new RPHObserver(this, rph); |
- observer_map_[rph] = state; |
- } else { |
- state = observer_map_[rph]; |
+ observer_map_[rph] = base::MakeUnique<RPHObserver>(this, rph); |
} |
- |
- state->AddWebContentsObserver(contents); |
+ observer_map_[rph]->AddWebContentsObserver(contents); |
} |
RPHReferenceManager::RPHWebContentsObserver::RPHWebContentsObserver( |
@@ -201,7 +197,7 @@ RPHReferenceManager::RPHObserver::RPHObserver( |
} |
RPHReferenceManager::RPHObserver::~RPHObserver() { |
- base::STLDeleteValues(&observed_web_contentses_); |
+ observed_web_contentses_.clear(); |
if (host_) |
host_->RemoveObserver(this); |
} |
@@ -211,18 +207,15 @@ void RPHReferenceManager::RPHObserver::AddWebContentsObserver( |
if (base::ContainsKey(observed_web_contentses_, web_contents)) |
return; |
- RPHWebContentsObserver* observer = |
- new RPHWebContentsObserver(manager_, web_contents); |
- observed_web_contentses_[web_contents] = observer; |
+ observed_web_contentses_[web_contents] = |
+ base::MakeUnique<RPHWebContentsObserver>(manager_, web_contents); |
} |
void RPHReferenceManager::RPHObserver::RemoveWebContentsObserver( |
WebContents* web_contents) { |
- WCObserverMap::iterator wco_iter = |
- observed_web_contentses_.find(web_contents); |
- DCHECK(wco_iter != observed_web_contentses_.end()); |
- delete wco_iter->second; |
- observed_web_contentses_.erase(wco_iter); |
+ DCHECK(observed_web_contentses_.find(web_contents) != |
+ observed_web_contentses_.end()); |
+ observed_web_contentses_.erase(web_contents); |
} |
void RPHReferenceManager::RPHObserver::RenderProcessHostDestroyed( |
@@ -233,7 +226,7 @@ void RPHReferenceManager::RPHObserver::RenderProcessHostDestroyed( |
void RPHReferenceManager::OnRenderProcessHostDestroyed( |
RenderProcessHost* rph) { |
- RPHObserverMap::iterator rph_info = observer_map_.find(rph); |
+ auto rph_info = observer_map_.find(rph); |
// This could be a potential problem if the RPH is navigated to a page on the |
// same renderer (triggering OnWebContentsDestroyedOrNavigated()) and then the |
// renderer crashes. |
@@ -241,7 +234,6 @@ void RPHReferenceManager::OnRenderProcessHostDestroyed( |
NOTREACHED(); |
return; |
} |
- delete rph_info->second; |
observer_map_.erase(rph_info); |
if (observer_map_.empty()) |
no_references_callback_.Run(); |
@@ -250,7 +242,7 @@ void RPHReferenceManager::OnRenderProcessHostDestroyed( |
void RPHReferenceManager::OnWebContentsDestroyedOrNavigated( |
WebContents* contents) { |
RenderProcessHost* rph = contents->GetRenderProcessHost(); |
- RPHObserverMap::iterator rph_info = observer_map_.find(rph); |
+ auto rph_info = observer_map_.find(rph); |
DCHECK(rph_info != observer_map_.end()); |
rph_info->second->RemoveWebContentsObserver(contents); |