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

Unified Diff: chrome/browser/chromeos/notifications/notification_browsertest.cc

Issue 9664072: Removing WmIpc and related files from ChromeOS (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Copyright Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/notifications/notification_browsertest.cc
diff --git a/chrome/browser/chromeos/notifications/notification_browsertest.cc b/chrome/browser/chromeos/notifications/notification_browsertest.cc
deleted file mode 100644
index 14be5817a1b5d2e2b0a89a71300f713487b7fef9..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/notifications/notification_browsertest.cc
+++ /dev/null
@@ -1,594 +0,0 @@
-// Copyright (c) 2012 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/bind.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/string16.h"
-#include "base/string_util.h"
-#include "base/stringprintf.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/notifications/balloon_collection_impl.h"
-#include "chrome/browser/chromeos/notifications/balloon_view.h"
-#include "chrome/browser/chromeos/notifications/notification_panel.h"
-#include "chrome/browser/chromeos/notifications/system_notification_factory.h"
-#include "chrome/browser/notifications/notification_test_util.h"
-#include "chrome/browser/notifications/notification_ui_manager.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/notification_service.h"
-#include "ui/base/x/x11_util.h"
-
-namespace chromeos {
-
-class NotificationTest : public InProcessBrowserTest,
- public content::NotificationObserver {
- public:
- NotificationTest()
- : under_chromeos_(false),
- state_(PanelController::INITIAL),
- expected_(PanelController::INITIAL) {
- }
-
- void HandleWebUIMessage(const ListValue* value) {
- MessageLoop::current()->Quit();
- }
-
- protected:
- virtual void SetUp() {
- // Detect if we're running under ChromeOS WindowManager. See
- // the description for "under_chromeos_" below for why we need this.
- ui::WindowManagerName wm_type = ui::GuessWindowManager();
- // NOTE: On Chrome OS the wm and Chrome are started in parallel. This
- // means it's possible for us not to be able to get the name of the window
- // manager. We assume that when this happens we're on Chrome OS.
- under_chromeos_ = (wm_type == ui::WM_CHROME_OS ||
- wm_type == ui::WM_UNKNOWN);
- InProcessBrowserTest::SetUp();
- }
-
- BalloonCollectionImpl* GetBalloonCollectionImpl() {
- return static_cast<BalloonCollectionImpl*>(
- g_browser_process->notification_ui_manager()->balloon_collection());
- }
-
- NotificationPanel* GetNotificationPanel() {
- return static_cast<NotificationPanel*>(
- GetBalloonCollectionImpl()->notification_ui());
- }
-
- Notification NewMockNotification(const std::string& id) {
- return NewMockNotification(new MockNotificationDelegate(id));
- }
-
- Notification NewMockNotification(NotificationDelegate* delegate) {
- std::string text = delegate->id();
- return SystemNotificationFactory::Create(
- GURL(), ASCIIToUTF16(text.c_str()), ASCIIToUTF16(text.c_str()),
- delegate);
- }
-
- void MarkStale(const char* id) {
- GetNotificationPanel()->GetTester()->MarkStale(NewMockNotification(id));
- }
-
- // Waits untilt the panel's state becomes the specified state.
- // Does nothing if it's not running with ChromeOS Window Manager.
- void WaitForPanelState(NotificationPanelTester* tester,
- PanelController::State state) {
- if (under_chromeos_ && state != state_) {
- expected_ = state;
- ui_test_utils::RunAllPendingInMessageLoop();
- }
- }
-
- // Busy loop to wait until the view becomes visible in the panel.
- void WaitForVisible(BalloonViewImpl* view) {
- WaitForResize(view);
- NotificationPanelTester* tester = GetNotificationPanel()->GetTester();
- while (!tester->IsVisible(view)) {
- ui_test_utils::RunAllPendingInMessageLoop();
- }
- }
-
- // Busy loop to wait until the webkit give some size to the notification.
- void WaitForResize(BalloonViewImpl* view) {
- while (view->bounds().IsEmpty()) {
- ui_test_utils::RunAllPendingInMessageLoop();
- }
- }
-
- // NotificationObserver overrides.
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- ASSERT_TRUE(chrome::NOTIFICATION_PANEL_STATE_CHANGED == type);
- PanelController::State* state =
- reinterpret_cast<PanelController::State*>(details.map_key());
- state_ = *state;
- if (under_chromeos_ && expected_ == state_) {
- expected_ = PanelController::INITIAL;
- MessageLoop::current()->Quit();
- }
- }
-
- private:
- // ChromeOS build of chrome communicates with ChromeOS's
- // WindowManager, and behaves differently if it runs under a
- // chromeos window manager. ChromeOS WindowManager sends
- // EXPANDED/MINIMIED state change message when the panels's state
- // changed (regardless of who changed it), and to avoid
- // mis-recognizing such events as user-initiated actions, we need to
- // wait and eat them before moving to a next step.
- bool under_chromeos_;
- PanelController::State state_;
- PanelController::State expected_;
-};
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestBasic) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
-
- // Using system notification as regular notification.
- collection->Add(NewMockNotification("1"), browser()->profile());
-
- EXPECT_EQ(1, tester->GetNewNotificationCount());
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(0, tester->GetStickyNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->Add(NewMockNotification("2"), browser()->profile());
-
- EXPECT_EQ(2, tester->GetNewNotificationCount());
- EXPECT_EQ(2, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("1");
- ui_test_utils::RunAllPendingInMessageLoop();
-
- EXPECT_EQ(1, tester->GetNewNotificationCount());
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("2");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(0, tester->GetNewNotificationCount());
- EXPECT_EQ(0, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- // CLOSE is asynchronous. Run the all pending tasks to finish closing
- // task.
- ui_test_utils::RunAllPendingInMessageLoop();
-}
-
-// [CLOSED] -add->[STICKY_AND_NEW] -mouse-> [STICKY_AND_NEW] -remove/add->
-// [STICKY_AND_NEW] -remove-> [CLOSED] -add-> [STICKY_AND_NEW] -remove->
-// [CLOSED]
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestKeepSizeState) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
-
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- // Using system notification as regular notification.
- collection->Add(NewMockNotification("1"), browser()->profile());
- collection->Add(NewMockNotification("2"), browser()->profile());
-
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- panel->OnMouseMotion(gfx::Point(10, 10));
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("1");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(1, tester->GetNewNotificationCount());
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->Add(NewMockNotification("1"), browser()->profile());
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(2, tester->GetNewNotificationCount());
- EXPECT_EQ(2, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("1");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(1, tester->GetNewNotificationCount());
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("2");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(0, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- collection->Add(NewMockNotification("3"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- collection->RemoveById("3");
-
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(0, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestSystemNotification) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- scoped_refptr<MockNotificationDelegate> delegate(
- new MockNotificationDelegate("power"));
- NotificationPanelTester* tester = panel->GetTester();
-
- Notification notify = NewMockNotification(delegate.get());
- collection->AddSystemNotification(notify, browser()->profile(), true);
-
- EXPECT_EQ(1, tester->GetNewNotificationCount());
- EXPECT_EQ(1, tester->GetStickyNotificationCount());
-
- Notification update = SystemNotificationFactory::Create(
- GURL(), ASCIIToUTF16("Title"), ASCIIToUTF16("updated"), delegate.get());
- collection->UpdateNotification(update);
-
- EXPECT_EQ(1, tester->GetStickyNotificationCount());
-
- Notification update_and_show = SystemNotificationFactory::Create(
- GURL(), ASCIIToUTF16("Title"), ASCIIToUTF16("updated and shown"),
- delegate.get());
- collection->UpdateAndShowNotification(update_and_show);
-
- EXPECT_EQ(1, tester->GetStickyNotificationCount());
-
- // Dismiss the notification.
- collection->RemoveById(delegate->id());
- ui_test_utils::RunAllPendingInMessageLoop();
-
- EXPECT_EQ(0, tester->GetStickyNotificationCount());
- EXPECT_EQ(0, tester->GetNewNotificationCount());
- // TODO(oshima): check content, etc..
-}
-
-// [CLOSED] -add,add->[STICKY_AND_NEW] -stale-> [MINIMIZED] -remove->
-// [MINIMIZED] -remove-> [CLOSED]
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestStateTransition1) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
-
- tester->SetStaleTimeout(0);
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- collection->Add(NewMockNotification("1"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->Add(NewMockNotification("2"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::MINIMIZED, tester->state());
-
- collection->RemoveById("2");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::MINIMIZED, tester->state());
-
- collection->RemoveById("1");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(0, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- ui_test_utils::RunAllPendingInMessageLoop();
-}
-
-// [CLOSED] -add->[STICKY_AND_NEW] -stale-> [MINIMIZED] -add->
-// [STICKY_AND_NEW] -stale-> [MINIMIZED] -add sys-> [STICKY_NEW]
-// -stale-> [STICKY_NEW] -remove-> [STICKY_NEW] -remove sys->
-// [MINIMIZED] -remove-> [CLOSED]
-//
-// This test depends on the fact that the panel state change occurs
-// quicker than stale timeout, thus the stale timeout cannot be set to
-// 0. This test explicitly controls the stale state instead.
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestStateTransition2) {
- // Register observer here as the registration does not work in SetUp().
- content::NotificationRegistrar registrar;
- registrar.Add(this,
- chrome::NOTIFICATION_PANEL_STATE_CHANGED,
- content::NotificationService::AllSources());
-
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
-
- // See description above.
- tester->SetStaleTimeout(100000);
-
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- collection->Add(NewMockNotification("1"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- ui_test_utils::RunAllPendingInMessageLoop();
-
- // Make the notification stale and make sure panel is minimized state.
- MarkStale("1");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::MINIMIZED, tester->state());
- WaitForPanelState(tester, PanelController::MINIMIZED);
-
- // Adding new notification expands the panel.
- collection->Add(NewMockNotification("2"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- WaitForPanelState(tester, PanelController::EXPANDED);
-
- // The panel must be minimzied when the new notification becomes stale.
- MarkStale("2");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::MINIMIZED, tester->state());
- WaitForPanelState(tester, PanelController::MINIMIZED);
-
- // The panel must be expanded again when a new system notification is added.
- collection->AddSystemNotification(
- NewMockNotification("3"), browser()->profile(), true);
- EXPECT_EQ(3, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- WaitForPanelState(tester, PanelController::EXPANDED);
-
- // Running all events nor removing non sticky should not change the state.
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- collection->RemoveById("1");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- // Removing the system notification should minimize the panel.
- collection->RemoveById("3");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::MINIMIZED, tester->state());
- WaitForPanelState(tester, PanelController::MINIMIZED);
-
- // Removing the last notification. Should close the panel.
- collection->RemoveById("2");
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(0, tester->GetNotificationCount());
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-
- ui_test_utils::RunAllPendingInMessageLoop();
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestCleanupOnExit) {
- content::NotificationRegistrar registrar;
- registrar.Add(this,
- chrome::NOTIFICATION_PANEL_STATE_CHANGED,
- content::NotificationService::AllSources());
-
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
-
- // Don't become stale.
- tester->SetStaleTimeout(100000);
-
- collection->Add(NewMockNotification("1"), browser()->profile());
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- WaitForPanelState(tester, PanelController::EXPANDED);
- // end without closing.
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestCloseOpen) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
- Profile* profile = browser()->profile();
-
- collection->Add(NewMockNotification("1"), profile);
- collection->Add(NewMockNotification("2"), profile);
- ui_test_utils::RunAllPendingInMessageLoop();
- WaitForPanelState(tester, PanelController::EXPANDED);
- PanelController* controller = tester->GetPanelController();
- // close now
- panel->ClosePanel();
- controller->Close();
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
- // open again
- collection->Add(NewMockNotification("3"), profile);
- WaitForPanelState(tester, PanelController::EXPANDED);
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
-
- // close again
- controller = tester->GetPanelController();
- panel->ClosePanel();
- controller->Close();
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
-}
-
-// TODO(lipalani): http://crbug.com/83123
-IN_PROC_BROWSER_TEST_F(NotificationTest, DISABLED_TestScrollBalloonToVisible) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
- Profile* profile = browser()->profile();
-
- // Create notifications enough to overflow the panel size.
- const int create_count = 15;
-
- // new notification is always visible
- for (int i = 0; i < create_count; i++) {
- {
- SCOPED_TRACE(base::StringPrintf("new normal %d", i));
- std::string id = base::StringPrintf("n%d", i);
- collection->Add(NewMockNotification(id), profile);
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- BalloonViewImpl* view =
- tester->GetBalloonView(collection, NewMockNotification(id));
- WaitForVisible(view);
- }
- {
- SCOPED_TRACE(base::StringPrintf("new system %d", i));
- std::string id = base::StringPrintf("s%d", i);
- collection->AddSystemNotification(
- NewMockNotification(id), browser()->profile(), true);
- BalloonViewImpl* view =
- tester->GetBalloonView(collection, NewMockNotification(id));
- WaitForVisible(view);
- }
- }
-
- // Update should not change the visibility
- for (int i = 0; i < create_count; i++) {
- {
- SCOPED_TRACE(base::StringPrintf("update n%d", i));
- Notification notify = NewMockNotification(base::StringPrintf("n%d", i));
- // The last shown notification is sticky, which makes all non sticky
- // invisible.
- EXPECT_TRUE(collection->UpdateNotification(notify));
- ui_test_utils::RunAllPendingInMessageLoop();
- BalloonViewImpl* view = tester->GetBalloonView(collection, notify);
- EXPECT_FALSE(tester->IsVisible(view));
- }
- {
- SCOPED_TRACE(base::StringPrintf("update s%d", i));
- Notification notify = NewMockNotification(base::StringPrintf("s%d", i));
- BalloonViewImpl* view = tester->GetBalloonView(collection, notify);
- bool currently_visible = tester->IsVisible(view);
- EXPECT_TRUE(collection->UpdateNotification(notify));
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(view, tester->GetBalloonView(collection, notify));
- EXPECT_EQ(currently_visible, tester->IsVisible(view));
- }
- }
- // UpdateAndShowNotification makes notification visible
- for (int i = 0; i < create_count; i++) {
- {
- SCOPED_TRACE(base::StringPrintf("update and show n%d", i));
- Notification notify = NewMockNotification(base::StringPrintf("n%d", i));
- EXPECT_TRUE(collection->UpdateAndShowNotification(notify));
- ui_test_utils::RunAllPendingInMessageLoop();
- BalloonViewImpl* view = tester->GetBalloonView(collection, notify);
- EXPECT_TRUE(tester->IsVisible(view));
- }
- {
- SCOPED_TRACE(base::StringPrintf("update and show s%d", i));
- Notification notify = NewMockNotification(base::StringPrintf("s%d", i));
- EXPECT_TRUE(collection->UpdateAndShowNotification(notify));
- ui_test_utils::RunAllPendingInMessageLoop();
- BalloonViewImpl* view = tester->GetBalloonView(collection, notify);
- EXPECT_TRUE(tester->IsVisible(view));
- }
- }
-}
-
-// Seems to be flaky. http://crbug.com/84427
-IN_PROC_BROWSER_TEST_F(NotificationTest, DISABLED_TestActivateDeactivate) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
- Profile* profile = browser()->profile();
-
- collection->Add(NewMockNotification("1"), profile);
- collection->AddSystemNotification(
- NewMockNotification("2"), profile, true);
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- BalloonViewImpl* view1 =
- tester->GetBalloonView(collection, NewMockNotification("1"));
- BalloonViewImpl* view2 =
- tester->GetBalloonView(collection, NewMockNotification("2"));
- // Wait until all renderers get size.
- WaitForResize(view1);
- WaitForResize(view2);
- EXPECT_LT(view2->size().height(), 50) << "view size is bigger than expected";
-
- panel->OnMouseMotion(gfx::Point(10, 50));
- EXPECT_TRUE(tester->IsActive(view1));
- EXPECT_FALSE(tester->IsActive(view2));
-
- panel->OnMouseMotion(gfx::Point(10, 10));
- EXPECT_FALSE(tester->IsActive(view1));
- EXPECT_TRUE(tester->IsActive(view2));
-
- panel->OnMouseMotion(gfx::Point(500, 500));
- EXPECT_FALSE(tester->IsActive(view1));
- EXPECT_FALSE(tester->IsActive(view2));
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestCloseDismissAllNonSticky) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- NotificationPanel* panel = GetNotificationPanel();
- NotificationPanelTester* tester = panel->GetTester();
- Profile* profile = browser()->profile();
-
- collection->Add(NewMockNotification("1"), profile);
- collection->AddSystemNotification(
- NewMockNotification("2"), profile, true);
- collection->Add(NewMockNotification("3"), profile);
-
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
- EXPECT_EQ(3, tester->GetNotificationCount());
- EXPECT_EQ(1, tester->GetStickyNotificationCount());
-
- // Hide
- panel->Hide();
- ui_test_utils::RunAllPendingInMessageLoop();
- EXPECT_EQ(1, tester->GetNotificationCount());
- EXPECT_EQ(1, tester->GetStickyNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestAddWebUIMessageCallback) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- Profile* profile = browser()->profile();
-
- collection->AddSystemNotification(
- NewMockNotification("1"), profile, false);
-
- EXPECT_TRUE(collection->AddWebUIMessageCallback(
- NewMockNotification("1"),
- "test",
- base::Bind(&NotificationTest::HandleWebUIMessage,
- base::Unretained(static_cast<NotificationTest*>(this)))));
-
- // Adding callback for the same message twice should fail.
- EXPECT_FALSE(collection->AddWebUIMessageCallback(
- NewMockNotification("1"),
- "test",
- base::Bind(&NotificationTest::HandleWebUIMessage,
- base::Unretained(static_cast<NotificationTest*>(this)))));
-
- // Adding callback to nonexistent notification should fail.
- EXPECT_FALSE(collection->AddWebUIMessageCallback(
- NewMockNotification("2"),
- "test1",
- base::Bind(&NotificationTest::HandleWebUIMessage,
- base::Unretained(static_cast<NotificationTest*>(this)))));
-}
-
-// Occasional crash: http://crbug.com/96461
-IN_PROC_BROWSER_TEST_F(NotificationTest, TestWebUIMessageCallback) {
- BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
- Profile* profile = browser()->profile();
- // A notification that sends 'test' WebUI message back to chrome.
- const GURL content_url(
- "data:text/html;charset=utf-8,"
- "<html><script>function send() { chrome.send('test', ['']); }</script>"
- "<body onload='send()'></body></html>");
- collection->AddSystemNotification(
- Notification(GURL(), content_url, string16(), string16(),
- new MockNotificationDelegate("1")),
- profile,
- false);
- EXPECT_TRUE(collection->AddWebUIMessageCallback(
- NewMockNotification("1"),
- "test",
- base::Bind(&NotificationTest::HandleWebUIMessage,
- base::Unretained(static_cast<NotificationTest*>(this)))));
- MessageLoop::current()->Run();
-}
-
-} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698