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

Unified Diff: ash/common/system/tray/system_tray.cc

Issue 2583393002: Send notification to users upon receiving sms messages (Closed)
Patch Set: update return type Created 3 years, 10 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
« no previous file with comments | « ash/common/system/tray/system_tray.h ('k') | ash/common/system/tray/system_tray_bubble.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/tray/system_tray.cc
diff --git a/ash/common/system/tray/system_tray.cc b/ash/common/system/tray/system_tray.cc
index fae5c963e3f98c78e69bf913cda44aaf9c45f85c..82eab0abd14a61d4494025e200181727544570bd 100644
--- a/ash/common/system/tray/system_tray.cc
+++ b/ash/common/system/tray/system_tray.cc
@@ -21,7 +21,6 @@
#include "ash/common/system/chromeos/enterprise/tray_enterprise.h"
#include "ash/common/system/chromeos/media_security/multi_profile_media_tray_item.h"
#include "ash/common/system/chromeos/network/tray_network.h"
-#include "ash/common/system/chromeos/network/tray_sms.h"
#include "ash/common/system/chromeos/network/tray_vpn.h"
#include "ash/common/system/chromeos/power/power_status.h"
#include "ash/common/system/chromeos/power/tray_power.h"
@@ -207,7 +206,6 @@ SystemTray::SystemTray(WmShelf* wm_shelf)
web_notification_tray_(nullptr),
detailed_item_(nullptr),
default_bubble_height_(0),
- hide_notifications_(false),
full_system_tray_menu_(false),
tray_accessibility_(nullptr),
tray_audio_(nullptr),
@@ -236,7 +234,6 @@ SystemTray::~SystemTray() {
activation_observer_.reset();
key_event_watcher_.reset();
system_bubble_.reset();
- notification_bubble_.reset();
for (const auto& item : items_)
item->DestroyTrayView();
}
@@ -292,7 +289,6 @@ void SystemTray::CreateItems(SystemTrayDelegate* delegate) {
tray_network_ = new TrayNetwork(this);
AddTrayItem(base::WrapUnique(tray_network_));
AddTrayItem(base::MakeUnique<TrayVPN>(this));
- AddTrayItem(base::MakeUnique<TraySms>(this));
AddTrayItem(base::MakeUnique<TrayBluetooth>(this));
tray_cast_ = new TrayCast(this);
AddTrayItem(base::WrapUnique(tray_cast_));
@@ -396,31 +392,10 @@ void SystemTray::HideDetailedView(SystemTrayItem* item, bool animate) {
}
DestroySystemBubble();
- UpdateNotificationBubble();
-}
-
-void SystemTray::ShowNotificationView(SystemTrayItem* item) {
- if (std::find(notification_items_.begin(), notification_items_.end(), item) !=
- notification_items_.end())
- return;
- notification_items_.push_back(item);
- UpdateNotificationBubble();
-}
-
-void SystemTray::HideNotificationView(SystemTrayItem* item) {
- auto found_iter =
- std::find(notification_items_.begin(), notification_items_.end(), item);
- if (found_iter == notification_items_.end())
- return;
- notification_items_.erase(found_iter);
- // Only update the notification bubble if visible (i.e. don't create one).
- if (notification_bubble_)
- UpdateNotificationBubble();
}
void SystemTray::UpdateAfterLoginStatusChange(LoginStatus login_status) {
DestroySystemBubble();
- UpdateNotificationBubble();
for (const auto& item : items_)
item->UpdateAfterLoginStatusChange(login_status);
@@ -439,12 +414,6 @@ void SystemTray::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
item->UpdateAfterShelfAlignmentChange(alignment);
}
-void SystemTray::SetHideNotifications(bool hide_notifications) {
- if (notification_bubble_)
- notification_bubble_->bubble()->SetVisible(!hide_notifications);
- hide_notifications_ = hide_notifications;
-}
-
bool SystemTray::ShouldShowShelf() const {
return system_bubble_.get() && system_bubble_->bubble()->ShouldShowShelf();
}
@@ -453,27 +422,14 @@ bool SystemTray::HasSystemBubble() const {
return system_bubble_.get() != NULL;
}
-bool SystemTray::HasNotificationBubble() const {
- return notification_bubble_.get() != NULL;
-}
-
SystemTrayBubble* SystemTray::GetSystemBubble() {
if (!system_bubble_)
return NULL;
return system_bubble_->bubble();
}
-bool SystemTray::IsAnyBubbleVisible() const {
- return ((system_bubble_.get() && system_bubble_->bubble()->IsVisible()) ||
- (notification_bubble_.get() &&
- notification_bubble_->bubble()->IsVisible()));
-}
-
-bool SystemTray::IsMouseInNotificationBubble() const {
- if (!notification_bubble_)
- return false;
- return notification_bubble_->bubble_view()->GetBoundsInScreen().Contains(
- display::Screen::GetScreen()->GetCursorScreenPoint());
+bool SystemTray::IsSystemBubbleVisible() const {
+ return HasSystemBubble() && system_bubble_->bubble()->IsVisible();
}
bool SystemTray::CloseSystemBubble() const {
@@ -497,7 +453,6 @@ TrayAudio* SystemTray::GetTrayAudio() const {
// Private methods.
bool SystemTray::HasSystemBubbleType(SystemTrayBubble::BubbleType type) {
- DCHECK(type != SystemTrayBubble::BUBBLE_TYPE_NOTIFICATION);
return system_bubble_.get() && system_bubble_->bubble_type() == type;
}
@@ -507,13 +462,6 @@ void SystemTray::DestroySystemBubble() {
UpdateWebNotifications();
}
-void SystemTray::DestroyNotificationBubble() {
- if (notification_bubble_) {
- notification_bubble_.reset();
- UpdateWebNotifications();
- }
-}
-
base::string16 SystemTray::GetAccessibleNameForTray() {
base::string16 time = GetAccessibleTimeString(base::Time::Now());
base::string16 battery = PowerStatus::Get()->GetAccessibleNameString(false);
@@ -540,9 +488,6 @@ void SystemTray::ShowItems(const std::vector<SystemTrayItem*>& items,
detailed ? SystemTrayBubble::BUBBLE_TYPE_DETAILED
: SystemTrayBubble::BUBBLE_TYPE_DEFAULT;
- // Destroy the notification bubble here so that it doesn't get rebuilt
- // while we add items to the main bubble_ (e.g. in HideNotificationView).
- notification_bubble_.reset();
if (system_bubble_.get() && creation_type == BUBBLE_USE_EXISTING) {
system_bubble_->bubble()->UpdateView(items, bubble_type);
// If ChromeVox is enabled, focus the default item if no item is focused.
@@ -610,9 +555,7 @@ void SystemTray::ShowItems(const std::vector<SystemTrayItem*>& items,
else
detailed_item_ = NULL;
- UpdateNotificationBubble(); // State changed, re-create notifications.
- if (!notification_bubble_)
- UpdateWebNotifications();
+ UpdateWebNotifications();
shelf()->UpdateAutoHideState();
// When we show the system menu in our alternate shelf layout, we need to
@@ -621,56 +564,9 @@ void SystemTray::ShowItems(const std::vector<SystemTrayItem*>& items,
SetIsActive(true);
}
-// TODO(estade): there's only one thing that triggers a notification bubble,
-// and that's TraySms. We could delete a lot of code in SystemTray if that
-// used the message center notifications instead. See crbug.com/630641
-void SystemTray::UpdateNotificationBubble() {
- // Only show the notification bubble if we have notifications.
- if (notification_items_.empty()) {
- DestroyNotificationBubble();
- return;
- }
- // Destroy the existing bubble before constructing a new one.
- notification_bubble_.reset();
- SystemTrayBubble* notification_bubble;
- notification_bubble = new SystemTrayBubble(
- this, notification_items_, SystemTrayBubble::BUBBLE_TYPE_NOTIFICATION);
- // Tray items might want to show notifications while we are creating and
- // initializing the |system_bubble_| - but it might not be fully initialized
- // when coming here - this would produce a crashed like crbug.com/247416.
- // As such we check the existence of the widget here.
- TrayBubbleView::InitParams init_params(
- GetAnchorAlignment(), kTrayPopupMinWidth, kTrayPopupMaxWidth);
- views::View* anchor = GetBubbleAnchor();
- gfx::Insets anchor_insets = GetBubbleAnchorInsets();
- // If there's already a system menu bubble, stack this one on top.
- if (system_bubble_.get() && system_bubble_->bubble_view() &&
- system_bubble_->bubble_view()->GetWidget()) {
- anchor = system_bubble_->bubble_view();
- anchor_insets.Set(-message_center::kMarginBetweenItems, 0, 0, 0);
- init_params.anchor_alignment = TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM;
- }
- init_params.bg_color = kBackgroundColor;
- notification_bubble_.reset(new SystemBubbleWrapper(notification_bubble));
- notification_bubble_->InitView(this, anchor, anchor_insets, &init_params,
- false);
-
- if (notification_bubble->bubble_view()->child_count() == 0) {
- // It is possible that none of the items generated actual notifications.
- DestroyNotificationBubble();
- return;
- }
- if (hide_notifications_)
- notification_bubble->SetVisible(false);
- else
- UpdateWebNotifications();
-}
-
void SystemTray::UpdateWebNotifications() {
TrayBubbleView* bubble_view = NULL;
- if (notification_bubble_)
- bubble_view = notification_bubble_->bubble_view();
- else if (system_bubble_)
+ if (system_bubble_)
bubble_view = system_bubble_->bubble_view();
int height = 0;
@@ -702,22 +598,10 @@ void SystemTray::SetShelfAlignment(ShelfAlignment alignment) {
// Destroy any existing bubble so that it is rebuilt correctly.
CloseSystemBubbleAndDeactivateSystemTray();
// Rebuild any notification bubble.
- if (notification_bubble_) {
- notification_bubble_.reset();
- UpdateNotificationBubble();
- // UpdateWebNotifications() should be called in UpdateNotificationBubble().
- } else if (!hide_notifications_) {
- UpdateWebNotifications();
- }
+ UpdateWebNotifications();
}
void SystemTray::AnchorUpdated() {
- if (notification_bubble_) {
- notification_bubble_->bubble_view()->UpdateBubble();
- // Ensure that the notification buble is above the shelf/status area.
- notification_bubble_->bubble_view()->GetWidget()->StackAtTop();
- UpdateBubbleViewArrow(notification_bubble_->bubble_view());
- }
if (system_bubble_) {
system_bubble_->bubble_view()->UpdateBubble();
UpdateBubbleViewArrow(system_bubble_->bubble_view());
@@ -731,11 +615,7 @@ void SystemTray::BubbleResized(const TrayBubbleView* bubble_view) {
void SystemTray::HideBubbleWithView(const TrayBubbleView* bubble_view) {
if (system_bubble_.get() && bubble_view == system_bubble_->bubble_view()) {
DestroySystemBubble();
- UpdateNotificationBubble(); // State changed, re-create notifications.
shelf()->UpdateAutoHideState();
- } else if (notification_bubble_.get() &&
- bubble_view == notification_bubble_->bubble_view()) {
- DestroyNotificationBubble();
}
}
« no previous file with comments | « ash/common/system/tray/system_tray.h ('k') | ash/common/system/tray/system_tray_bubble.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698