Index: components/dom_distiller/core/dom_distiller_service.cc |
diff --git a/components/dom_distiller/core/dom_distiller_service.cc b/components/dom_distiller/core/dom_distiller_service.cc |
index bb31c6a0abda138e4b437bad00628d5db291c7da..3e1f7249868efac1e5c0bf6b0044cb0cdbcd4e5d 100644 |
--- a/components/dom_distiller/core/dom_distiller_service.cc |
+++ b/components/dom_distiller/core/dom_distiller_service.cc |
@@ -8,6 +8,7 @@ |
#include "base/guid.h" |
#include "base/location.h" |
+#include "base/memory/ptr_util.h" |
#include "base/single_thread_task_runner.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "components/dom_distiller/core/distilled_content_store.h" |
@@ -215,9 +216,9 @@ bool DomDistillerService::GetOrCreateTaskTrackerForUrl( |
} |
TaskTracker* DomDistillerService::GetTaskTrackerForUrl(const GURL& url) const { |
- for (TaskList::const_iterator it = tasks_.begin(); it != tasks_.end(); ++it) { |
+ for (auto it = tasks_.begin(); it != tasks_.end(); ++it) { |
if ((*it)->HasUrl(url)) { |
- return *it; |
+ return (*it).get(); |
} |
} |
return nullptr; |
@@ -226,9 +227,9 @@ TaskTracker* DomDistillerService::GetTaskTrackerForUrl(const GURL& url) const { |
TaskTracker* DomDistillerService::GetTaskTrackerForEntry( |
const ArticleEntry& entry) const { |
const std::string& entry_id = entry.entry_id(); |
- for (TaskList::const_iterator it = tasks_.begin(); it != tasks_.end(); ++it) { |
+ for (auto it = tasks_.begin(); it != tasks_.end(); ++it) { |
if ((*it)->HasEntryId(entry_id)) { |
- return *it; |
+ return (*it).get(); |
} |
} |
return nullptr; |
@@ -248,16 +249,19 @@ bool DomDistillerService::GetOrCreateTaskTrackerForEntry( |
TaskTracker* DomDistillerService::CreateTaskTracker(const ArticleEntry& entry) { |
TaskTracker::CancelCallback cancel_callback = |
base::Bind(&DomDistillerService::CancelTask, base::Unretained(this)); |
- TaskTracker* tracker = |
- new TaskTracker(entry, cancel_callback, content_store_.get()); |
- tasks_.push_back(tracker); |
- return tracker; |
+ tasks_.push_back(base::MakeUnique<TaskTracker>(entry, cancel_callback, |
+ content_store_.get())); |
+ return tasks_.back().get(); |
} |
void DomDistillerService::CancelTask(TaskTracker* task) { |
- TaskList::iterator it = std::find(tasks_.begin(), tasks_.end(), task); |
+ auto it = std::find_if(tasks_.begin(), tasks_.end(), |
+ [task](const std::unique_ptr<TaskTracker>& t) { |
+ return task == t.get(); |
+ }); |
if (it != tasks_.end()) { |
- tasks_.weak_erase(it); |
+ it->release(); |
+ tasks_.erase(it); |
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, task); |
} |
} |