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 |