1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/notifications/balloon_view_host.h" 6 7#include "base/stl_util-inl.h" 8#include "base/values.h" 9#include "chrome/common/extensions/extension_messages.h" 10 11namespace chromeos { 12 13BalloonViewHost::~BalloonViewHost() { 14 STLDeleteContainerPairSecondPointers(message_callbacks_.begin(), 15 message_callbacks_.end()); 16} 17 18bool BalloonViewHost::AddWebUIMessageCallback( 19 const std::string& message, 20 MessageCallback* callback) { 21 std::pair<MessageCallbackMap::iterator, bool> ret; 22 ret = message_callbacks_.insert(std::make_pair(message, callback)); 23 if (!ret.second) 24 delete callback; 25 return ret.second; 26} 27 28void BalloonViewHost::ProcessWebUIMessage( 29 const ExtensionHostMsg_DomMessage_Params& params) { 30 ::BalloonViewHost::ProcessWebUIMessage(params); 31 32 // Look up the callback for this message. 33 MessageCallbackMap::const_iterator callback = 34 message_callbacks_.find(params.name); 35 if (callback == message_callbacks_.end()) 36 return; 37 38 // Run callback. 39 callback->second->Run(¶ms.arguments); 40} 41 42} // namespace chromeos 43