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

Unified Diff: ui/message_center/views/message_popup_collection_unittest.cc

Issue 14139014: Reposition toasts to align the closed one. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 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 side-by-side diff with in-line comments
Download patch
Index: ui/message_center/views/message_popup_collection_unittest.cc
diff --git a/ui/message_center/views/message_popup_collection_unittest.cc b/ui/message_center/views/message_popup_collection_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6a82db5015cf068b0376655cba8f49a34bea3508
--- /dev/null
+++ b/ui/message_center/views/message_popup_collection_unittest.cc
@@ -0,0 +1,131 @@
+// Copyright (c) 2013 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 "ui/message_center/views/message_popup_collection.h"
+
+#include <list>
+
+#include "base/message_loop.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/rect.h"
+#include "ui/message_center/fake_message_center.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget.h"
+
+namespace message_center {
+namespace test {
+
+class MessagePopupCollectionTest : public views::ViewsTestBase {
+ public:
+ virtual void SetUp() OVERRIDE {
+ views::ViewsTestBase::SetUp();
+ collection_.reset(new MessagePopupCollection(NULL, &message_center_));
+ collection_->SetWorkAreaForTest(gfx::Rect(0, 0, 200, 200));
+ }
+
+ virtual void TearDown() OVERRIDE {
+ collection_->CloseAllWidgets();
+ views::ViewsTestBase::TearDown();
+ }
+
+ protected:
+ void CreateWidgets(const std::vector<gfx::Rect>& rects) {
+ for (std::vector<gfx::Rect>::const_iterator iter = rects.begin();
+ iter != rects.end(); ++iter) {
+ views::Widget* widget = new views::Widget();
+ views::Widget::InitParams params = CreateParams(
+ views::Widget::InitParams::TYPE_POPUP);
+ params.keep_on_top = true;
+ params.top_level = true;
+ params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget->Init(params);
+ widget->SetBounds(*iter);
+ collection_->widgets_.push_back(widget);
+ }
+ }
+
+ void RepositionWidgets() {
+ collection_->RepositionWidgets();
+ }
+
+ void RepositionWidgetsWithTarget(const gfx::Rect& target_rect) {
+ collection_->RepositionWidgetsWithTarget(target_rect);
+ }
+
+ gfx::Rect GetWidgetRectAt(size_t index) {
+ size_t i = 0;
+ for (std::list<views::Widget*>::const_iterator iter =
+ collection_->widgets_.begin();
+ iter != collection_->widgets_.end(); ++iter) {
+ if (i++ == index)
+ return (*iter)->GetWindowBoundsInScreen();
+ }
+ return gfx::Rect();
+ }
+
+ private:
+ FakeMessageCenter message_center_;
+ scoped_ptr<MessagePopupCollection> collection_;
+};
+
+TEST_F(MessagePopupCollectionTest, RepositionWidgets) {
+ std::vector<gfx::Rect> rects;
+ std::list<views::Widget*> widgets;
+ rects.push_back(gfx::Rect(0, 0, 10, 10));
+ rects.push_back(gfx::Rect(0, 0, 10, 20));
+ rects.push_back(gfx::Rect(0, 0, 10, 30));
+ rects.push_back(gfx::Rect(0, 0, 10, 40));
+ CreateWidgets(rects);
+ RepositionWidgets();
+
+ EXPECT_EQ("0,180 10x10", GetWidgetRectAt(0).ToString());
+ EXPECT_EQ("0,150 10x20", GetWidgetRectAt(1).ToString());
+ EXPECT_EQ("0,110 10x30", GetWidgetRectAt(2).ToString());
+ EXPECT_EQ("0,60 10x40", GetWidgetRectAt(3).ToString());
+}
+
+TEST_F(MessagePopupCollectionTest, RepositionWidgetsWithTargetDown) {
+ std::vector<gfx::Rect> rects;
+ std::list<views::Widget*> widgets;
+ rects.push_back(gfx::Rect(0, 180, 10, 10));
+ rects.push_back(gfx::Rect(0, 150, 10, 20));
+ rects.push_back(gfx::Rect(0, 60, 10, 40));
+ CreateWidgets(rects);
+ RepositionWidgetsWithTarget(gfx::Rect(0, 110, 10, 30));
+
+ EXPECT_EQ("0,180 10x10", GetWidgetRectAt(0).ToString());
+ EXPECT_EQ("0,150 10x20", GetWidgetRectAt(1).ToString());
+ EXPECT_EQ("0,110 10x40", GetWidgetRectAt(2).ToString());
+}
+
+TEST_F(MessagePopupCollectionTest, RepositionWidgetsWithTargetDownAll) {
+ std::vector<gfx::Rect> rects;
+ std::list<views::Widget*> widgets;
+ rects.push_back(gfx::Rect(0, 150, 10, 20));
+ rects.push_back(gfx::Rect(0, 110, 10, 30));
+ rects.push_back(gfx::Rect(0, 60, 10, 40));
+ CreateWidgets(rects);
+ RepositionWidgetsWithTarget(gfx::Rect(0, 180, 10, 10));
+
+ EXPECT_EQ("0,180 10x20", GetWidgetRectAt(0).ToString());
+ EXPECT_EQ("0,140 10x30", GetWidgetRectAt(1).ToString());
+ EXPECT_EQ("0,90 10x40", GetWidgetRectAt(2).ToString());
+}
+
+TEST_F(MessagePopupCollectionTest, RepositionWidgetsWithTargetUp) {
+ std::vector<gfx::Rect> rects;
+ std::list<views::Widget*> widgets;
+ rects.push_back(gfx::Rect(0, 180, 10, 10));
+ rects.push_back(gfx::Rect(0, 150, 10, 20));
+ rects.push_back(gfx::Rect(0, 110, 10, 30));
+ CreateWidgets(rects);
+ RepositionWidgetsWithTarget(gfx::Rect(0, 60, 10, 40));
+
+ EXPECT_EQ("0,130 10x10", GetWidgetRectAt(0).ToString());
+ EXPECT_EQ("0,100 10x20", GetWidgetRectAt(1).ToString());
+ EXPECT_EQ("0,60 10x30", GetWidgetRectAt(2).ToString());
+}
+
+} // namespace test
+} // namespace message_center

Powered by Google App Engine
This is Rietveld 408576698