Home | History | Annotate | Download | only in notifications
      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