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

Unified Diff: chrome/browser/chromeos/notifications/notification_panel.h

Issue 1164004: Add KEEP_SIZE state to notification panel and fixed misc bugs. (Closed)
Patch Set: " Created 10 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/notifications/notification_panel.h
diff --git a/chrome/browser/chromeos/notifications/notification_panel.h b/chrome/browser/chromeos/notifications/notification_panel.h
index dfbb47a9c638314fc6b7f2b7768ecd72a13ba296..a3ce5e93903601b7bb4f80b33badaed8471065f9 100644
--- a/chrome/browser/chromeos/notifications/notification_panel.h
+++ b/chrome/browser/chromeos/notifications/notification_panel.h
@@ -23,6 +23,7 @@ namespace chromeos {
class BalloonContainer;
class BalloonViewImpl;
+class NotificationPanelTester;
// NotificationPanel is a panel that displays notifications. It has
// several states and displays the different portion of notifications
@@ -36,32 +37,45 @@ class BalloonViewImpl;
// stale: one of new notifications became stale.
// expand: a user pressed minimized panel to expand.
// minimize: a user pressed the panel's title bar to minimize.
+// user: the user's mouse moved over the panel, indicates
+// that user is trying to interact with the panel.
// For state, see State enum's description below.
//
-// CLOSE<--(event=close)-+ +--(event=stale, cond=has new|sticky)
+//
+// [CLOSE]<-(event=close)-+ +--(event=stale, cond=has new|sticky)
// | | | (event=new)
-// | | V |
-// +--(event=new)--> STICKY_AND_NEW----------+
-// | | ^
-// | (event=stale, |
-// | cond=has new, no sticy) (event=new)
-// | (event=minimize) |
-// | | |
-// | V |
-// | MINIMIZED ---(event=close)--> [CLOSE]
-// | | ^
-// | | |
-// | (event=expand) (event=minmize)
-// | V |
-// +--(event=open)----> FULL --(event=stale)(event=new)
-// | | |
-// (event=close) +--------------+
+// | | V |
+// +--(event=new)-->[STICKY_AND_NEW]----- +--------(event=user)
+// | ^ | |
+// | | (event=stale, V
+// | | cond=has new, no sticy) +[ KEEP_SIZE ]<-+
+// | (event=new) (event=minimize) | | |
+// | | | | | |
+// | | | (event=minimize)(event=close)|
+// | | +---------------+ | |
+// | | V V |
+// | [ MINIMIZED ]---(event=close)--> [CLOSE] |
+// | | ^ |
+// | | | |
+// | (event=expand) (event=minmize) (event=user)
+// | V | |
+// +--(event=open)---->[ FULL ]-------------+-------------------+
+// | ^ |
+// (event=close) +-------(event=stale)(event=new)
// |
// [CLOSE] <------+
//
class NotificationPanel : public PanelController::Delegate,
public BalloonCollectionImpl::NotificationUI {
public:
+ enum State {
+ FULL, // Show all notifications
+ KEEP_SIZE, // Don't change the size.
+ STICKY_AND_NEW, // Show only new and sticky notifications.
+ MINIMIZED, // The panel is minimized.
+ CLOSED, // The panel is closed.
+ };
+
NotificationPanel();
virtual ~NotificationPanel();
@@ -84,24 +98,12 @@ class NotificationPanel : public PanelController::Delegate,
// Called when a mouse left the panel window.
void OnMouseLeave();
+ void OnMouseMotion();
- // Tells that the panel should not update the size or state
- // when a notification becomes stale.
- void DontUpdatePanelOnStale();
-
- // Returns number of of sticky notifications.
- int GetStickyNotificationCount() const;
-
- // Returns number of new notifications.
- int GetNewNotificationCount() const;
+ NotificationPanelTester* GetTester();
private:
- enum State {
- FULL, // Show all notifications
- STICKY_AND_NEW, // Show only new and sticky notifications.
- MINIMIZED, // The panel is minimized.
- CLOSED, // The panel is closed.
- };
+ friend class NotificationPanelTester;
void Init();
@@ -120,9 +122,7 @@ class NotificationPanel : public PanelController::Delegate,
// A callback function that is called when the notification
// (that the view is associated with) becomes stale after a timeout.
- // |token| is a unique id assigned to a callback task and is
- // used to cancel the task.
- void OnStale(BalloonViewImpl* view, int token);
+ void OnStale(BalloonViewImpl* view);
BalloonContainer* balloon_container_;
scoped_ptr<views::Widget> panel_widget_;
@@ -130,18 +130,37 @@ class NotificationPanel : public PanelController::Delegate,
scoped_ptr<views::ScrollView> scroll_view_;
State state_;
ScopedRunnableMethodFactory<NotificationPanel> task_factory_;
- bool update_panel_on_mouse_leave_;
+ gfx::Rect min_bounds_;
- // Task token is an integer value assigned to each task, and
- // used to cancel the tasks.
- // The latest task token.
- int latest_token_;
- // A task whose token is smaller than this value is stale and skipped.
- int stale_token_;
+ scoped_ptr<NotificationPanelTester> tester_;
DISALLOW_COPY_AND_ASSIGN(NotificationPanel);
};
+class NotificationPanelTester {
+ public:
+ explicit NotificationPanelTester(NotificationPanel* panel)
+ : panel_(panel) {
+ }
+
+ NotificationPanel::State state() {
+ return panel_->state_;
+ }
+
+ // Returns number of of sticky and new notifications.
+ int GetNotificationCount() const;
+
+ // Returns number of new notifications.
+ int GetNewNotificationCount() const;
+
+ // Returns number of of sticky notifications.
+ int GetStickyNotificationCount() const;
+
+ private:
+ NotificationPanel* panel_;
+ DISALLOW_COPY_AND_ASSIGN(NotificationPanelTester);
+};
+
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_NOTIFICATION_PANEL_H_

Powered by Google App Engine
This is Rietveld 408576698