summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-25 00:27:35 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-25 00:27:35 +0000
commit0bab85619ab754150ec1a30f7dcc5f82ec72f687 (patch)
treebe83c3c199134b9d4fd86a87b4f1d5f8d251e3d8
parent3815009dde505d9a7372bef2465ccb37cb640520 (diff)
downloadchromium_src-0bab85619ab754150ec1a30f7dcc5f82ec72f687.zip
chromium_src-0bab85619ab754150ec1a30f7dcc5f82ec72f687.tar.gz
chromium_src-0bab85619ab754150ec1a30f7dcc5f82ec72f687.tar.bz2
Revert 279550 "Allow notification updates on ChromeOS."
Causing failure on: http://build.chromium.org/p/chromium.memory/builders/Linux%20ASan%20LSan%20Tests%20%282%29/builds/4135 > Allow notification updates on ChromeOS. > > This fixes a regression with multi-profile mode where updated > notifications don't properly have the profile_id set. > > r=mukai@chromium.org > BUG=386814 > > Review URL: https://codereview.chromium.org/331863009 TBR=dewittj@chromium.org Review URL: https://codereview.chromium.org/354783002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279558 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/notifications/message_center_notification_manager.cc16
-rw-r--r--chrome/browser/notifications/message_center_notifications_unittest_win.cc (renamed from chrome/browser/notifications/message_center_notifications_unittest.cc)119
-rw-r--r--chrome/chrome_tests_unit.gypi2
3 files changed, 38 insertions, 99 deletions
diff --git a/chrome/browser/notifications/message_center_notification_manager.cc b/chrome/browser/notifications/message_center_notification_manager.cc
index b26157c..f400bfd 100644
--- a/chrome/browser/notifications/message_center_notification_manager.cc
+++ b/chrome/browser/notifications/message_center_notification_manager.cc
@@ -112,9 +112,6 @@ void MessageCenterNotificationManager::Add(const Notification& notification,
DesktopNotificationServiceFactory::GetForProfile(profile)->
ShowWelcomeNotificationIfNecessary(notification);
- // WARNING: You MUST use AddProfileNotification or update the message center
- // via the notification within a ProfileNotification object or the profile ID
- // will not be correctly set for ChromeOS.
AddProfileNotification(
new ProfileNotification(profile, notification, message_center_));
}
@@ -141,6 +138,7 @@ bool MessageCenterNotificationManager::Update(const Notification& notification,
// the immediate update allowed in the message center.
std::string old_id =
old_notification->notification().delegate_id();
+ DCHECK(message_center_->FindVisibleNotificationById(old_id));
// Add/remove notification in the local list but just update the same
// one in MessageCenter.
@@ -150,13 +148,11 @@ bool MessageCenterNotificationManager::Update(const Notification& notification,
new ProfileNotification(profile, notification, message_center_);
profile_notifications_[notification.delegate_id()] = new_notification;
- // WARNING: You MUST use AddProfileNotification or update the message
- // center via the notification within a ProfileNotification object or the
- // profile ID will not be correctly set for ChromeOS.
- message_center_->UpdateNotification(
- old_id,
- make_scoped_ptr(new message_center::Notification(
- new_notification->notification())));
+ // Now pass a copy to message center.
+ scoped_ptr<message_center::Notification> message_center_notification(
+ make_scoped_ptr(new message_center::Notification(notification)));
+ message_center_->UpdateNotification(old_id,
+ message_center_notification.Pass());
new_notification->StartDownloads();
return true;
diff --git a/chrome/browser/notifications/message_center_notifications_unittest.cc b/chrome/browser/notifications/message_center_notifications_unittest_win.cc
index 6006576..acb0a44 100644
--- a/chrome/browser/notifications/message_center_notifications_unittest.cc
+++ b/chrome/browser/notifications/message_center_notifications_unittest_win.cc
@@ -1,22 +1,19 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/memory/scoped_ptr.h"
#include "base/prefs/testing_pref_service.h"
#include "base/run_loop.h"
-#include "base/strings/utf_string_conversions.h"
#include "base/test/test_timeouts.h"
#include "base/values.h"
#include "chrome/browser/notifications/message_center_notification_manager.h"
#include "chrome/browser/notifications/notification.h"
#include "chrome/browser/notifications/notification_test_util.h"
#include "chrome/common/pref_names.h"
-#include "chrome/test/base/browser_with_test_window_test.h"
#include "chrome/test/base/scoped_testing_local_state.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
-#include "chrome/test/base/testing_profile_manager.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/message_center/fake_message_center_tray_delegate.h"
@@ -26,66 +23,45 @@
#include "ui/message_center/message_center_types.h"
#include "ui/message_center/notifier_settings.h"
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h"
-#include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
-#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
-#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
-#endif
-
namespace message_center {
-class MessageCenterNotificationManagerTest : public BrowserWithTestWindowTest {
- public:
- MessageCenterNotificationManagerTest() {}
-
+class MessageCenterNotificationManagerTest : public testing::Test {
protected:
- virtual void SetUp() {
- BrowserWithTestWindowTest::SetUp();
-#if !defined(OS_CHROMEOS)
- MessageCenter::Initialize();
-#endif
-
+ MessageCenterNotificationManagerTest() {
+ MessageCenterNotificationManager::RegisterPrefs(local_state_.registry());
+ }
+ virtual void SetUp() {
// Clear the preference and initialize.
- TestingBrowserProcess* browser_process = TestingBrowserProcess::GetGlobal();
- profile_manager_.reset(new TestingProfileManager(browser_process));
- ASSERT_TRUE(profile_manager_->SetUp());
- local_state()->ClearPref(prefs::kMessageCenterShowedFirstRunBalloon);
- first_run_pref_.reset(new BooleanPrefMember);
- first_run_pref_->Init(prefs::kMessageCenterShowedFirstRunBalloon,
- local_state());
+ local_state_.ClearPref(prefs::kMessageCenterShowedFirstRunBalloon);
+ first_run_pref_.Init(prefs::kMessageCenterShowedFirstRunBalloon,
+ &local_state_);
// Get ourselves a run loop.
run_loop_.reset(new base::RunLoop());
+ // Initialize message center infrastructure with mock tray delegate.
+ MessageCenter::Initialize();
message_center_ = MessageCenter::Get();
scoped_ptr<NotifierSettingsProvider> settings_provider(
new FakeNotifierSettingsProvider(notifiers_));
+ notification_manager_.reset(new MessageCenterNotificationManager(
+ message_center_, &local_state_, settings_provider.Pass()));
delegate_ = new FakeMessageCenterTrayDelegate(message_center_,
run_loop_->QuitClosure());
- notification_manager()->SetMessageCenterTrayDelegateForTest(delegate_);
-#if defined(OS_WIN)
- notification_manager()->SetFirstRunTimeoutForTest(
+ notification_manager_->SetMessageCenterTrayDelegateForTest(delegate_);
+ notification_manager_->SetFirstRunTimeoutForTest(
TestTimeouts::tiny_timeout());
-#endif
}
virtual void TearDown() {
run_loop_.reset();
- first_run_pref_.reset();
- profile_manager_.reset();
-
-#if !defined(OS_CHROMEOS)
+ notification_manager_.reset();
MessageCenter::Shutdown();
-#endif
-
- BrowserWithTestWindowTest::TearDown();
}
MessageCenterNotificationManager* notification_manager() {
- return (MessageCenterNotificationManager*)
- g_browser_process->notification_ui_manager();
+ return notification_manager_.get();
}
FakeMessageCenterTrayDelegate* delegate() { return delegate_; }
@@ -93,30 +69,29 @@ class MessageCenterNotificationManagerTest : public BrowserWithTestWindowTest {
MessageCenter* message_center() { return message_center_; }
const ::Notification GetANotification(const std::string& id) {
- return ::Notification(
- GURL("chrome-extension://adflkjsdflkdsfdsflkjdsflkdjfs"),
- GURL(),
- base::string16(),
- base::string16(),
- blink::WebTextDirectionDefault,
- base::string16(),
- base::UTF8ToUTF16(id),
- new MockNotificationDelegate(id));
+ return ::Notification(GURL(),
+ GURL(),
+ base::string16(),
+ base::string16(),
+ blink::WebTextDirectionDefault,
+ base::string16(),
+ base::string16(),
+ new MockNotificationDelegate(id));
}
base::RunLoop* run_loop() { return run_loop_.get(); }
- PrefService* local_state() {
- return TestingBrowserProcess::GetGlobal()->local_state();
- }
- bool DidFirstRunPref() { return first_run_pref_->GetValue(); }
+ const TestingPrefServiceSimple& local_state() { return local_state_; }
+ bool DidFirstRunPref() { return first_run_pref_.GetValue(); }
private:
- scoped_ptr<TestingProfileManager> profile_manager_;
scoped_ptr<base::RunLoop> run_loop_;
+ TestingPrefServiceSimple local_state_;
MessageCenter* message_center_;
std::vector<Notifier*> notifiers_;
+ scoped_ptr<MessageCenterNotificationManager> notification_manager_;
FakeMessageCenterTrayDelegate* delegate_;
- scoped_ptr<BooleanPrefMember> first_run_pref_;
+ content::TestBrowserThreadBundle thread_bundle_;
+ BooleanPrefMember first_run_pref_;
};
TEST_F(MessageCenterNotificationManagerTest, SetupNotificationManager) {
@@ -125,36 +100,6 @@ TEST_F(MessageCenterNotificationManagerTest, SetupNotificationManager) {
EXPECT_FALSE(DidFirstRunPref());
}
-TEST_F(MessageCenterNotificationManagerTest, UpdateNotification) {
- TestingProfile profile;
- EXPECT_TRUE(message_center()->NotificationCount() == 0);
- notification_manager()->Add(GetANotification("test"), &profile);
- EXPECT_TRUE(message_center()->NotificationCount() == 1);
- ASSERT_TRUE(
- notification_manager()->Update(GetANotification("test"), &profile));
- EXPECT_TRUE(message_center()->NotificationCount() == 1);
-}
-
-#if defined(OS_CHROMEOS)
-TEST_F(MessageCenterNotificationManagerTest, MultiUserUpdates) {
- TestingProfile profile;
- std::string active_user_id = multi_user_util::GetUserIDFromProfile(&profile);
- chrome::MultiUserWindowManagerChromeOS* multi_user_window_manager =
- new chrome::MultiUserWindowManagerChromeOS(active_user_id);
- chrome::MultiUserWindowManager::SetInstanceForTest(
- multi_user_window_manager,
- chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED);
- new MultiUserNotificationBlockerChromeOS(message_center::MessageCenter::Get(),
- active_user_id);
- EXPECT_EQ(0u, message_center()->NotificationCount());
- notification_manager()->Add(GetANotification("test"), &profile);
- EXPECT_EQ(1u, message_center()->NotificationCount());
- notification_manager()->Update(GetANotification("test"), &profile);
- EXPECT_EQ(1u, message_center()->NotificationCount());
-}
-#endif
-
-#if defined(OS_WIN)
// The following tests test the first run balloon, which is only implemented for
// Windows.
TEST_F(MessageCenterNotificationManagerTest, FirstRunShown) {
@@ -192,6 +137,4 @@ TEST_F(MessageCenterNotificationManagerTest,
EXPECT_FALSE(notification_manager()->FirstRunTimerIsActive());
EXPECT_FALSE(DidFirstRunPref());
}
-
-#endif
} // namespace message_center
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 7ef21d5..76d605b5 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -1135,7 +1135,7 @@
'browser/notifications/desktop_notification_service_unittest.cc',
'browser/notifications/extension_welcome_notification_unittest.cc',
'browser/notifications/login_state_notification_blocker_chromeos_unittest.cc',
- 'browser/notifications/message_center_notifications_unittest.cc',
+ 'browser/notifications/message_center_notifications_unittest_win.cc',
'browser/notifications/message_center_settings_controller_unittest.cc',
'browser/notifications/sync_notifier/chrome_notifier_delegate_unittest.cc',
'browser/notifications/sync_notifier/chrome_notifier_service_unittest.cc',