Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Side by Side Diff: chrome/browser/notifications/notification_browsertest.cc

Issue 231723006: Remove balloon notification code. The last user was the Linux GTK port but that's deleted now. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync after elliot's r263101 Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // 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 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 <deque> 5 #include <deque>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/chrome_notification_types.h" 17 #include "chrome/browser/chrome_notification_types.h"
18 #include "chrome/browser/infobars/confirm_infobar_delegate.h" 18 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
19 #include "chrome/browser/infobars/infobar.h" 19 #include "chrome/browser/infobars/infobar.h"
20 #include "chrome/browser/infobars/infobar_service.h" 20 #include "chrome/browser/infobars/infobar_service.h"
21 #include "chrome/browser/notifications/balloon.h"
22 #include "chrome/browser/notifications/balloon_collection.h"
23 #include "chrome/browser/notifications/balloon_host.h"
24 #include "chrome/browser/notifications/balloon_notification_ui_manager.h"
25 #include "chrome/browser/notifications/desktop_notification_service.h" 21 #include "chrome/browser/notifications/desktop_notification_service.h"
26 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 22 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
27 #include "chrome/browser/notifications/notification.h" 23 #include "chrome/browser/notifications/notification.h"
28 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
29 #include "chrome/browser/ui/browser.h" 25 #include "chrome/browser/ui/browser.h"
30 #include "chrome/browser/ui/browser_tabstrip.h" 26 #include "chrome/browser/ui/browser_tabstrip.h"
31 #include "chrome/browser/ui/browser_window.h" 27 #include "chrome/browser/ui/browser_window.h"
32 #include "chrome/browser/ui/tabs/tab_strip_model.h" 28 #include "chrome/browser/ui/tabs/tab_strip_model.h"
33 #include "chrome/common/content_settings.h" 29 #include "chrome/common/content_settings.h"
34 #include "chrome/common/content_settings_pattern.h" 30 #include "chrome/common/content_settings_pattern.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 if (message_loop_runner_.get()) 107 if (message_loop_runner_.get())
112 message_loop_runner_->Quit(); 108 message_loop_runner_->Quit();
113 } 109 }
114 110
115 bool notification_received_; 111 bool notification_received_;
116 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; 112 scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
117 113
118 DISALLOW_COPY_AND_ASSIGN(MessageCenterChangeObserver); 114 DISALLOW_COPY_AND_ASSIGN(MessageCenterChangeObserver);
119 }; 115 };
120 116
121 class NotificationBalloonChangeObserver
122 : public content::NotificationObserver,
123 public NotificationChangeObserver {
124 public:
125 NotificationBalloonChangeObserver()
126 : collection_(BalloonNotificationUIManager::GetInstanceForTesting()->
127 balloon_collection()),
128 collection_changed_(false),
129 notification_received_(false),
130 running_(false),
131 done_(false) {
132 registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED,
133 content::NotificationService::AllSources());
134 registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_DISCONNECTED,
135 content::NotificationService::AllSources());
136 collection_->set_on_collection_changed_callback(
137 base::Bind(&NotificationBalloonChangeObserver::OnCollectionChanged,
138 base::Unretained(this)));
139 }
140
141 virtual ~NotificationBalloonChangeObserver() {
142 collection_->set_on_collection_changed_callback(base::Closure());
143 }
144
145 // NotificationChangeObserver:
146 virtual bool Wait() OVERRIDE {
147 if (!Check()) {
148 running_ = true;
149 message_loop_runner_ = new content::MessageLoopRunner;
150 message_loop_runner_->Run();
151 EXPECT_TRUE(done_);
152 }
153 return done_;
154 }
155
156 bool Check() {
157 if (done_)
158 return true;
159
160 if (collection_changed_ && notification_received_) {
161 done_ = true;
162 if (running_) {
163 message_loop_runner_->Quit();
164 running_ = false;
165 }
166 }
167 return done_;
168 }
169
170 void OnCollectionChanged() {
171 collection_changed_ = true;
172 Check();
173 }
174
175 // content::NotificationObserver:
176 virtual void Observe(int type,
177 const content::NotificationSource& source,
178 const content::NotificationDetails& details) OVERRIDE {
179 DCHECK(type == chrome::NOTIFICATION_NOTIFY_BALLOON_DISCONNECTED ||
180 type == chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED);
181 notification_received_ = true;
182 Check();
183 }
184
185 private:
186 content::NotificationRegistrar registrar_;
187 BalloonCollection* collection_;
188
189 bool collection_changed_;
190 bool notification_received_;
191 bool running_;
192 bool done_;
193 scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
194
195 DISALLOW_COPY_AND_ASSIGN(NotificationBalloonChangeObserver);
196 };
197
198 } // namespace 117 } // namespace
199 118
200 class NotificationsTest : public InProcessBrowserTest { 119 class NotificationsTest : public InProcessBrowserTest {
201 public: 120 public:
202 NotificationsTest() {} 121 NotificationsTest() {}
203 122
204 protected: 123 protected:
205 int GetNotificationCount(); 124 int GetNotificationCount();
206 125
207 NotificationChangeObserver* CreateObserver();
208
209 void CloseBrowserWindow(Browser* browser); 126 void CloseBrowserWindow(Browser* browser);
210 void CrashTab(Browser* browser, int index); 127 void CrashTab(Browser* browser, int index);
211 const std::deque<Balloon*>& GetActiveBalloons();
212 void CrashNotification(Balloon* balloon);
213 bool CloseNotificationAndWait(const Notification& notification);
214 128
215 void SetDefaultPermissionSetting(ContentSetting setting); 129 void SetDefaultPermissionSetting(ContentSetting setting);
216 void DenyOrigin(const GURL& origin); 130 void DenyOrigin(const GURL& origin);
217 void AllowOrigin(const GURL& origin); 131 void AllowOrigin(const GURL& origin);
218 void AllowAllOrigins(); 132 void AllowAllOrigins();
219 133
220 void VerifyInfoBar(const Browser* browser, int index); 134 void VerifyInfoBar(const Browser* browser, int index);
221 std::string CreateNotification(Browser* browser, 135 std::string CreateNotification(Browser* browser,
222 bool wait_for_new_balloon, 136 bool wait_for_new_balloon,
223 const char* icon, 137 const char* icon,
(...skipping 17 matching lines...) Expand all
241 return embedded_test_server()->GetURL( 155 return embedded_test_server()->GetURL(
242 "/notifications/notification_tester.html"); 156 "/notifications/notification_tester.html");
243 } 157 }
244 158
245 private: 159 private:
246 void DropOriginPreference(const GURL& origin); 160 void DropOriginPreference(const GURL& origin);
247 DesktopNotificationService* GetDesktopNotificationService(); 161 DesktopNotificationService* GetDesktopNotificationService();
248 }; 162 };
249 163
250 int NotificationsTest::GetNotificationCount() { 164 int NotificationsTest::GetNotificationCount() {
251 if (message_center::IsRichNotificationEnabled()) { 165 return message_center::MessageCenter::Get()->NotificationCount();
252 return message_center::MessageCenter::Get()->NotificationCount();
253 } else {
254 return BalloonNotificationUIManager::GetInstanceForTesting()->
255 balloon_collection()->GetActiveBalloons().size();
256 }
257 }
258
259 NotificationChangeObserver* NotificationsTest::CreateObserver() {
260 if (message_center::IsRichNotificationEnabled())
261 return new MessageCenterChangeObserver();
262 else
263 return new NotificationBalloonChangeObserver();
264 } 166 }
265 167
266 void NotificationsTest::CloseBrowserWindow(Browser* browser) { 168 void NotificationsTest::CloseBrowserWindow(Browser* browser) {
267 content::WindowedNotificationObserver observer( 169 content::WindowedNotificationObserver observer(
268 chrome::NOTIFICATION_BROWSER_CLOSED, 170 chrome::NOTIFICATION_BROWSER_CLOSED,
269 content::Source<Browser>(browser)); 171 content::Source<Browser>(browser));
270 browser->window()->Close(); 172 browser->window()->Close();
271 observer.Wait(); 173 observer.Wait();
272 } 174 }
273 175
274 void NotificationsTest::CrashTab(Browser* browser, int index) { 176 void NotificationsTest::CrashTab(Browser* browser, int index) {
275 content::CrashTab(browser->tab_strip_model()->GetWebContentsAt(index)); 177 content::CrashTab(browser->tab_strip_model()->GetWebContentsAt(index));
276 } 178 }
277 179
278 const std::deque<Balloon*>& NotificationsTest::GetActiveBalloons() {
279 return BalloonNotificationUIManager::GetInstanceForTesting()->
280 balloon_collection()->GetActiveBalloons();
281 }
282
283 void NotificationsTest::CrashNotification(Balloon* balloon) {
284 content::CrashTab(balloon->balloon_view()->GetHost()->web_contents());
285 }
286
287 bool NotificationsTest::CloseNotificationAndWait(
288 const Notification& notification) {
289 scoped_ptr<NotificationChangeObserver> observer(CreateObserver());
290 bool success = g_browser_process->notification_ui_manager()->
291 CancelById(notification.notification_id());
292 if (success)
293 return observer->Wait();
294 return false;
295 }
296
297 void NotificationsTest::SetDefaultPermissionSetting(ContentSetting setting) { 180 void NotificationsTest::SetDefaultPermissionSetting(ContentSetting setting) {
298 DesktopNotificationService* service = GetDesktopNotificationService(); 181 DesktopNotificationService* service = GetDesktopNotificationService();
299 service->SetDefaultContentSetting(setting); 182 service->SetDefaultContentSetting(setting);
300 } 183 }
301 184
302 void NotificationsTest::DenyOrigin(const GURL& origin) { 185 void NotificationsTest::DenyOrigin(const GURL& origin) {
303 DropOriginPreference(origin); 186 DropOriginPreference(origin);
304 GetDesktopNotificationService()->DenyPermission(origin); 187 GetDesktopNotificationService()->DenyPermission(origin);
305 } 188 }
306 189
(...skipping 25 matching lines...) Expand all
332 Browser* browser, 215 Browser* browser,
333 bool wait_for_new_balloon, 216 bool wait_for_new_balloon,
334 const char* icon, 217 const char* icon,
335 const char* title, 218 const char* title,
336 const char* body, 219 const char* body,
337 const char* replace_id) { 220 const char* replace_id) {
338 std::string script = base::StringPrintf( 221 std::string script = base::StringPrintf(
339 "createNotification('%s', '%s', '%s', '%s');", 222 "createNotification('%s', '%s', '%s', '%s');",
340 icon, title, body, replace_id); 223 icon, title, body, replace_id);
341 224
342 scoped_ptr<NotificationChangeObserver> observer(CreateObserver()); 225 MessageCenterChangeObserver observer;
343 std::string result; 226 std::string result;
344 bool success = content::ExecuteScriptAndExtractString( 227 bool success = content::ExecuteScriptAndExtractString(
345 browser->tab_strip_model()->GetActiveWebContents(), 228 browser->tab_strip_model()->GetActiveWebContents(),
346 script, 229 script,
347 &result); 230 &result);
348 if (success && result != "-1" && wait_for_new_balloon) 231 if (success && result != "-1" && wait_for_new_balloon)
349 success = observer->Wait(); 232 success = observer.Wait();
350 EXPECT_TRUE(success); 233 EXPECT_TRUE(success);
351 234
352 return result; 235 return result;
353 } 236 }
354 237
355 std::string NotificationsTest::CreateSimpleNotification( 238 std::string NotificationsTest::CreateSimpleNotification(
356 Browser* browser, 239 Browser* browser,
357 bool wait_for_new_balloon) { 240 bool wait_for_new_balloon) {
358 return CreateNotification( 241 return CreateNotification(
359 browser, wait_for_new_balloon, 242 browser, wait_for_new_balloon,
(...skipping 17 matching lines...) Expand all
377 return true; 260 return true;
378 } 261 }
379 262
380 bool NotificationsTest::CancelNotification( 263 bool NotificationsTest::CancelNotification(
381 const char* notification_id, 264 const char* notification_id,
382 Browser* browser) { 265 Browser* browser) {
383 std::string script = base::StringPrintf( 266 std::string script = base::StringPrintf(
384 "cancelNotification('%s');", 267 "cancelNotification('%s');",
385 notification_id); 268 notification_id);
386 269
387 scoped_ptr<NotificationChangeObserver> observer(CreateObserver()); 270 MessageCenterChangeObserver observer;
388 std::string result; 271 std::string result;
389 bool success = content::ExecuteScriptAndExtractString( 272 bool success = content::ExecuteScriptAndExtractString(
390 browser->tab_strip_model()->GetActiveWebContents(), 273 browser->tab_strip_model()->GetActiveWebContents(),
391 script, 274 script,
392 &result); 275 &result);
393 if (!success || result != "1") 276 if (!success || result != "1")
394 return false; 277 return false;
395 return observer->Wait(); 278 return observer.Wait();
396 } 279 }
397 280
398 bool NotificationsTest::PerformActionOnInfoBar( 281 bool NotificationsTest::PerformActionOnInfoBar(
399 Browser* browser, 282 Browser* browser,
400 InfobarAction action, 283 InfobarAction action,
401 size_t infobar_index, 284 size_t infobar_index,
402 int tab_index) { 285 int tab_index) {
403 InfoBarService* infobar_service = InfoBarService::FromWebContents( 286 InfoBarService* infobar_service = InfoBarService::FromWebContents(
404 browser->tab_strip_model()->GetWebContentsAt(tab_index)); 287 browser->tab_strip_model()->GetWebContentsAt(tab_index));
405 if (infobar_index >= infobar_service->infobar_count()) { 288 if (infobar_index >= infobar_service->infobar_count()) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 405
523 // Creates a simple notification. 406 // Creates a simple notification.
524 AllowAllOrigins(); 407 AllowAllOrigins();
525 ui_test_utils::NavigateToURL(browser(), GetTestPageURL()); 408 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
526 409
527 std::string result = CreateSimpleNotification(browser(), true); 410 std::string result = CreateSimpleNotification(browser(), true);
528 EXPECT_NE("-1", result); 411 EXPECT_NE("-1", result);
529 412
530 GURL EXPECTED_ICON_URL = embedded_test_server()->GetURL(kExpectedIconUrl); 413 GURL EXPECTED_ICON_URL = embedded_test_server()->GetURL(kExpectedIconUrl);
531 ASSERT_EQ(1, GetNotificationCount()); 414 ASSERT_EQ(1, GetNotificationCount());
532 if (message_center::IsRichNotificationEnabled()) { 415 message_center::NotificationList::Notifications notifications =
533 message_center::NotificationList::Notifications notifications = 416 message_center::MessageCenter::Get()->GetVisibleNotifications();
534 message_center::MessageCenter::Get()->GetVisibleNotifications(); 417 EXPECT_EQ(base::ASCIIToUTF16("My Title"),
535 EXPECT_EQ(base::ASCIIToUTF16("My Title"), 418 (*notifications.rbegin())->title());
536 (*notifications.rbegin())->title()); 419 EXPECT_EQ(base::ASCIIToUTF16("My Body"),
537 EXPECT_EQ(base::ASCIIToUTF16("My Body"), 420 (*notifications.rbegin())->message());
538 (*notifications.rbegin())->message());
539 } else {
540 const std::deque<Balloon*>& balloons = GetActiveBalloons();
541 ASSERT_EQ(1U, balloons.size());
542 Balloon* balloon = balloons[0];
543 const Notification& notification = balloon->notification();
544 EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url());
545 EXPECT_EQ(base::ASCIIToUTF16("My Title"), notification.title());
546 EXPECT_EQ(base::ASCIIToUTF16("My Body"), notification.message());
547 }
548 } 421 }
549 422
550 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) { 423 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) {
551 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 424 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
552 425
553 // Creates a notification and closes it. 426 // Creates a notification and closes it.
554 AllowAllOrigins(); 427 AllowAllOrigins();
555 ui_test_utils::NavigateToURL(browser(), GetTestPageURL()); 428 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
556 429
557 std::string result = CreateSimpleNotification(browser(), true); 430 std::string result = CreateSimpleNotification(browser(), true);
558 EXPECT_NE("-1", result); 431 EXPECT_NE("-1", result);
559 ASSERT_EQ(1, GetNotificationCount()); 432 ASSERT_EQ(1, GetNotificationCount());
560 433
561 if (message_center::IsRichNotificationEnabled()) { 434 message_center::NotificationList::Notifications notifications =
562 message_center::NotificationList::Notifications notifications = 435 message_center::MessageCenter::Get()->GetVisibleNotifications();
563 message_center::MessageCenter::Get()->GetVisibleNotifications(); 436 message_center::MessageCenter::Get()->RemoveNotification(
564 message_center::MessageCenter::Get()->RemoveNotification( 437 (*notifications.rbegin())->id(),
565 (*notifications.rbegin())->id(), 438 true); // by_user
566 true); // by_user
567 } else {
568 const std::deque<Balloon*>& balloons = GetActiveBalloons();
569 EXPECT_TRUE(CloseNotificationAndWait(balloons[0]->notification()));
570 }
571 439
572 ASSERT_EQ(0, GetNotificationCount()); 440 ASSERT_EQ(0, GetNotificationCount());
573 } 441 }
574 442
575 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCancelNotification) { 443 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCancelNotification) {
576 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 444 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
577 445
578 // Creates a notification and cancels it in the origin page. 446 // Creates a notification and cancels it in the origin page.
579 AllowAllOrigins(); 447 AllowAllOrigins();
580 ui_test_utils::NavigateToURL(browser(), GetTestPageURL()); 448 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 ui_test_utils::NavigateToURL(browser(), GetTestPageURL()); 603 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
736 CreateSimpleNotification(browser(), true); 604 CreateSimpleNotification(browser(), true);
737 ASSERT_EQ(1, GetNotificationCount()); 605 ASSERT_EQ(1, GetNotificationCount());
738 606
739 DenyOrigin(GetTestPageURL().GetOrigin()); 607 DenyOrigin(GetTestPageURL().GetOrigin());
740 ContentSettingsForOneType settings; 608 ContentSettingsForOneType settings;
741 GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings); 609 GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
742 ASSERT_TRUE(CheckOriginInSetting(settings, GetTestPageURL().GetOrigin())); 610 ASSERT_TRUE(CheckOriginInSetting(settings, GetTestPageURL().GetOrigin()));
743 611
744 EXPECT_EQ(1, GetNotificationCount()); 612 EXPECT_EQ(1, GetNotificationCount());
745 if (message_center::IsRichNotificationEnabled()) { 613 message_center::NotificationList::Notifications notifications =
746 message_center::NotificationList::Notifications notifications = 614 message_center::MessageCenter::Get()->GetVisibleNotifications();
747 message_center::MessageCenter::Get()->GetVisibleNotifications(); 615 message_center::MessageCenter::Get()->RemoveNotification(
748 message_center::MessageCenter::Get()->RemoveNotification( 616 (*notifications.rbegin())->id(),
749 (*notifications.rbegin())->id(), 617 true); // by_user
750 true); // by_user
751 } else {
752 const std::deque<Balloon*>& balloons = GetActiveBalloons();
753 ASSERT_TRUE(CloseNotificationAndWait(balloons[0]->notification()));
754 }
755 ASSERT_EQ(0, GetNotificationCount()); 618 ASSERT_EQ(0, GetNotificationCount());
756 } 619 }
757 620
758 // Crashes on Linux/Win. See http://crbug.com/160657. 621 // Crashes on Linux/Win. See http://crbug.com/160657.
759 IN_PROC_BROWSER_TEST_F( 622 IN_PROC_BROWSER_TEST_F(
760 NotificationsTest, 623 NotificationsTest,
761 DISABLED_TestOriginPrefsNotSavedInIncognito) { 624 DISABLED_TestOriginPrefsNotSavedInIncognito) {
762 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 625 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
763 626
764 // Verify that allow/deny origin preferences are not saved in incognito. 627 // Verify that allow/deny origin preferences are not saved in incognito.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 browser(), 675 browser(),
813 embedded_test_server()->GetURL("/empty.html"), 676 embedded_test_server()->GetURL("/empty.html"),
814 NEW_BACKGROUND_TAB, 677 NEW_BACKGROUND_TAB,
815 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 678 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
816 browser()->tab_strip_model()->ActivateTabAt(0, true); 679 browser()->tab_strip_model()->ActivateTabAt(0, true);
817 ui_test_utils::NavigateToURL(browser(), GetTestPageURL()); 680 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
818 ASSERT_TRUE(RequestPermissionAndWait(browser())); 681 ASSERT_TRUE(RequestPermissionAndWait(browser()));
819 CrashTab(browser(), 0); 682 CrashTab(browser(), 0);
820 } 683 }
821 684
822 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestKillNotificationProcess) {
823 // Notifications don't have their own process with the message center.
824 if (message_center::IsRichNotificationEnabled())
825 return;
826
827 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
828
829 // Test killing a notification doesn't crash Chrome.
830 AllowAllOrigins();
831 ui_test_utils::NavigateToURL(browser(), GetTestPageURL());
832 CreateSimpleNotification(browser(), true);
833 ASSERT_EQ(1, GetNotificationCount());
834
835 const std::deque<Balloon*>& balloons = GetActiveBalloons();
836 ASSERT_EQ(1U, balloons.size());
837 CrashNotification(balloons[0]);
838 ASSERT_EQ(0, GetNotificationCount());
839 }
840
841 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestIncognitoNotification) { 685 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestIncognitoNotification) {
842 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 686 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
843 687
844 // Test notifications in incognito window. 688 // Test notifications in incognito window.
845 Browser* browser = CreateIncognitoBrowser(); 689 Browser* browser = CreateIncognitoBrowser();
846 ui_test_utils::NavigateToURL(browser, GetTestPageURL()); 690 ui_test_utils::NavigateToURL(browser, GetTestPageURL());
847 browser->tab_strip_model()->ActivateTabAt(0, true); 691 browser->tab_strip_model()->ActivateTabAt(0, true);
848 ASSERT_TRUE(RequestPermissionAndWait(browser)); 692 ASSERT_TRUE(RequestPermissionAndWait(browser));
849 PerformActionOnInfoBar(browser, ALLOW, 0, 0); 693 PerformActionOnInfoBar(browser, ALLOW, 0, 0);
850 CreateSimpleNotification(browser, true); 694 CreateSimpleNotification(browser, true);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 std::string result = CreateNotification( 775 std::string result = CreateNotification(
932 browser(), true, "abc.png", "Title1", "Body1", "chat"); 776 browser(), true, "abc.png", "Title1", "Body1", "chat");
933 EXPECT_NE("-1", result); 777 EXPECT_NE("-1", result);
934 778
935 ASSERT_EQ(1, GetNotificationCount()); 779 ASSERT_EQ(1, GetNotificationCount());
936 780
937 result = CreateNotification( 781 result = CreateNotification(
938 browser(), false, "no_such_file.png", "Title2", "Body2", "chat"); 782 browser(), false, "no_such_file.png", "Title2", "Body2", "chat");
939 EXPECT_NE("-1", result); 783 EXPECT_NE("-1", result);
940 784
941 if (message_center::IsRichNotificationEnabled()) { 785 ASSERT_EQ(1, GetNotificationCount());
942 ASSERT_EQ(1, GetNotificationCount()); 786 message_center::NotificationList::Notifications notifications =
943 message_center::NotificationList::Notifications notifications = 787 message_center::MessageCenter::Get()->GetVisibleNotifications();
944 message_center::MessageCenter::Get()->GetVisibleNotifications(); 788 EXPECT_EQ(base::ASCIIToUTF16("Title2"), (*notifications.rbegin())->title());
945 EXPECT_EQ(base::ASCIIToUTF16("Title2"), (*notifications.rbegin())->title()); 789 EXPECT_EQ(base::ASCIIToUTF16("Body2"),
946 EXPECT_EQ(base::ASCIIToUTF16("Body2"), 790 (*notifications.rbegin())->message());
947 (*notifications.rbegin())->message());
948 } else {
949 const std::deque<Balloon*>& balloons = GetActiveBalloons();
950 ASSERT_EQ(1U, balloons.size());
951 Balloon* balloon = balloons[0];
952 const Notification& notification = balloon->notification();
953 GURL EXPECTED_ICON_URL = embedded_test_server()->GetURL(kExpectedIconUrl);
954 EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url());
955 EXPECT_EQ(base::ASCIIToUTF16("Title2"), notification.title());
956 EXPECT_EQ(base::ASCIIToUTF16("Body2"), notification.message());
957 }
958 } 791 }
OLDNEW
« no previous file with comments | « chrome/browser/notifications/notification.cc ('k') | chrome/browser/notifications/notification_options_menu_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698