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

Unified Diff: ash/system/web_notification/web_notification_bubble.cc

Issue 11028134: Re-factor Ash Message Center code part 2/4 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 2 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: ash/system/web_notification/web_notification_bubble.cc
diff --git a/ash/system/web_notification/web_notification_bubble.cc b/ash/system/web_notification/web_notification_bubble.cc
index 29c5a4f7ede2d6f28b070f1be36d0f28a6c4dc45..a99bc7cc941b78e9ffb4d5ba5439c795e791a1d5 100644
--- a/ash/system/web_notification/web_notification_bubble.cc
+++ b/ash/system/web_notification/web_notification_bubble.cc
@@ -4,6 +4,7 @@
#include "ash/system/web_notification/web_notification_bubble.h"
+#include "ash/system/tray/tray_bubble_wrapper.h"
#include "ash/system/tray/tray_constants.h"
#include "ash/system/web_notification/web_notification_tray.h"
#include "ash/system/web_notification/web_notification_view.h"
@@ -13,8 +14,6 @@
namespace ash {
-using internal::TrayBubbleView;
-
namespace message_center {
// Delay laying out the WebNotificationBubble until all notifications have been
@@ -24,29 +23,20 @@ const int kUpdateDelayMs = 50;
WebNotificationBubble::WebNotificationBubble(WebNotificationTray* tray)
: tray_(tray),
bubble_view_(NULL),
- bubble_widget_(NULL),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
}
void WebNotificationBubble::Initialize(views::View* contents_view) {
DCHECK(bubble_view_);
-
bubble_view_->AddChildView(contents_view);
- bubble_widget_ = views::BubbleDelegateView::CreateBubble(bubble_view_);
- bubble_widget_->AddObserver(this);
-
- InitializeAndShowBubble(bubble_widget_, bubble_view_, tray_);
+ bubble_wrapper_.reset(new internal::TrayBubbleWrapper(tray_, bubble_view_));
UpdateBubbleView();
}
WebNotificationBubble::~WebNotificationBubble() {
if (bubble_view_)
- bubble_view_->reset_host();
- if (bubble_widget_) {
- bubble_widget_->RemoveObserver(this);
- bubble_widget_->Close();
- }
+ bubble_view_->reset_delegate();
}
void WebNotificationBubble::ScheduleUpdate() {
@@ -59,7 +49,7 @@ void WebNotificationBubble::ScheduleUpdate() {
}
bool WebNotificationBubble::IsVisible() const {
- return bubble_widget_ && bubble_widget_->IsVisible();
+ return bubble_view() && bubble_view()->GetWidget()->IsVisible();
}
void WebNotificationBubble::BubbleViewDestroyed() {
@@ -72,29 +62,27 @@ void WebNotificationBubble::OnMouseEnteredView() {
void WebNotificationBubble::OnMouseExitedView() {
}
-void WebNotificationBubble::OnClickedOutsideView() {
- // May delete |this|.
- tray_->HideMessageCenterBubble();
-}
-
string16 WebNotificationBubble::GetAccessibleName() {
return tray_->GetAccessibleName();
}
-// Overridden from views::WidgetObserver:
-void WebNotificationBubble::OnWidgetClosing(views::Widget* widget) {
- CHECK_EQ(bubble_widget_, widget);
- bubble_widget_ = NULL;
- tray_->HideBubble(this); // Will destroy |this|.
+gfx::Rect WebNotificationBubble::GetAnchorRect(
+ views::Widget* anchor_widget,
+ TrayBubbleView::AnchorType anchor_type,
+ TrayBubbleView::AnchorAlignment anchor_alignment) {
+ return tray_->GetAnchorRect(anchor_widget, anchor_type, anchor_alignment);
}
TrayBubbleView::InitParams WebNotificationBubble::GetInitParams() {
+ TrayBubbleView::AnchorAlignment anchor_alignment =
+ tray_->GetAnchorAlignment();
TrayBubbleView::InitParams init_params(TrayBubbleView::ANCHOR_TYPE_TRAY,
- tray_->shelf_alignment());
+ anchor_alignment,
+ kTrayPopupWidth);
init_params.top_color = kBackgroundColor;
init_params.arrow_color = kHeaderBackgroundColorDark;
init_params.bubble_width = kWebNotificationWidth;
- if (tray_->shelf_alignment() == SHELF_ALIGNMENT_BOTTOM) {
+ if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM) {
views::View* anchor = tray_->tray_container();
gfx::Point bounds(anchor->width() / 2, 0);

Powered by Google App Engine
This is Rietveld 408576698