Chromium Code Reviews| Index: chrome/browser/extensions/extension_message_service.cc |
| diff --git a/chrome/browser/extensions/extension_message_service.cc b/chrome/browser/extensions/extension_message_service.cc |
| index 92c77a8787ade74c31613c7e90ae478ffccd1220..2957f7126035bd0ac30c5734b72a425d5e55c048 100644 |
| --- a/chrome/browser/extensions/extension_message_service.cc |
| +++ b/chrome/browser/extensions/extension_message_service.cc |
| @@ -126,6 +126,8 @@ ExtensionMessageService::ExtensionMessageService(Profile* profile) |
| } |
| ExtensionMessageService::~ExtensionMessageService() { |
| + STLDeleteContainerPairSecondPointers(channels_.begin(), channels_.end()); |
| + channels_.clear(); |
| } |
| void ExtensionMessageService::ProfileDestroyed() { |
| @@ -302,12 +304,13 @@ bool ExtensionMessageService::OpenChannelOnUIThreadImpl( |
| // http://code.google.com/p/chromium/issues/detail?id=19067 |
| CHECK(receiver.sender); |
| - linked_ptr<MessageChannel> channel(new MessageChannel); |
| + MessageChannel* channel(new MessageChannel); |
| channel->opener = MessagePort(source, MSG_ROUTING_CONTROL); |
| channel->receiver = receiver; |
| CHECK(receiver.sender); |
| + CHECK(channels_.find(GET_CHANNEL_ID(receiver_port_id)) == channels_.end()); |
| channels_[GET_CHANNEL_ID(receiver_port_id)] = channel; |
| CHECK(receiver.sender); |
|
Erik does not do reviews
2009/11/04 17:00:33
remove redundant CHECK
|
| @@ -315,9 +318,9 @@ bool ExtensionMessageService::OpenChannelOnUIThreadImpl( |
| // Include info about the opener's tab (if it was a tab). |
| std::string tab_json = "null"; |
| if (source_contents) { |
| - DictionaryValue* tab_value = |
| - ExtensionTabUtil::CreateTabValue(source_contents); |
| - base::JSONWriter::Write(tab_value, false, &tab_json); |
| + scoped_ptr<DictionaryValue> tab_value( |
| + ExtensionTabUtil::CreateTabValue(source_contents)); |
| + base::JSONWriter::Write(tab_value.get(), false, &tab_json); |
| } |
| CHECK(receiver.sender); |
| @@ -343,7 +346,7 @@ int ExtensionMessageService::OpenSpecialChannelToExtension( |
| MessagePort receiver( |
| profile_->GetExtensionProcessManager()-> |
| - GetExtensionProcess(extension_id), |
| + GetExtensionProcess(extension_id), |
| MSG_ROUTING_CONTROL); |
| receiver.debug_info = 4; |
| if (!OpenChannelOnUIThreadImpl( |
| @@ -397,6 +400,7 @@ void ExtensionMessageService::CloseChannelImpl( |
| if (notify_other_port) |
| DispatchOnDisconnect(port, GET_OPPOSITE_PORT_ID(closing_port_id)); |
| + delete channel_iter->second; |
| channels_.erase(channel_iter); |
| } |