Home | History | Annotate | Download | only in notifications
      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 
     11 namespace chromeos {
     12 
     13 BalloonViewHost::~BalloonViewHost() {
     14   STLDeleteContainerPairSecondPointers(message_callbacks_.begin(),
     15                                        message_callbacks_.end());
     16 }
     17 
     18 bool 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 
     28 void 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(&params.arguments);
     40 }
     41 
     42 }  // namespace chromeos
     43