Index: ui/arc/notification/arc_notification_manager.cc |
diff --git a/ui/arc/notification/arc_notification_manager.cc b/ui/arc/notification/arc_notification_manager.cc |
index 91b8c269b2517fc2bced797f96c0d924b6744f94..baa84eab7fc2ce58a420135e9a3ef034558f5c7a 100644 |
--- a/ui/arc/notification/arc_notification_manager.cc |
+++ b/ui/arc/notification/arc_notification_manager.cc |
@@ -9,27 +9,29 @@ |
namespace arc { |
-ArcNotificationManager::ArcNotificationManager(ArcBridgeService* arc_bridge, |
- const AccountId& main_profile_id) |
- : arc_bridge_(arc_bridge), |
+ArcNotificationManager::ArcNotificationManager( |
+ ArcBridgeService* arc_bridge_service, |
+ const AccountId& main_profile_id) |
+ : arc_bridge_service_(arc_bridge_service), |
main_profile_id_(main_profile_id), |
binding_(this) { |
- // This must be initialized after ArcBridgeService. |
- DCHECK(arc_bridge_); |
- DCHECK_EQ(arc_bridge_, ArcBridgeService::Get()); |
- arc_bridge_->AddObserver(this); |
+ DCHECK(arc_bridge_service_); |
+ arc_bridge_service_->AddObserver(this); |
+ |
+ // If NotificationsInstance was ready before we AddObserver(), we won't get |
+ // OnNotificationsInstanceReady events. For such case, we have to call it |
+ // explicitly. |
+ if (arc_bridge_service_->notifications_instance()) |
+ OnNotificationsInstanceReady(); |
} |
ArcNotificationManager::~ArcNotificationManager() { |
- // This should be free'd before ArcBridgeService. |
- DCHECK(ArcBridgeService::Get()); |
- DCHECK_EQ(arc_bridge_, ArcBridgeService::Get()); |
- arc_bridge_->RemoveObserver(this); |
+ arc_bridge_service_->RemoveObserver(this); |
} |
void ArcNotificationManager::OnNotificationsInstanceReady() { |
NotificationsInstance* notifications_instance = |
- arc_bridge_->notifications_instance(); |
+ arc_bridge_service_->notifications_instance(); |
if (!notifications_instance) { |
VLOG(2) << "Request to refresh app list when bridge service is not ready."; |
return; |
@@ -75,7 +77,7 @@ void ArcNotificationManager::SendNotificationRemovedFromChrome( |
scoped_ptr<ArcNotificationItem> item(items_.take_and_erase(it)); |
- arc_bridge_->notifications_instance()->SendNotificationEventToAndroid( |
+ arc_bridge_service_->notifications_instance()->SendNotificationEventToAndroid( |
key, ARC_NOTIFICATION_EVENT_CLOSED); |
} |
@@ -87,7 +89,7 @@ void ArcNotificationManager::SendNotificationClickedOnChrome( |
return; |
} |
- arc_bridge_->notifications_instance()->SendNotificationEventToAndroid( |
+ arc_bridge_service_->notifications_instance()->SendNotificationEventToAndroid( |
key, ARC_NOTIFICATION_EVENT_BODY_CLICKED); |
} |