Index: chrome/browser/extensions/api/messaging/message_service.cc |
diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc |
index 621055f95de72a203fc919d661975f8e46231243..5b4c3829bff7839f33c2214405d12a301177a635 100644 |
--- a/chrome/browser/extensions/api/messaging/message_service.cc |
+++ b/chrome/browser/extensions/api/messaging/message_service.cc |
@@ -14,8 +14,8 @@ |
#include "base/json/json_writer.h" |
#include "base/lazy_instance.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/metrics/histogram_macros.h" |
-#include "base/stl_util.h" |
#include "build/build_config.h" |
#include "chrome/browser/extensions/api/messaging/extension_message_port.h" |
#include "chrome/browser/extensions/api/messaging/incognito_connectability.h" |
@@ -233,8 +233,6 @@ MessageService::MessageService(BrowserContext* context) |
MessageService::~MessageService() { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- base::STLDeleteContainerPairSecondPointers(channels_.begin(), |
- channels_.end()); |
channels_.clear(); |
} |
@@ -478,7 +476,7 @@ void MessageService::OpenChannelToNativeApp( |
// Keep the opener alive until the channel is closed. |
channel->opener->IncrementLazyKeepaliveCount(); |
- AddChannel(channel.release(), receiver_port_id); |
+ AddChannel(std::move(channel), receiver_port_id); |
#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) |
const char kNativeMessagingNotSupportedError[] = |
"Native Messaging is not supported on this platform."; |
@@ -589,10 +587,12 @@ void MessageService::OpenChannelImpl(BrowserContext* browser_context, |
return; |
} |
- MessageChannel* channel(new MessageChannel()); |
+ std::unique_ptr<MessageChannel> channel_ptr = |
+ base::MakeUnique<MessageChannel>(); |
+ MessageChannel* channel = channel_ptr.get(); |
Devlin
2016/09/16 20:23:19
optional nit: maybe rename to "raw_channel"?
Avi (use Gerrit)
2016/09/16 20:41:45
I'll pass.
That's used for the rest of the functi
|
channel->opener.reset(opener.release()); |
channel->receiver.reset(params->receiver.release()); |
- AddChannel(channel, params->receiver_port_id); |
+ AddChannel(std::move(channel_ptr), params->receiver_port_id); |
// TODO(robwu): Could |guest_process_id| and |guest_render_frame_routing_id| |
// be removed? In the past extension message routing was process-based, but |
@@ -653,12 +653,13 @@ void MessageService::OpenChannelImpl(BrowserContext* browser_context, |
channel->receiver->IncrementLazyKeepaliveCount(); |
} |
-void MessageService::AddChannel(MessageChannel* channel, int receiver_port_id) { |
+void MessageService::AddChannel(std::unique_ptr<MessageChannel> channel, |
+ int receiver_port_id) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
int channel_id = GET_CHANNEL_ID(receiver_port_id); |
CHECK(channels_.find(channel_id) == channels_.end()); |
- channels_[channel_id] = channel; |
+ channels_[channel_id] = std::move(channel); |
pending_lazy_background_page_channels_.erase(channel_id); |
} |
@@ -727,7 +728,7 @@ void MessageService::CloseChannelImpl( |
bool notify_other_port) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- MessageChannel* channel = channel_iter->second; |
+ std::unique_ptr<MessageChannel> channel = std::move(channel_iter->second); |
// Remove from map to make sure that it is impossible for CloseChannelImpl to |
// run twice for the same channel. |
channels_.erase(channel_iter); |
@@ -742,8 +743,6 @@ void MessageService::CloseChannelImpl( |
// Balance the IncrementLazyKeepaliveCount() in OpenChannelImpl. |
channel->opener->DecrementLazyKeepaliveCount(); |
channel->receiver->DecrementLazyKeepaliveCount(); |
- |
- delete channel; |
} |
void MessageService::PostMessage(int source_port_id, const Message& message) { |
@@ -758,7 +757,7 @@ void MessageService::PostMessage(int source_port_id, const Message& message) { |
return; |
} |
- DispatchMessage(source_port_id, iter->second, message); |
+ DispatchMessage(source_port_id, iter->second.get(), message); |
} |
void MessageService::EnqueuePendingMessage(int source_port_id, |
@@ -1019,7 +1018,8 @@ void MessageService::DispatchPendingMessages(const PendingMessagesQueue& queue, |
MessageChannelMap::iterator channel_iter = channels_.find(channel_id); |
if (channel_iter != channels_.end()) { |
for (const PendingMessage& message : queue) { |
- DispatchMessage(message.first, channel_iter->second, message.second); |
+ DispatchMessage(message.first, channel_iter->second.get(), |
+ message.second); |
} |
} |
} |