Remove stl_util use from domain_reliability.

BUG=555865

Review-Url: https://codereview.chromium.org/2289763003
Cr-Commit-Position: refs/heads/master@{#415318}
diff --git a/components/domain_reliability/dispatcher.cc b/components/domain_reliability/dispatcher.cc
index 3c42a97..3abef20 100644
--- a/components/domain_reliability/dispatcher.cc
+++ b/components/domain_reliability/dispatcher.cc
@@ -4,12 +4,13 @@
 
 #include "components/domain_reliability/dispatcher.h"
 
+#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
-#include "base/stl_util.h"
 #include "base/timer/timer.h"
 #include "components/domain_reliability/util.h"
 
@@ -45,10 +46,7 @@
 DomainReliabilityDispatcher::DomainReliabilityDispatcher(MockableTime* time)
     : time_(time) {}
 
-DomainReliabilityDispatcher::~DomainReliabilityDispatcher() {
-  // TODO(juliatuttle): STLElementDeleter?
-  base::STLDeleteElements(&tasks_);
-}
+DomainReliabilityDispatcher::~DomainReliabilityDispatcher() {}
 
 void DomainReliabilityDispatcher::ScheduleTask(
     const base::Closure& closure,
@@ -58,8 +56,10 @@
   // Would be DCHECK_LE, but you can't << a TimeDelta.
   DCHECK(min_delay <= max_delay);
 
-  Task* task = new Task(closure, time_->CreateTimer(), min_delay, max_delay);
-  tasks_.insert(task);
+  std::unique_ptr<Task> owned_task = base::MakeUnique<Task>(
+      closure, time_->CreateTimer(), min_delay, max_delay);
+  Task* task = owned_task.get();
+  tasks_.insert(std::move(owned_task));
   if (max_delay.InMicroseconds() < 0)
     RunAndDeleteTask(task);
   else if (min_delay.InMicroseconds() < 0)
@@ -113,8 +113,14 @@
   task->closure.Run();
   if (task->eligible)
     eligible_tasks_.erase(task);
-  tasks_.erase(task);
-  delete task;
+
+  auto it = std::find_if(tasks_.begin(), tasks_.end(),
+                         [task](const std::unique_ptr<Task>& task_ptr) {
+                           return task_ptr.get() == task;
+                         });
+
+  DCHECK(it != tasks_.end());
+  tasks_.erase(it);
 }
 
 }  // namespace domain_reliability