blob: 19e6c242d0ba1d99fff69808727fa782338d515e [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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
3// found in the LICENSE file.
4
5#include "chrome/browser/notifications/notification_ui_manager.h"
6
Ben Murdochbb1529c2013-08-08 10:24:53 +01007#include "base/memory/scoped_ptr.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00008#include "chrome/browser/browser_process.h"
Torne (Richard Coles)a93a17c2013-05-15 11:34:50 +01009#include "chrome/browser/notifications/balloon_notification_ui_manager.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000010#include "chrome/browser/notifications/message_center_notification_manager.h"
Ben Murdochbb1529c2013-08-08 10:24:53 +010011#include "chrome/browser/notifications/message_center_settings_controller.h"
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010012#include "chrome/browser/profiles/profile.h"
Ben Murdochbb1529c2013-08-08 10:24:53 +010013#include "chrome/browser/profiles/profile_info_cache.h"
14#include "chrome/browser/profiles/profile_manager.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000015#include "ui/message_center/message_center_util.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000016
17// static
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000018bool NotificationUIManager::DelegatesToMessageCenter() {
19 // In ChromeOS, it always uses MessageCenterNotificationManager. The flag of
20 // --enable-rich-notifications switches the contents and behaviors inside of
21 // the message center.
22#if defined(OS_CHROMEOS)
23 return true;
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000024#endif
Torne (Richard Coles)a93a17c2013-05-15 11:34:50 +010025 return message_center::IsRichNotificationEnabled();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000026}
27
28#if !defined(OS_MACOSX)
29// static
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000030NotificationUIManager* NotificationUIManager::Create(PrefService* local_state) {
Ben Murdochbb1529c2013-08-08 10:24:53 +010031 if (DelegatesToMessageCenter()) {
32 ProfileInfoCache* profile_info_cache =
33 &g_browser_process->profile_manager()->GetProfileInfoCache();
34 scoped_ptr<message_center::NotifierSettingsProvider> settings_provider(
35 new MessageCenterSettingsController(profile_info_cache));
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000036 return new MessageCenterNotificationManager(
Ben Murdochbb1529c2013-08-08 10:24:53 +010037 g_browser_process->message_center(),
38 local_state,
39 settings_provider.Pass());
40 }
Torne (Richard Coles)a93a17c2013-05-15 11:34:50 +010041
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000042 BalloonNotificationUIManager* balloon_manager =
43 new BalloonNotificationUIManager(local_state);
44 balloon_manager->SetBalloonCollection(BalloonCollection::Create());
45 return balloon_manager;
Torne (Richard Coles)58218062012-11-14 11:43:16 +000046}
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000047#endif