1 // Copyright (c) 2012 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 // Handles the visible notification (or balloons). 6 7 #ifndef CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_ 8 #define CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_ 9 10 #include <deque> 11 #include <string> 12 13 #include "base/basictypes.h" 14 15 class Balloon; 16 class GURL; 17 class Notification; 18 class Profile; 19 20 // This class provides support for implementing a BalloonCollection 21 // including the parts common between Chrome UI and ChromeOS UI. 22 class BalloonCollectionBase { 23 public: 24 BalloonCollectionBase(); 25 virtual ~BalloonCollectionBase(); 26 27 typedef std::deque<Balloon*> Balloons; 28 29 // Adds a balloon to the collection. Takes ownership of pointer. 30 virtual void Add(Balloon* balloon, bool add_to_front); 31 32 // Removes a balloon from the collection (if present). Frees 33 // the pointer after removal. 34 virtual void Remove(Balloon* balloon); 35 36 // Returns true if any balloon matches the given notification id. 37 virtual const Notification* FindById(const std::string& id) const; 38 39 // Finds any balloon matching the given notification id, and 40 // calls CloseByScript on it. Returns true if anything was 41 // found. 42 virtual bool CloseById(const std::string& id); 43 44 // Finds all balloons matching the given notification source, 45 // and calls CloseByScript on them. Returns true if anything 46 // was found. 47 virtual bool CloseAllBySourceOrigin(const GURL& source_origin); 48 49 // Finds all balloons matching the given profile and calls CloseByScript 50 // on them. Returns true if anything was found. 51 virtual bool CloseAllByProfile(Profile* profile); 52 53 // Calls CloseByScript on all balloons. 54 virtual void CloseAll(); 55 56 const Balloons& balloons() const { return balloons_; } 57 58 // Returns the balloon matching the given notification id, or 59 // NULL if there is no matching balloon. 60 Balloon* FindBalloonById(const std::string& notification_id); 61 62 // Returns the balloon matching the given notification, or 63 // NULL if there is no matching balloon. 64 Balloon* FindBalloon(const Notification& notification); 65 66 // The number of balloons being displayed. 67 int count() const { return static_cast<int>(balloons_.size()); } 68 69 private: 70 // Queue of active balloons. Pointers are owned by this class. 71 Balloons balloons_; 72 73 DISALLOW_COPY_AND_ASSIGN(BalloonCollectionBase); 74 }; 75 76 #endif // CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_BASE_H_ 77