// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Handles the visible notification (or balloons). #ifndef CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_ #define CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_ #pragma once #include <deque> #include <string> #include "base/basictypes.h" class Balloon; class GURL; class Notification; // This class provides support for implementing a BalloonCollection // including the parts common between Chrome UI and ChromeOS UI. class BalloonCollectionBase { public: BalloonCollectionBase(); virtual ~BalloonCollectionBase(); typedef std::deque<Balloon*> Balloons; // Adds a balloon to the collection. Takes ownership of pointer. virtual void Add(Balloon* balloon); // Removes a balloon from the collection (if present). Frees // the pointer after removal. virtual void Remove(Balloon* balloon); // Finds any balloon matching the given notification id, and // calls CloseByScript on it. Returns true if anything was // found. virtual bool CloseById(const std::string& id); // Finds all balloons matching the given notification source, // and calls CloseByScript on them. Returns true if anything // was found. virtual bool CloseAllBySourceOrigin(const GURL& source_origin); // Calls CloseByScript on all balloons. virtual void CloseAll(); const Balloons& balloons() const { return balloons_; } // Returns the balloon matching the given notification, or // NULL if there is no matching balloon. Balloon* FindBalloon(const Notification& notification); // The number of balloons being displayed. int count() const { return static_cast<int>(balloons_.size()); } private: // Queue of active balloons. Pointers are owned by this class. Balloons balloons_; DISALLOW_COPY_AND_ASSIGN(BalloonCollectionBase); }; #endif // CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_