Fix memory leaks in content settings introduced by linked_ptr removal.

Bug: 556939, 914453
Change-Id: Ibd8757967a051507e0fc2a9ae93ac789e51b005b
Reviewed-on: https://chromium-review.googlesource.com/c/1425708
Reviewed-by: Jun Mukai <mukai@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Marek Haranczyk <mharanczyk@opera.com>
Cr-Commit-Position: refs/heads/master@{#625144}
diff --git a/chrome/browser/notifications/notification_channels_provider_android.cc b/chrome/browser/notifications/notification_channels_provider_android.cc
index 7fe5af4..8ef20f7e 100644
--- a/chrome/browser/notifications/notification_channels_provider_android.cc
+++ b/chrome/browser/notifications/notification_channels_provider_android.cc
@@ -351,6 +351,7 @@
       NOTREACHED();
       break;
   }
+  delete value;
   return true;
 }
 
diff --git a/components/content_settings/core/browser/content_settings_ephemeral_provider.cc b/components/content_settings/core/browser/content_settings_ephemeral_provider.cc
index b6c889f..a577a8a 100644
--- a/components/content_settings/core/browser/content_settings_ephemeral_provider.cc
+++ b/components/content_settings/core/browser/content_settings_ephemeral_provider.cc
@@ -68,11 +68,11 @@
     return false;
   }
 
-  if (in_value) {
+  std::unique_ptr<base::Value> value(in_value);
+  if (value) {
     content_settings_rules_.SetValue(
         primary_pattern, secondary_pattern, content_type, resource_identifier,
-        store_last_modified_ ? clock_->Now() : base::Time(),
-        std::move(*in_value));
+        store_last_modified_ ? clock_->Now() : base::Time(), std::move(*value));
     NotifyObservers(primary_pattern, secondary_pattern, content_type,
                     resource_identifier);
   } else {
diff --git a/components/content_settings/core/test/content_settings_mock_provider.cc b/components/content_settings/core/test/content_settings_mock_provider.cc
index 2dadbbc..66f1da53 100644
--- a/components/content_settings/core/test/content_settings_mock_provider.cc
+++ b/components/content_settings/core/test/content_settings_mock_provider.cc
@@ -25,9 +25,10 @@
     const ContentSettingsPattern& embedding_url_pattern,
     ContentSettingsType content_type,
     const ResourceIdentifier& resource_identifier,
-    base::Value* value) {
+    base::Value* in_value) {
   if (read_only_)
     return false;
+  std::unique_ptr<base::Value> value(in_value);
   if (value) {
     value_map_.SetValue(requesting_url_pattern, embedding_url_pattern,
                         content_type, resource_identifier, base::Time(),