Index: extensions/browser/api/vpn_provider/vpn_service.cc |
diff --git a/extensions/browser/api/vpn_provider/vpn_service.cc b/extensions/browser/api/vpn_provider/vpn_service.cc |
index 36d85d7820051757ef8a3dbebfb7910e9313d597..b8fffefc9151b7a466930c9bc74b181e2af4701e 100644 |
--- a/extensions/browser/api/vpn_provider/vpn_service.cc |
+++ b/extensions/browser/api/vpn_provider/vpn_service.cc |
@@ -16,7 +16,6 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/single_thread_task_runner.h" |
-#include "base/stl_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
#include "base/threading/thread_task_runner_handle.h" |
@@ -243,8 +242,6 @@ VpnService::~VpnService() { |
network_configuration_handler_->RemoveObserver(this); |
network_state_handler_->RemoveObserver(this, FROM_HERE); |
extension_registry_->RemoveObserver(this); |
- base::STLDeleteContainerPairSecondPointers(key_to_configuration_map_.begin(), |
- key_to_configuration_map_.end()); |
} |
void VpnService::SendShowAddDialogToExtension(const std::string& extension_id) { |
@@ -448,7 +445,7 @@ void VpnService::DestroyConfiguration(const std::string& extension_id, |
return; |
} |
- VpnConfiguration* configuration = key_to_configuration_map_[key]; |
+ VpnConfiguration* configuration = key_to_configuration_map_[key].get(); |
const std::string service_path = configuration->service_path(); |
if (service_path.empty()) { |
failure.Run(std::string(), std::string("Pending create.")); |
@@ -529,7 +526,7 @@ void VpnService::DestroyConfigurationsForExtension( |
std::vector<VpnConfiguration*> to_be_destroyed; |
for (const auto& iter : key_to_configuration_map_) { |
if (iter.second->extension_id() == extension->id()) { |
- to_be_destroyed.push_back(iter.second); |
+ to_be_destroyed.push_back(iter.second.get()); |
} |
} |
@@ -630,12 +627,13 @@ VpnService::VpnConfiguration* VpnService::CreateConfigurationInternal( |
const std::string& key) { |
VpnConfiguration* configuration = new VpnConfiguration( |
extension_id, configuration_name, key, weak_factory_.GetWeakPtr()); |
- // The object is owned by key_to_configuration_map_ henceforth. |
- key_to_configuration_map_[key] = configuration; |
+ key_to_configuration_map_[key] = base::WrapUnique(configuration); |
return configuration; |
} |
void VpnService::DestroyConfigurationInternal(VpnConfiguration* configuration) { |
+ std::unique_ptr<VpnConfiguration> configuration_ptr = |
+ std::move(key_to_configuration_map_[configuration->key()]); |
key_to_configuration_map_.erase(configuration->key()); |
if (active_configuration_ == configuration) { |
active_configuration_ = nullptr; |
@@ -645,7 +643,6 @@ void VpnService::DestroyConfigurationInternal(VpnConfiguration* configuration) { |
configuration->object_path()); |
service_path_to_configuration_map_.erase(configuration->service_path()); |
} |
- delete configuration; |
} |
bool VpnService::DoesActiveConfigurationExistAndIsAccessAuthorized( |
@@ -671,7 +668,7 @@ void VpnService::Bind( |
return; |
} |
- VpnConfiguration* configuration = key_to_configuration_map_[key]; |
+ VpnConfiguration* configuration = key_to_configuration_map_[key].get(); |
if (active_configuration_ != configuration) { |
failure.Run(std::string(), std::string("Unauthorized access. " |
"The configuration is not active.")); |