Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Side by Side Diff: chrome/browser/notifications/balloon_collection_impl.h

Issue 231213003: notification balloons: Remove views and cocoa implementations of BalloonCollection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Handles the visible notification (or balloons). 5 // Handles the visible notification (or balloons).
6 6
7 #ifndef CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_ 7 #ifndef CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_
8 #define CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_ 8 #define CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_
9 9
10 #include <deque> 10 #include <deque>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
15 #include "base/message_loop/message_loop.h" 15 #include "base/message_loop/message_loop.h"
16 #include "chrome/browser/notifications/balloon_collection.h" 16 #include "chrome/browser/notifications/balloon_collection.h"
17 #include "chrome/browser/notifications/balloon_collection_base.h" 17 #include "chrome/browser/notifications/balloon_collection_base.h"
18 #include "content/public/browser/notification_observer.h" 18 #include "content/public/browser/notification_observer.h"
19 #include "content/public/browser/notification_registrar.h" 19 #include "content/public/browser/notification_registrar.h"
20 #include "ui/gfx/point.h" 20 #include "ui/gfx/point.h"
21 #include "ui/gfx/rect.h" 21 #include "ui/gfx/rect.h"
22 22
23 // Mac balloons grow from the top down and have close buttons on top, so
24 // offsetting is not necessary for easy multiple-closing. Other platforms grow
25 // from the bottom up and have close buttons on top, so it is necessary.
26 #if defined(OS_MACOSX)
27 #define USE_OFFSETS 0
28 #else
29 #define USE_OFFSETS 1
30 #endif
31
32 // A balloon collection represents a set of notification balloons being 23 // A balloon collection represents a set of notification balloons being
33 // shown on the screen. It positions new notifications according to 24 // shown on the screen. It positions new notifications according to
34 // a layout, and monitors for balloons being closed, which it reports 25 // a layout, and monitors for balloons being closed, which it reports
35 // up to its parent, the notification UI manager. 26 // up to its parent, the notification UI manager.
36 class BalloonCollectionImpl : public BalloonCollection, 27 class BalloonCollectionImpl : public BalloonCollection,
37 public content::NotificationObserver 28 public content::NotificationObserver,
38 #if USE_OFFSETS 29 public base::MessageLoopForUI::Observer {
39 , public base::MessageLoopForUI::Observer
40 #endif
41 {
42 public: 30 public:
43 BalloonCollectionImpl(); 31 BalloonCollectionImpl();
44 virtual ~BalloonCollectionImpl(); 32 virtual ~BalloonCollectionImpl();
45 33
46 // BalloonCollection interface. 34 // BalloonCollection interface.
47 virtual void Add(const Notification& notification, 35 virtual void Add(const Notification& notification,
48 Profile* profile) OVERRIDE; 36 Profile* profile) OVERRIDE;
49 virtual const Notification* FindById(const std::string& id) const OVERRIDE; 37 virtual const Notification* FindById(const std::string& id) const OVERRIDE;
50 virtual bool RemoveById(const std::string& id) OVERRIDE; 38 virtual bool RemoveById(const std::string& id) OVERRIDE;
51 virtual bool RemoveBySourceOrigin(const GURL& source_origin) OVERRIDE; 39 virtual bool RemoveBySourceOrigin(const GURL& source_origin) OVERRIDE;
52 virtual bool RemoveByProfile(Profile* profile) OVERRIDE; 40 virtual bool RemoveByProfile(Profile* profile) OVERRIDE;
53 virtual void RemoveAll() OVERRIDE; 41 virtual void RemoveAll() OVERRIDE;
54 virtual bool HasSpace() const OVERRIDE; 42 virtual bool HasSpace() const OVERRIDE;
55 virtual void ResizeBalloon(Balloon* balloon, const gfx::Size& size) OVERRIDE; 43 virtual void ResizeBalloon(Balloon* balloon, const gfx::Size& size) OVERRIDE;
56 virtual void SetPositionPreference(PositionPreference position) OVERRIDE; 44 virtual void SetPositionPreference(PositionPreference position) OVERRIDE;
57 virtual void DisplayChanged() OVERRIDE; 45 virtual void DisplayChanged() OVERRIDE;
58 virtual void OnBalloonClosed(Balloon* source) OVERRIDE; 46 virtual void OnBalloonClosed(Balloon* source) OVERRIDE;
59 virtual const Balloons& GetActiveBalloons() OVERRIDE; 47 virtual const Balloons& GetActiveBalloons() OVERRIDE;
60 48
61 // content::NotificationObserver interface. 49 // content::NotificationObserver interface.
62 virtual void Observe(int type, 50 virtual void Observe(int type,
63 const content::NotificationSource& source, 51 const content::NotificationSource& source,
64 const content::NotificationDetails& details) OVERRIDE; 52 const content::NotificationDetails& details) OVERRIDE;
65 53
66 // MessageLoopForUI::Observer interface. 54 // MessageLoopForUI::Observer interface.
67 #if defined(OS_WIN) || defined(USE_AURA)
68 virtual void WillProcessEvent(const base::NativeEvent& event) OVERRIDE;
69 virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE;
70 #elif defined(TOOLKIT_GTK)
71 virtual void WillProcessEvent(GdkEvent* event) OVERRIDE; 55 virtual void WillProcessEvent(GdkEvent* event) OVERRIDE;
72 virtual void DidProcessEvent(GdkEvent* event) OVERRIDE; 56 virtual void DidProcessEvent(GdkEvent* event) OVERRIDE;
73 #endif
74 57
75 // base_ is embedded, so this is a simple accessor for the number of 58 // base_ is embedded, so this is a simple accessor for the number of
76 // balloons in the collection. 59 // balloons in the collection.
77 int count() const { return base_.count(); } 60 int count() const { return base_.count(); }
78 61
79 static int min_balloon_width() { return Layout::min_balloon_width(); } 62 static int min_balloon_width() { return Layout::min_balloon_width(); }
80 static int max_balloon_width() { return Layout::max_balloon_width(); } 63 static int max_balloon_width() { return Layout::max_balloon_width(); }
81 static int min_balloon_height() { return Layout::min_balloon_height(); } 64 static int min_balloon_height() { return Layout::min_balloon_height(); }
82 static int max_balloon_height() { return Layout::max_balloon_height(); } 65 static int max_balloon_height() { return Layout::max_balloon_height(); }
83 66
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 Layout& layout() { return layout_; } 183 Layout& layout() { return layout_; }
201 184
202 private: 185 private:
203 // Adjusts the positions of the balloons (e.g., when one is closed). 186 // Adjusts the positions of the balloons (e.g., when one is closed).
204 // Implemented by each platform for specific UI requirements. 187 // Implemented by each platform for specific UI requirements.
205 void PositionBalloons(bool is_reposition); 188 void PositionBalloons(bool is_reposition);
206 189
207 // Cross-platform internal implementation for PositionBalloons. 190 // Cross-platform internal implementation for PositionBalloons.
208 void PositionBalloonsInternal(bool is_reposition); 191 void PositionBalloonsInternal(bool is_reposition);
209 192
210 #if defined(OS_MACOSX)
211 // Get the work area on Mac OS, without inverting the coordinates.
212 static gfx::Rect GetMacWorkArea();
213 #endif
214
215 // Base implementation for the collection of active balloons. 193 // Base implementation for the collection of active balloons.
216 BalloonCollectionBase base_; 194 BalloonCollectionBase base_;
217 195
218 // The layout parameters for balloons in this collection. 196 // The layout parameters for balloons in this collection.
219 Layout layout_; 197 Layout layout_;
220 198
221 content::NotificationRegistrar registrar_; 199 content::NotificationRegistrar registrar_;
222 200
223 #if USE_OFFSETS
224 // Start and stop observing all UI events. 201 // Start and stop observing all UI events.
225 void AddMessageLoopObserver(); 202 void AddMessageLoopObserver();
226 void RemoveMessageLoopObserver(); 203 void RemoveMessageLoopObserver();
227 204
228 // Cancel all offset and reposition the balloons normally. 205 // Cancel all offset and reposition the balloons normally.
229 void CancelOffsets(); 206 void CancelOffsets();
230 207
231 // Handles a mouse motion while the balloons are temporarily offset. 208 // Handles a mouse motion while the balloons are temporarily offset.
232 void HandleMouseMoveEvent(); 209 void HandleMouseMoveEvent();
233 210
234 // Is the current cursor in the balloon area? 211 // Is the current cursor in the balloon area?
235 bool IsCursorInBalloonCollection() const; 212 bool IsCursorInBalloonCollection() const;
236 213
237 // Factory for generating delayed reposition tasks on mouse motion. 214 // Factory for generating delayed reposition tasks on mouse motion.
238 base::WeakPtrFactory<BalloonCollectionImpl> reposition_factory_; 215 base::WeakPtrFactory<BalloonCollectionImpl> reposition_factory_;
239 216
240 // Is the balloon collection currently listening for UI events? 217 // Is the balloon collection currently listening for UI events?
241 bool added_as_message_loop_observer_; 218 bool added_as_message_loop_observer_;
242 #endif
243 219
244 DISALLOW_COPY_AND_ASSIGN(BalloonCollectionImpl); 220 DISALLOW_COPY_AND_ASSIGN(BalloonCollectionImpl);
245 }; 221 };
246 222
247 #endif // CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_ 223 #endif // CHROME_BROWSER_NOTIFICATIONS_BALLOON_COLLECTION_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698