Remove stl_util's deletion functions from chromeos/.

BUG=555865

Review-Url: https://codereview.chromium.org/2387783002
Cr-Commit-Position: refs/heads/master@{#422979}
diff --git a/chromeos/settings/timezone_settings.cc b/chromeos/settings/timezone_settings.cc
index 7dbe669..0f42e86 100644
--- a/chromeos/settings/timezone_settings.cc
+++ b/chromeos/settings/timezone_settings.cc
@@ -15,9 +15,9 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/singleton.h"
 #include "base/observer_list.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/sys_info.h"
@@ -279,7 +279,8 @@
   void SetTimezoneFromID(const base::string16& timezone_id) override;
   void AddObserver(Observer* observer) override;
   void RemoveObserver(Observer* observer) override;
-  const std::vector<icu::TimeZone*>& GetTimezoneList() const override;
+  const std::vector<std::unique_ptr<icu::TimeZone>>& GetTimezoneList()
+      const override;
 
  protected:
   TimezoneSettingsBaseImpl();
@@ -295,7 +296,7 @@
       const icu::TimeZone& timezone) const;
 
   base::ObserverList<Observer> observers_;
-  std::vector<icu::TimeZone*> timezones_;
+  std::vector<std::unique_ptr<icu::TimeZone>> timezones_;
   std::unique_ptr<icu::TimeZone> timezone_;
 
  private:
@@ -335,7 +336,6 @@
 };
 
 TimezoneSettingsBaseImpl::~TimezoneSettingsBaseImpl() {
-  base::STLDeleteElements(&timezones_);
 }
 
 const icu::TimeZone& TimezoneSettingsBaseImpl::GetTimezone() {
@@ -361,15 +361,15 @@
   observers_.RemoveObserver(observer);
 }
 
-const std::vector<icu::TimeZone*>&
+const std::vector<std::unique_ptr<icu::TimeZone>>&
 TimezoneSettingsBaseImpl::GetTimezoneList() const {
   return timezones_;
 }
 
 TimezoneSettingsBaseImpl::TimezoneSettingsBaseImpl() {
   for (size_t i = 0; i < arraysize(kTimeZones); ++i) {
-    timezones_.push_back(icu::TimeZone::createTimeZone(
-        icu::UnicodeString(kTimeZones[i], -1, US_INV)));
+    timezones_.push_back(base::WrapUnique(icu::TimeZone::createTimeZone(
+        icu::UnicodeString(kTimeZones[i], -1, US_INV))));
   }
 }
 
diff --git a/chromeos/settings/timezone_settings.h b/chromeos/settings/timezone_settings.h
index 7ab0084..b504cc6 100644
--- a/chromeos/settings/timezone_settings.h
+++ b/chromeos/settings/timezone_settings.h
@@ -42,7 +42,8 @@
   virtual void AddObserver(Observer* observer) = 0;
   virtual void RemoveObserver(Observer* observer) = 0;
 
-  virtual const std::vector<icu::TimeZone*>& GetTimezoneList() const = 0;
+  virtual const std::vector<std::unique_ptr<icu::TimeZone>>& GetTimezoneList()
+      const = 0;
 
   // Gets timezone ID which is also used as timezone pref value.
   static base::string16 GetTimezoneID(const icu::TimeZone& timezone);
diff --git a/chromeos/settings/timezone_settings_helper.cc b/chromeos/settings/timezone_settings_helper.cc
index 781f774..7390e5d 100644
--- a/chromeos/settings/timezone_settings_helper.cc
+++ b/chromeos/settings/timezone_settings_helper.cc
@@ -12,16 +12,16 @@
 
 CHROMEOS_EXPORT const icu::TimeZone* GetKnownTimezoneOrNull(
     const icu::TimeZone& timezone,
-    const std::vector<icu::TimeZone*>& timezone_list) {
-  const icu::TimeZone* known_timezone = NULL;
+    const std::vector<std::unique_ptr<icu::TimeZone>>& timezone_list) {
+  const icu::TimeZone* known_timezone = nullptr;
   icu::UnicodeString id, canonical_id;
   timezone.getID(id);
   UErrorCode status = U_ZERO_ERROR;
   icu::TimeZone::getCanonicalID(id, canonical_id, status);
   DCHECK(U_SUCCESS(status));
-  for (const auto* entry : timezone_list) {
-    if (*entry == timezone)
-      return entry;
+  for (const auto& entry : timezone_list) {
+    if (*entry.get() == timezone)
+      return entry.get();
     // Compare the canonical IDs as well.
     // For instance, Asia/Ulan_Bator -> Asia/Ulaanbaatar or
     // Canada/Pacific -> America/Vancouver
@@ -30,14 +30,14 @@
     icu::TimeZone::getCanonicalID(entry_id, entry_canonical_id, status);
     DCHECK(U_SUCCESS(status));
     if (entry_canonical_id == canonical_id)
-      return entry;
+      return entry.get();
     // Last resort: If no match is found, the last timezone in the list
     // with matching rules will be returned.
     if (entry->hasSameRules(timezone))
-      known_timezone = entry;
+      known_timezone = entry.get();
   }
 
-  // May return NULL if we did not find a matching timezone in our list.
+  // May return null if we did not find a matching timezone in our list.
   return known_timezone;
 }
 
diff --git a/chromeos/settings/timezone_settings_helper.h b/chromeos/settings/timezone_settings_helper.h
index c8ed8ee..a368ad7 100644
--- a/chromeos/settings/timezone_settings_helper.h
+++ b/chromeos/settings/timezone_settings_helper.h
@@ -5,6 +5,7 @@
 #ifndef CHROMEOS_SETTINGS_TIMEZONE_SETTINGS_HELPER_H_
 #define CHROMEOS_SETTINGS_TIMEZONE_SETTINGS_HELPER_H_
 
+#include <memory>
 #include <vector>
 
 #include "third_party/icu/source/i18n/unicode/timezone.h"
@@ -17,7 +18,7 @@
 // the same rules. Otherwise, return null.
 const icu::TimeZone* GetKnownTimezoneOrNull(
     const icu::TimeZone& timezone,
-    const std::vector<icu::TimeZone*>& timezone_list);
+    const std::vector<std::unique_ptr<icu::TimeZone>>& timezone_list);
 
 }  // namespace system
 }  // namespace chromeos
diff --git a/chromeos/settings/timezone_settings_unittest.cc b/chromeos/settings/timezone_settings_unittest.cc
index 3c9e129a..2e23ae1 100644
--- a/chromeos/settings/timezone_settings_unittest.cc
+++ b/chromeos/settings/timezone_settings_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/memory/ptr_util.h"
 #include "chromeos/settings/timezone_settings_helper.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/icu/source/common/unicode/unistr.h"
@@ -36,14 +36,13 @@
 
   void SetUp() override {
     for (const char* id : kTimeZones) {
-      timezones_.push_back(TimeZone::createTimeZone(UnicodeString(id)));
+      timezones_.push_back(
+          base::WrapUnique(TimeZone::createTimeZone(UnicodeString(id))));
     }
   }
 
-  void TearDown() override { base::STLDeleteElements(&timezones_); }
-
  protected:
-  std::vector<TimeZone*> timezones_;
+  std::vector<std::unique_ptr<TimeZone>> timezones_;
 };
 
 TEST_F(KnownTimeZoneTest, IdMatch) {