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(),