| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/common/notification_observer.h" | 5 #include "content/common/notification_observer.h" | 
| 6 #include "content/common/notification_registrar.h" | 6 #include "content/common/notification_registrar.h" | 
| 7 #include "content/common/notification_service.h" | 7 #include "content/common/notification_service.h" | 
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" | 
| 9 | 9 | 
| 10 namespace { | 10 namespace { | 
| 11 | 11 | 
| 12 // Bogus class to act as a NotificationSource for the messages. | 12 // Bogus class to act as a NotificationSource for the messages. | 
| 13 class TestSource {}; | 13 class TestSource {}; | 
| 14 | 14 | 
| 15 class TestObserver : public NotificationObserver { | 15 class TestObserver : public NotificationObserver { | 
| 16 public: | 16 public: | 
| 17   TestObserver() : notification_count_(0) {} | 17   TestObserver() : notification_count_(0) {} | 
| 18 | 18 | 
| 19   int notification_count() { return notification_count_; } | 19   int notification_count() { return notification_count_; } | 
| 20 | 20 | 
| 21   void Observe(NotificationType type, | 21   void Observe(int type, | 
| 22                const NotificationSource& source, | 22                const NotificationSource& source, | 
| 23                const NotificationDetails& details) { | 23                const NotificationDetails& details) { | 
| 24     ++notification_count_; | 24     ++notification_count_; | 
| 25   } | 25   } | 
| 26 | 26 | 
| 27 private: | 27 private: | 
| 28   int notification_count_; | 28   int notification_count_; | 
| 29 }; | 29 }; | 
| 30 | 30 | 
| 31 }  // namespace | 31 }  // namespace | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 46   EXPECT_TRUE( | 46   EXPECT_TRUE( | 
| 47     Source<TestSource>(&test_source) != Source<TestSource>(&other_source)); | 47     Source<TestSource>(&test_source) != Source<TestSource>(&other_source)); | 
| 48 | 48 | 
| 49   TestObserver all_types_all_sources; | 49   TestObserver all_types_all_sources; | 
| 50   TestObserver idle_all_sources; | 50   TestObserver idle_all_sources; | 
| 51   TestObserver all_types_test_source; | 51   TestObserver all_types_test_source; | 
| 52   TestObserver idle_test_source; | 52   TestObserver idle_test_source; | 
| 53 | 53 | 
| 54   // Make sure it doesn't freak out when there are no observers. | 54   // Make sure it doesn't freak out when there are no observers. | 
| 55   NotificationService* service = NotificationService::current(); | 55   NotificationService* service = NotificationService::current(); | 
| 56   service->Notify(NotificationType::IDLE, | 56   service->Notify(content::NOTIFICATION_IDLE, | 
| 57                   Source<TestSource>(&test_source), | 57                   Source<TestSource>(&test_source), | 
| 58                   NotificationService::NoDetails()); | 58                   NotificationService::NoDetails()); | 
| 59 | 59 | 
| 60   registrar_.Add(&all_types_all_sources, NotificationType::ALL, | 60   registrar_.Add(&all_types_all_sources, content::NOTIFICATION_ALL, | 
| 61                  NotificationService::AllSources()); | 61                  NotificationService::AllSources()); | 
| 62   registrar_.Add(&idle_all_sources, NotificationType::IDLE, | 62   registrar_.Add(&idle_all_sources, content::NOTIFICATION_IDLE, | 
| 63                  NotificationService::AllSources()); | 63                  NotificationService::AllSources()); | 
| 64   registrar_.Add(&all_types_test_source, NotificationType::ALL, | 64   registrar_.Add(&all_types_test_source, content::NOTIFICATION_ALL, | 
| 65                  Source<TestSource>(&test_source)); | 65                  Source<TestSource>(&test_source)); | 
| 66   registrar_.Add(&idle_test_source, NotificationType::IDLE, | 66   registrar_.Add(&idle_test_source, content::NOTIFICATION_IDLE, | 
| 67                  Source<TestSource>(&test_source)); | 67                  Source<TestSource>(&test_source)); | 
| 68 | 68 | 
| 69   EXPECT_EQ(0, all_types_all_sources.notification_count()); | 69   EXPECT_EQ(0, all_types_all_sources.notification_count()); | 
| 70   EXPECT_EQ(0, idle_all_sources.notification_count()); | 70   EXPECT_EQ(0, idle_all_sources.notification_count()); | 
| 71   EXPECT_EQ(0, all_types_test_source.notification_count()); | 71   EXPECT_EQ(0, all_types_test_source.notification_count()); | 
| 72   EXPECT_EQ(0, idle_test_source.notification_count()); | 72   EXPECT_EQ(0, idle_test_source.notification_count()); | 
| 73 | 73 | 
| 74   service->Notify(NotificationType::IDLE, | 74   service->Notify(content::NOTIFICATION_IDLE, | 
| 75                   Source<TestSource>(&test_source), | 75                   Source<TestSource>(&test_source), | 
| 76                   NotificationService::NoDetails()); | 76                   NotificationService::NoDetails()); | 
| 77 | 77 | 
| 78   EXPECT_EQ(1, all_types_all_sources.notification_count()); | 78   EXPECT_EQ(1, all_types_all_sources.notification_count()); | 
| 79   EXPECT_EQ(1, idle_all_sources.notification_count()); | 79   EXPECT_EQ(1, idle_all_sources.notification_count()); | 
| 80   EXPECT_EQ(1, all_types_test_source.notification_count()); | 80   EXPECT_EQ(1, all_types_test_source.notification_count()); | 
| 81   EXPECT_EQ(1, idle_test_source.notification_count()); | 81   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 82 | 82 | 
| 83   service->Notify(NotificationType::BUSY, | 83   service->Notify(content::NOTIFICATION_BUSY, | 
| 84                   Source<TestSource>(&test_source), | 84                   Source<TestSource>(&test_source), | 
| 85                   NotificationService::NoDetails()); | 85                   NotificationService::NoDetails()); | 
| 86 | 86 | 
| 87   EXPECT_EQ(2, all_types_all_sources.notification_count()); | 87   EXPECT_EQ(2, all_types_all_sources.notification_count()); | 
| 88   EXPECT_EQ(1, idle_all_sources.notification_count()); | 88   EXPECT_EQ(1, idle_all_sources.notification_count()); | 
| 89   EXPECT_EQ(2, all_types_test_source.notification_count()); | 89   EXPECT_EQ(2, all_types_test_source.notification_count()); | 
| 90   EXPECT_EQ(1, idle_test_source.notification_count()); | 90   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 91 | 91 | 
| 92   service->Notify(NotificationType::IDLE, | 92   service->Notify(content::NOTIFICATION_IDLE, | 
| 93                   Source<TestSource>(&other_source), | 93                   Source<TestSource>(&other_source), | 
| 94                   NotificationService::NoDetails()); | 94                   NotificationService::NoDetails()); | 
| 95 | 95 | 
| 96   EXPECT_EQ(3, all_types_all_sources.notification_count()); | 96   EXPECT_EQ(3, all_types_all_sources.notification_count()); | 
| 97   EXPECT_EQ(2, idle_all_sources.notification_count()); | 97   EXPECT_EQ(2, idle_all_sources.notification_count()); | 
| 98   EXPECT_EQ(2, all_types_test_source.notification_count()); | 98   EXPECT_EQ(2, all_types_test_source.notification_count()); | 
| 99   EXPECT_EQ(1, idle_test_source.notification_count()); | 99   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 100 | 100 | 
| 101   service->Notify(NotificationType::BUSY, | 101   service->Notify(content::NOTIFICATION_BUSY, | 
| 102                   Source<TestSource>(&other_source), | 102                   Source<TestSource>(&other_source), | 
| 103                   NotificationService::NoDetails()); | 103                   NotificationService::NoDetails()); | 
| 104 | 104 | 
| 105   EXPECT_EQ(4, all_types_all_sources.notification_count()); | 105   EXPECT_EQ(4, all_types_all_sources.notification_count()); | 
| 106   EXPECT_EQ(2, idle_all_sources.notification_count()); | 106   EXPECT_EQ(2, idle_all_sources.notification_count()); | 
| 107   EXPECT_EQ(2, all_types_test_source.notification_count()); | 107   EXPECT_EQ(2, all_types_test_source.notification_count()); | 
| 108   EXPECT_EQ(1, idle_test_source.notification_count()); | 108   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 109 | 109 | 
| 110   // Try send with NULL source. | 110   // Try send with NULL source. | 
| 111   service->Notify(NotificationType::IDLE, | 111   service->Notify(content::NOTIFICATION_IDLE, | 
| 112                   NotificationService::AllSources(), | 112                   NotificationService::AllSources(), | 
| 113                   NotificationService::NoDetails()); | 113                   NotificationService::NoDetails()); | 
| 114 | 114 | 
| 115   EXPECT_EQ(5, all_types_all_sources.notification_count()); | 115   EXPECT_EQ(5, all_types_all_sources.notification_count()); | 
| 116   EXPECT_EQ(3, idle_all_sources.notification_count()); | 116   EXPECT_EQ(3, idle_all_sources.notification_count()); | 
| 117   EXPECT_EQ(2, all_types_test_source.notification_count()); | 117   EXPECT_EQ(2, all_types_test_source.notification_count()); | 
| 118   EXPECT_EQ(1, idle_test_source.notification_count()); | 118   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 119 | 119 | 
| 120   registrar_.RemoveAll(); | 120   registrar_.RemoveAll(); | 
| 121 | 121 | 
| 122   service->Notify(NotificationType::IDLE, | 122   service->Notify(content::NOTIFICATION_IDLE, | 
| 123                   Source<TestSource>(&test_source), | 123                   Source<TestSource>(&test_source), | 
| 124                   NotificationService::NoDetails()); | 124                   NotificationService::NoDetails()); | 
| 125 | 125 | 
| 126   EXPECT_EQ(5, all_types_all_sources.notification_count()); | 126   EXPECT_EQ(5, all_types_all_sources.notification_count()); | 
| 127   EXPECT_EQ(3, idle_all_sources.notification_count()); | 127   EXPECT_EQ(3, idle_all_sources.notification_count()); | 
| 128   EXPECT_EQ(2, all_types_test_source.notification_count()); | 128   EXPECT_EQ(2, all_types_test_source.notification_count()); | 
| 129   EXPECT_EQ(1, idle_test_source.notification_count()); | 129   EXPECT_EQ(1, idle_test_source.notification_count()); | 
| 130 } | 130 } | 
| 131 | 131 | 
| 132 TEST_F(NotificationServiceTest, MultipleRegistration) { | 132 TEST_F(NotificationServiceTest, MultipleRegistration) { | 
| 133   TestSource test_source; | 133   TestSource test_source; | 
| 134 | 134 | 
| 135   TestObserver idle_test_source; | 135   TestObserver idle_test_source; | 
| 136 | 136 | 
| 137   NotificationService* service = NotificationService::current(); | 137   NotificationService* service = NotificationService::current(); | 
| 138 | 138 | 
| 139   registrar_.Add(&idle_test_source, NotificationType::IDLE, | 139   registrar_.Add(&idle_test_source, content::NOTIFICATION_IDLE, | 
| 140                  Source<TestSource>(&test_source)); | 140                  Source<TestSource>(&test_source)); | 
| 141   registrar_.Add(&idle_test_source, NotificationType::ALL, | 141   registrar_.Add(&idle_test_source, content::NOTIFICATION_ALL, | 
| 142                  Source<TestSource>(&test_source)); | 142                  Source<TestSource>(&test_source)); | 
| 143 | 143 | 
| 144   service->Notify(NotificationType::IDLE, | 144   service->Notify(content::NOTIFICATION_IDLE, | 
| 145                   Source<TestSource>(&test_source), | 145                   Source<TestSource>(&test_source), | 
| 146                   NotificationService::NoDetails()); | 146                   NotificationService::NoDetails()); | 
| 147   EXPECT_EQ(2, idle_test_source.notification_count()); | 147   EXPECT_EQ(2, idle_test_source.notification_count()); | 
| 148 | 148 | 
| 149   registrar_.Remove(&idle_test_source, NotificationType::IDLE, | 149   registrar_.Remove(&idle_test_source, content::NOTIFICATION_IDLE, | 
| 150                     Source<TestSource>(&test_source)); | 150                     Source<TestSource>(&test_source)); | 
| 151 | 151 | 
| 152   service->Notify(NotificationType::IDLE, | 152   service->Notify(content::NOTIFICATION_IDLE, | 
| 153                  Source<TestSource>(&test_source), | 153                  Source<TestSource>(&test_source), | 
| 154                  NotificationService::NoDetails()); | 154                  NotificationService::NoDetails()); | 
| 155   EXPECT_EQ(3, idle_test_source.notification_count()); | 155   EXPECT_EQ(3, idle_test_source.notification_count()); | 
| 156 | 156 | 
| 157   registrar_.Remove(&idle_test_source, NotificationType::ALL, | 157   registrar_.Remove(&idle_test_source, content::NOTIFICATION_ALL, | 
| 158                     Source<TestSource>(&test_source)); | 158                     Source<TestSource>(&test_source)); | 
| 159 | 159 | 
| 160   service->Notify(NotificationType::IDLE, | 160   service->Notify(content::NOTIFICATION_IDLE, | 
| 161                   Source<TestSource>(&test_source), | 161                   Source<TestSource>(&test_source), | 
| 162                   NotificationService::NoDetails()); | 162                   NotificationService::NoDetails()); | 
| 163   EXPECT_EQ(3, idle_test_source.notification_count()); | 163   EXPECT_EQ(3, idle_test_source.notification_count()); | 
| 164 } | 164 } | 
| OLD | NEW | 
|---|