OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #import "ui/message_center/cocoa/popup_collection.h" | 5 #import "ui/message_center/cocoa/popup_collection.h" |
6 | 6 |
7 #include "base/memory/scoped_nsobject.h" | 7 #include "base/memory/scoped_nsobject.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 } | 47 } |
48 | 48 |
49 void AddThreeNotifications() { | 49 void AddThreeNotifications() { |
50 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 50 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
51 "1", | 51 "1", |
52 ASCIIToUTF16("One"), | 52 ASCIIToUTF16("One"), |
53 ASCIIToUTF16("This is the first notification to" | 53 ASCIIToUTF16("This is the first notification to" |
54 " be displayed"), | 54 " be displayed"), |
55 string16(), | 55 string16(), |
56 std::string(), | 56 std::string(), |
| 57 NULL, |
57 NULL); | 58 NULL); |
58 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 59 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
59 "2", | 60 "2", |
60 ASCIIToUTF16("Two"), | 61 ASCIIToUTF16("Two"), |
61 ASCIIToUTF16("This is the second notification."), | 62 ASCIIToUTF16("This is the second notification."), |
62 string16(), | 63 string16(), |
63 std::string(), | 64 std::string(), |
| 65 NULL, |
64 NULL); | 66 NULL); |
65 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 67 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
66 "3", | 68 "3", |
67 ASCIIToUTF16("Three"), | 69 ASCIIToUTF16("Three"), |
68 ASCIIToUTF16("This is the third notification " | 70 ASCIIToUTF16("This is the third notification " |
69 "that has a much longer body " | 71 "that has a much longer body " |
70 "than the other notifications. It " | 72 "than the other notifications. It " |
71 "may not fit on the screen if we " | 73 "may not fit on the screen if we " |
72 "set the screen size too small."), | 74 "set the screen size too small."), |
73 string16(), | 75 string16(), |
74 std::string(), | 76 std::string(), |
| 77 NULL, |
75 NULL); | 78 NULL); |
76 | 79 |
77 WaitForAnimationEnded(); | 80 WaitForAnimationEnded(); |
78 } | 81 } |
79 | 82 |
80 bool CheckSpacingBetween(MCPopupController* upper, MCPopupController* lower) { | 83 bool CheckSpacingBetween(MCPopupController* upper, MCPopupController* lower) { |
81 CGFloat minY = NSMinY([[upper window] frame]); | 84 CGFloat minY = NSMinY([[upper window] frame]); |
82 CGFloat maxY = NSMaxY([[lower window] frame]); | 85 CGFloat maxY = NSMaxY([[lower window] frame]); |
83 CGFloat delta = minY - maxY; | 86 CGFloat delta = minY - maxY; |
84 EXPECT_EQ(message_center::kMarginBetweenItems, delta); | 87 EXPECT_EQ(message_center::kMarginBetweenItems, delta); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 EXPECT_EQ(0u, [[collection_ popups] count]); | 123 EXPECT_EQ(0u, [[collection_ popups] count]); |
121 AddThreeNotifications(); | 124 AddThreeNotifications(); |
122 EXPECT_EQ(2u, [[collection_ popups] count]); // "3" does not fit on screen. | 125 EXPECT_EQ(2u, [[collection_ popups] count]); // "3" does not fit on screen. |
123 | 126 |
124 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 127 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
125 "4", | 128 "4", |
126 ASCIIToUTF16("Four"), | 129 ASCIIToUTF16("Four"), |
127 ASCIIToUTF16("This is the fourth notification."), | 130 ASCIIToUTF16("This is the fourth notification."), |
128 string16(), | 131 string16(), |
129 std::string(), | 132 std::string(), |
| 133 NULL, |
130 NULL); | 134 NULL); |
131 WaitForAnimationEnded(); | 135 WaitForAnimationEnded(); |
132 | 136 |
133 // Remove "1" and "3" should fit on screen. | 137 // Remove "1" and "3" should fit on screen. |
134 center_->RemoveNotification("1", true); | 138 center_->RemoveNotification("1", true); |
135 WaitForAnimationEnded(); | 139 WaitForAnimationEnded(); |
136 ASSERT_EQ(2u, [[collection_ popups] count]); | 140 ASSERT_EQ(2u, [[collection_ popups] count]); |
137 | 141 |
138 EXPECT_EQ("2", [[[collection_ popups] objectAtIndex:0] notificationID]); | 142 EXPECT_EQ("2", [[[collection_ popups] objectAtIndex:0] notificationID]); |
139 EXPECT_EQ("3", [[[collection_ popups] objectAtIndex:1] notificationID]); | 143 EXPECT_EQ("3", [[[collection_ popups] objectAtIndex:1] notificationID]); |
(...skipping 25 matching lines...) Expand all Loading... |
165 // Set priority so that kMaxVisiblePopupNotifications does not hide it. | 169 // Set priority so that kMaxVisiblePopupNotifications does not hide it. |
166 scoped_ptr<base::DictionaryValue> optional(new base::DictionaryValue); | 170 scoped_ptr<base::DictionaryValue> optional(new base::DictionaryValue); |
167 optional->SetInteger(message_center::kPriorityKey, | 171 optional->SetInteger(message_center::kPriorityKey, |
168 message_center::HIGH_PRIORITY); | 172 message_center::HIGH_PRIORITY); |
169 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 173 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
170 "4", | 174 "4", |
171 ASCIIToUTF16("Four"), | 175 ASCIIToUTF16("Four"), |
172 ASCIIToUTF16("This is the fourth notification."), | 176 ASCIIToUTF16("This is the fourth notification."), |
173 string16(), | 177 string16(), |
174 std::string(), | 178 std::string(), |
175 optional.get()); | 179 optional.get(), |
| 180 NULL); |
176 WaitForAnimationEnded(); | 181 WaitForAnimationEnded(); |
177 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:2], | 182 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:2], |
178 [popups objectAtIndex:3])); | 183 [popups objectAtIndex:3])); |
179 | 184 |
180 // Remove "2". | 185 // Remove "2". |
181 center_->RemoveNotification("2", true); | 186 center_->RemoveNotification("2", true); |
182 WaitForAnimationEnded(); | 187 WaitForAnimationEnded(); |
183 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:0], | 188 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:0], |
184 [popups objectAtIndex:1])); | 189 [popups objectAtIndex:1])); |
185 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:1], | 190 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:1], |
(...skipping 12 matching lines...) Expand all Loading... |
198 [collection_ setScreenFrame:NSMakeRect(0, 0, 800, 100)]; | 203 [collection_ setScreenFrame:NSMakeRect(0, 0, 800, 100)]; |
199 | 204 |
200 EXPECT_EQ(0u, [[collection_ popups] count]); | 205 EXPECT_EQ(0u, [[collection_ popups] count]); |
201 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 206 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
202 "1", | 207 "1", |
203 ASCIIToUTF16("One"), | 208 ASCIIToUTF16("One"), |
204 ASCIIToUTF16("This is the first notification to" | 209 ASCIIToUTF16("This is the first notification to" |
205 " be displayed"), | 210 " be displayed"), |
206 string16(), | 211 string16(), |
207 std::string(), | 212 std::string(), |
| 213 NULL, |
208 NULL); | 214 NULL); |
209 WaitForAnimationEnded(); | 215 WaitForAnimationEnded(); |
210 EXPECT_EQ(1u, [[collection_ popups] count]); | 216 EXPECT_EQ(1u, [[collection_ popups] count]); |
211 | 217 |
212 // Now give the notification a longer message so that it no longer fits. | 218 // Now give the notification a longer message so that it no longer fits. |
213 center_->UpdateNotification("1", | 219 center_->UpdateNotification("1", |
214 "1", | 220 "1", |
215 ASCIIToUTF16("One"), | 221 ASCIIToUTF16("One"), |
216 ASCIIToUTF16("This is now a very very very very " | 222 ASCIIToUTF16("This is now a very very very very " |
217 "very very very very very very very " | 223 "very very very very very very very " |
218 "very very very very very very very " | 224 "very very very very very very very " |
219 "very very very very very very very " | 225 "very very very very very very very " |
220 "very very very very very very very " | 226 "very very very very very very very " |
221 "very very very very very very very " | 227 "very very very very very very very " |
222 "very very very very very very very " | 228 "very very very very very very very " |
223 "long notification."), | 229 "long notification."), |
| 230 NULL, |
224 NULL); | 231 NULL); |
225 WaitForAnimationEnded(); | 232 WaitForAnimationEnded(); |
226 EXPECT_EQ(0u, [[collection_ popups] count]); | 233 EXPECT_EQ(0u, [[collection_ popups] count]); |
227 } | 234 } |
228 | 235 |
229 TEST_F(PopupCollectionTest, UpdateIconAndBody) { | 236 TEST_F(PopupCollectionTest, UpdateIconAndBody) { |
230 AddThreeNotifications(); | 237 AddThreeNotifications(); |
231 NSArray* popups = [collection_ popups]; | 238 NSArray* popups = [collection_ popups]; |
232 | 239 |
233 EXPECT_EQ(3u, [popups count]); | 240 EXPECT_EQ(3u, [popups count]); |
(...skipping 19 matching lines...) Expand all Loading... |
253 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 260 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, |
254 "1", | 261 "1", |
255 ASCIIToUTF16("One is going to get a much longer " | 262 ASCIIToUTF16("One is going to get a much longer " |
256 "title than it previously had."), | 263 "title than it previously had."), |
257 ASCIIToUTF16("This is the first notification to " | 264 ASCIIToUTF16("This is the first notification to " |
258 "be displayed, but it will also be " | 265 "be displayed, but it will also be " |
259 "updated to have a significantly " | 266 "updated to have a significantly " |
260 "longer body"), | 267 "longer body"), |
261 string16(), | 268 string16(), |
262 std::string(), | 269 std::string(), |
| 270 NULL, |
263 NULL); | 271 NULL); |
264 WaitForAnimationEnded(); | 272 WaitForAnimationEnded(); |
265 EXPECT_GT(NSHeight([[controller view] frame]), NSHeight(old_frame)); | 273 EXPECT_GT(NSHeight([[controller view] frame]), NSHeight(old_frame)); |
266 | 274 |
267 // Test updated spacing. | 275 // Test updated spacing. |
268 EXPECT_EQ(3u, [popups count]); | 276 EXPECT_EQ(3u, [popups count]); |
269 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:0], | 277 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:0], |
270 [popups objectAtIndex:1])); | 278 [popups objectAtIndex:1])); |
271 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:1], | 279 EXPECT_TRUE(CheckSpacingBetween([popups objectAtIndex:1], |
272 [popups objectAtIndex:2])); | 280 [popups objectAtIndex:2])); |
273 EXPECT_EQ("1", [[popups objectAtIndex:0] notificationID]); | 281 EXPECT_EQ("1", [[popups objectAtIndex:0] notificationID]); |
274 EXPECT_EQ("2", [[popups objectAtIndex:1] notificationID]); | 282 EXPECT_EQ("2", [[popups objectAtIndex:1] notificationID]); |
275 EXPECT_EQ("3", [[popups objectAtIndex:2] notificationID]); | 283 EXPECT_EQ("3", [[popups objectAtIndex:2] notificationID]); |
276 } | 284 } |
OLD | NEW |