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

Unified Diff: ui/views/bubble/bubble_frame_view_unittest.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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
« no previous file with comments | « ui/views/bubble/bubble_frame_view.cc ('k') | ui/views/bubble/bubble_window_targeter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/bubble/bubble_frame_view_unittest.cc
diff --git a/ui/views/bubble/bubble_frame_view_unittest.cc b/ui/views/bubble/bubble_frame_view_unittest.cc
deleted file mode 100644
index 545ca3875cbb91ec473e6c4460342f86f2c2d3a8..0000000000000000000000000000000000000000
--- a/ui/views/bubble/bubble_frame_view_unittest.cc
+++ /dev/null
@@ -1,352 +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 "ui/gfx/insets.h"
-#include "ui/views/bubble/bubble_border.h"
-#include "ui/views/bubble/bubble_frame_view.h"
-#include "ui/views/test/views_test_base.h"
-#include "ui/views/widget/widget.h"
-
-namespace views {
-
-typedef ViewsTestBase BubbleFrameViewTest;
-
-namespace {
-
-const BubbleBorder::Arrow kArrow = BubbleBorder::TOP_LEFT;
-const SkColor kColor = SK_ColorRED;
-const int kMargin = 6;
-
-class TestBubbleFrameView : public BubbleFrameView {
- public:
- TestBubbleFrameView()
- : BubbleFrameView(gfx::Insets(kMargin, kMargin, kMargin, kMargin)),
- available_bounds_(gfx::Rect(0, 0, 1000, 1000)) {
- SetBubbleBorder(scoped_ptr<views::BubbleBorder>(
- new BubbleBorder(kArrow, BubbleBorder::NO_SHADOW, kColor)));
- }
- virtual ~TestBubbleFrameView() {}
-
- // BubbleFrameView overrides:
- virtual gfx::Rect GetAvailableScreenBounds(const gfx::Rect& rect) override {
- return available_bounds_;
- }
-
- private:
- gfx::Rect available_bounds_;
-
- DISALLOW_COPY_AND_ASSIGN(TestBubbleFrameView);
-};
-
-} // namespace
-
-TEST_F(BubbleFrameViewTest, GetBoundsForClientView) {
- TestBubbleFrameView frame;
- EXPECT_EQ(kArrow, frame.bubble_border()->arrow());
- EXPECT_EQ(kColor, frame.bubble_border()->background_color());
-
- int margin_x = frame.content_margins().left();
- int margin_y = frame.content_margins().top();
- gfx::Insets insets = frame.bubble_border()->GetInsets();
- EXPECT_EQ(insets.left() + margin_x, frame.GetBoundsForClientView().x());
- EXPECT_EQ(insets.top() + margin_y, frame.GetBoundsForClientView().y());
-}
-
-// Tests that the arrow is mirrored as needed to better fit the screen.
-TEST_F(BubbleFrameViewTest, GetUpdatedWindowBounds) {
- TestBubbleFrameView frame;
- gfx::Rect window_bounds;
-
- gfx::Insets insets = frame.bubble_border()->GetInsets();
- int xposition = 95 - insets.width();
-
- // Test that the info bubble displays normally when it fits.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_LEFT, frame.bubble_border()->arrow());
- EXPECT_GT(window_bounds.x(), xposition);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on left.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_RIGHT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_LEFT, frame.bubble_border()->arrow());
- EXPECT_GT(window_bounds.x(), xposition);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on left or top.
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_RIGHT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_LEFT, frame.bubble_border()->arrow());
- EXPECT_GT(window_bounds.x(), xposition);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on top.
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_LEFT, frame.bubble_border()->arrow());
- EXPECT_GT(window_bounds.x(), xposition);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on top and right.
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_RIGHT, frame.bubble_border()->arrow());
- EXPECT_LT(window_bounds.x(), 900 + 50 - 500);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on right.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_RIGHT, frame.bubble_border()->arrow());
- EXPECT_LT(window_bounds.x(), 900 + 50 - 500);
- EXPECT_GT(window_bounds.y(), 100 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-
- // Test bubble not fitting on bottom and right.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_RIGHT, frame.bubble_border()->arrow());
- EXPECT_LT(window_bounds.x(), 900 + 50 - 500);
- EXPECT_LT(window_bounds.y(), 900 - 500 - 15); // -15 to roughly compensate
- // for arrow height.
-
- // Test bubble not fitting at the bottom.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_LEFT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_LEFT, frame.bubble_border()->arrow());
- // The window should be right aligned with the anchor_rect.
- EXPECT_LT(window_bounds.x(), 900 + 50 - 500);
- EXPECT_LT(window_bounds.y(), 900 - 500 - 15); // -15 to roughly compensate
- // for arrow height.
-
- // Test bubble not fitting at the bottom and left.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_RIGHT);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_LEFT, frame.bubble_border()->arrow());
- // The window should be right aligned with the anchor_rect.
- EXPECT_LT(window_bounds.x(), 900 + 50 - 500);
- EXPECT_LT(window_bounds.y(), 900 - 500 - 15); // -15 to roughly compensate
- // for arrow height.
-}
-
-// Tests that the arrow is not moved when the info-bubble does not fit the
-// screen but moving it would make matter worse.
-TEST_F(BubbleFrameViewTest, GetUpdatedWindowBoundsMirroringFails) {
- TestBubbleFrameView frame;
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_LEFT);
- gfx::Rect window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(400, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 700), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_LEFT, frame.bubble_border()->arrow());
-}
-
-TEST_F(BubbleFrameViewTest, TestMirroringForCenteredArrow) {
- TestBubbleFrameView frame;
-
- // Test bubble not fitting above the anchor.
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_CENTER);
- gfx::Rect window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 700), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_CENTER, frame.bubble_border()->arrow());
-
- // Test bubble not fitting below the anchor.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(300, 800, 50, 50), // |anchor_rect|
- gfx::Size(500, 200), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_CENTER, frame.bubble_border()->arrow());
-
- // Test bubble not fitting to the right of the anchor.
- frame.bubble_border()->set_arrow(BubbleBorder::LEFT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(800, 300, 50, 50), // |anchor_rect|
- gfx::Size(200, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::RIGHT_CENTER, frame.bubble_border()->arrow());
-
- // Test bubble not fitting to the left of the anchor.
- frame.bubble_border()->set_arrow(BubbleBorder::RIGHT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 300, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::LEFT_CENTER, frame.bubble_border()->arrow());
-}
-
-// Test that the arrow will not be mirrored when |adjust_if_offscreen| is false.
-TEST_F(BubbleFrameViewTest, GetUpdatedWindowBoundsDontTryMirror) {
- TestBubbleFrameView frame;
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_RIGHT);
- gfx::Rect window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- false); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_RIGHT, frame.bubble_border()->arrow());
- // The coordinates should be pointing to anchor_rect from TOP_RIGHT.
- EXPECT_LT(window_bounds.x(), 100 + 50 - 500);
- EXPECT_GT(window_bounds.y(), 900 + 50 - 10); // -10 to roughly compensate for
- // arrow overlap.
-}
-
-// Test that the center arrow is moved as needed to fit the screen.
-TEST_F(BubbleFrameViewTest, GetUpdatedWindowBoundsCenterArrows) {
- TestBubbleFrameView frame;
- gfx::Rect window_bounds;
-
- // Test that the bubble displays normally when it fits.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(500, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.x() + window_bounds.width() / 2, 525);
-
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(500, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.x() + window_bounds.width() / 2, 525);
-
- frame.bubble_border()->set_arrow(BubbleBorder::LEFT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 400, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::LEFT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.y() + window_bounds.height() / 2, 425);
-
- frame.bubble_border()->set_arrow(BubbleBorder::RIGHT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 400, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::RIGHT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.y() + window_bounds.height() / 2, 425);
-
- // Test bubble not fitting left screen edge.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.x(), 0);
- EXPECT_EQ(window_bounds.x() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 125);
-
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.x(), 0);
- EXPECT_EQ(window_bounds.x() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 125);
-
- // Test bubble not fitting right screen edge.
- frame.bubble_border()->set_arrow(BubbleBorder::TOP_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::TOP_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.right(), 1000);
- EXPECT_EQ(window_bounds.x() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 925);
-
- frame.bubble_border()->set_arrow(BubbleBorder::BOTTOM_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::BOTTOM_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.right(), 1000);
- EXPECT_EQ(window_bounds.x() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 925);
-
- // Test bubble not fitting top screen edge.
- frame.bubble_border()->set_arrow(BubbleBorder::LEFT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::LEFT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.y(), 0);
- EXPECT_EQ(window_bounds.y() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 125);
-
- frame.bubble_border()->set_arrow(BubbleBorder::RIGHT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 100, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::RIGHT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.y(), 0);
- EXPECT_EQ(window_bounds.y() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 125);
-
- // Test bubble not fitting bottom screen edge.
- frame.bubble_border()->set_arrow(BubbleBorder::LEFT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(100, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::LEFT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.bottom(), 1000);
- EXPECT_EQ(window_bounds.y() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 925);
-
- frame.bubble_border()->set_arrow(BubbleBorder::RIGHT_CENTER);
- window_bounds = frame.GetUpdatedWindowBounds(
- gfx::Rect(900, 900, 50, 50), // |anchor_rect|
- gfx::Size(500, 500), // |client_size|
- true); // |adjust_if_offscreen|
- EXPECT_EQ(BubbleBorder::RIGHT_CENTER, frame.bubble_border()->arrow());
- EXPECT_EQ(window_bounds.bottom(), 1000);
- EXPECT_EQ(window_bounds.y() +
- frame.bubble_border()->GetArrowOffset(window_bounds.size()), 925);
-}
-
-} // namespace views
« no previous file with comments | « ui/views/bubble/bubble_frame_view.cc ('k') | ui/views/bubble/bubble_window_targeter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698