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

Unified Diff: ui/views/window/dialog_client_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/window/dialog_client_view.cc ('k') | ui/views/window/dialog_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/window/dialog_client_view_unittest.cc
diff --git a/ui/views/window/dialog_client_view_unittest.cc b/ui/views/window/dialog_client_view_unittest.cc
deleted file mode 100644
index 6f4812cbae284082d83d92d9d9dd9b2f4196d6f1..0000000000000000000000000000000000000000
--- a/ui/views/window/dialog_client_view_unittest.cc
+++ /dev/null
@@ -1,292 +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/basictypes.h"
-#include "base/strings/utf_string_conversions.h"
-#include "ui/base/ui_base_types.h"
-#include "ui/views/controls/button/label_button.h"
-#include "ui/views/test/test_views.h"
-#include "ui/views/test/views_test_base.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/window/dialog_client_view.h"
-#include "ui/views/window/dialog_delegate.h"
-
-namespace views {
-
-class TestDialogClientView : public DialogClientView {
- public:
- TestDialogClientView(View* contents_view,
- DialogDelegate* dialog_delegate)
- : DialogClientView(contents_view),
- dialog_(dialog_delegate) {}
- virtual ~TestDialogClientView() {}
-
- // DialogClientView implementation.
- virtual DialogDelegate* GetDialogDelegate() const override { return dialog_; }
-
- View* GetContentsView() { return contents_view(); }
-
- void CreateExtraViews() {
- CreateExtraView();
- CreateFootnoteView();
- }
-
- private:
- DialogDelegate* dialog_;
-
- DISALLOW_COPY_AND_ASSIGN(TestDialogClientView);
-};
-
-class DialogClientViewTest : public ViewsTestBase,
- public DialogDelegateView {
- public:
- DialogClientViewTest()
- : dialog_buttons_(ui::DIALOG_BUTTON_NONE),
- extra_view_(NULL),
- footnote_view_(NULL) {}
- virtual ~DialogClientViewTest() {}
-
- // testing::Test implementation.
- virtual void SetUp() override {
- dialog_buttons_ = ui::DIALOG_BUTTON_NONE;
- contents_.reset(new StaticSizedView(gfx::Size(100, 200)));
- client_view_.reset(new TestDialogClientView(contents_.get(), this));
-
- ViewsTestBase::SetUp();
- }
-
- // DialogDelegateView implementation.
- virtual View* GetContentsView() override { return contents_.get(); }
- virtual View* CreateExtraView() override { return extra_view_; }
- virtual View* CreateFootnoteView() override { return footnote_view_; }
- virtual int GetDialogButtons() const override { return dialog_buttons_; }
-
- protected:
- gfx::Rect GetUpdatedClientBounds() {
- client_view_->SizeToPreferredSize();
- client_view_->Layout();
- return client_view_->bounds();
- }
-
- // Makes sure that the content view is sized correctly. Width must be at least
- // the requested amount, but height should always match exactly.
- void CheckContentsIsSetToPreferredSize() {
- const gfx::Rect client_bounds = GetUpdatedClientBounds();
- const gfx::Size preferred_size = contents_->GetPreferredSize();
- EXPECT_EQ(preferred_size.height(), contents_->bounds().height());
- EXPECT_LE(preferred_size.width(), contents_->bounds().width());
- EXPECT_EQ(contents_->bounds().origin(), client_bounds.origin());
- EXPECT_EQ(contents_->bounds().right(), client_bounds.right());
- }
-
- // Sets the buttons to show in the dialog and refreshes the dialog.
- void SetDialogButtons(int dialog_buttons) {
- dialog_buttons_ = dialog_buttons;
- client_view_->UpdateDialogButtons();
- }
-
- // Sets the extra view.
- void SetExtraView(View* view) {
- DCHECK(!extra_view_);
- extra_view_ = view;
- client_view_->CreateExtraViews();
- }
-
- // Sets the footnote view.
- void SetFootnoteView(View* view) {
- DCHECK(!footnote_view_);
- footnote_view_ = view;
- client_view_->CreateExtraViews();
- }
-
- TestDialogClientView* client_view() { return client_view_.get(); }
-
- private:
- // The contents of the dialog.
- scoped_ptr<View> contents_;
- // The DialogClientView that's being tested.
- scoped_ptr<TestDialogClientView> client_view_;
- // The bitmask of buttons to show in the dialog.
- int dialog_buttons_;
- View* extra_view_; // weak
- View* footnote_view_; // weak
-
- DISALLOW_COPY_AND_ASSIGN(DialogClientViewTest);
-};
-
-TEST_F(DialogClientViewTest, UpdateButtons) {
- // This dialog should start with no buttons.
- EXPECT_EQ(GetDialogButtons(), ui::DIALOG_BUTTON_NONE);
- EXPECT_EQ(NULL, client_view()->ok_button());
- EXPECT_EQ(NULL, client_view()->cancel_button());
- const int height_without_buttons = GetUpdatedClientBounds().height();
-
- // Update to use both buttons.
- SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
- EXPECT_TRUE(client_view()->ok_button()->is_default());
- EXPECT_FALSE(client_view()->cancel_button()->is_default());
- const int height_with_buttons = GetUpdatedClientBounds().height();
- EXPECT_GT(height_with_buttons, height_without_buttons);
-
- // Remove the dialog buttons.
- SetDialogButtons(ui::DIALOG_BUTTON_NONE);
- EXPECT_EQ(NULL, client_view()->ok_button());
- EXPECT_EQ(NULL, client_view()->cancel_button());
- EXPECT_EQ(GetUpdatedClientBounds().height(), height_without_buttons);
-
- // Reset with just an ok button.
- SetDialogButtons(ui::DIALOG_BUTTON_OK);
- EXPECT_TRUE(client_view()->ok_button()->is_default());
- EXPECT_EQ(NULL, client_view()->cancel_button());
- EXPECT_EQ(GetUpdatedClientBounds().height(), height_with_buttons);
-
- // Reset with just a cancel button.
- SetDialogButtons(ui::DIALOG_BUTTON_CANCEL);
- EXPECT_EQ(NULL, client_view()->ok_button());
- EXPECT_TRUE(client_view()->cancel_button()->is_default());
- EXPECT_EQ(GetUpdatedClientBounds().height(), height_with_buttons);
-}
-
-TEST_F(DialogClientViewTest, RemoveAndUpdateButtons) {
- // Removing buttons from another context should clear the local pointer.
- SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
- delete client_view()->ok_button();
- EXPECT_EQ(NULL, client_view()->ok_button());
- delete client_view()->cancel_button();
- EXPECT_EQ(NULL, client_view()->cancel_button());
-
- // Updating should restore the requested buttons properly.
- SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
- EXPECT_TRUE(client_view()->ok_button()->is_default());
- EXPECT_FALSE(client_view()->cancel_button()->is_default());
-}
-
-// Test that the contents view gets its preferred size in the basic dialog
-// configuration.
-TEST_F(DialogClientViewTest, ContentsSize) {
- CheckContentsIsSetToPreferredSize();
- EXPECT_EQ(GetContentsView()->bounds().bottom(),
- client_view()->bounds().bottom());
-}
-
-// Test the effect of the button strip on layout.
-TEST_F(DialogClientViewTest, LayoutWithButtons) {
- SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
- CheckContentsIsSetToPreferredSize();
- EXPECT_LT(GetContentsView()->bounds().bottom(),
- client_view()->bounds().bottom());
- gfx::Size no_extra_view_size = client_view()->bounds().size();
-
- View* extra_view = new StaticSizedView(gfx::Size(200, 200));
- SetExtraView(extra_view);
- CheckContentsIsSetToPreferredSize();
- EXPECT_GT(client_view()->bounds().height(), no_extra_view_size.height());
- int width_of_extra_view = extra_view->bounds().width();
-
- // Visibility of extra view is respected.
- extra_view->SetVisible(false);
- CheckContentsIsSetToPreferredSize();
- EXPECT_EQ(no_extra_view_size.height(), client_view()->bounds().height());
- EXPECT_EQ(no_extra_view_size.width(), client_view()->bounds().width());
-
- // Try with a reduced-size dialog.
- extra_view->SetVisible(true);
- client_view()->SetBoundsRect(gfx::Rect(gfx::Point(0, 0), no_extra_view_size));
- client_view()->Layout();
- DCHECK_GT(width_of_extra_view, extra_view->bounds().width());
-}
-
-// Test the effect of the footnote view on layout.
-TEST_F(DialogClientViewTest, LayoutWithFootnote) {
- CheckContentsIsSetToPreferredSize();
- gfx::Size no_footnote_size = client_view()->bounds().size();
-
- View* footnote_view = new StaticSizedView(gfx::Size(200, 200));
- SetFootnoteView(footnote_view);
- CheckContentsIsSetToPreferredSize();
- EXPECT_GT(client_view()->bounds().height(), no_footnote_size.height());
- EXPECT_EQ(200, footnote_view->bounds().height());
- gfx::Size with_footnote_size = client_view()->bounds().size();
- EXPECT_EQ(with_footnote_size.width(), footnote_view->bounds().width());
-
- SetDialogButtons(ui::DIALOG_BUTTON_CANCEL);
- CheckContentsIsSetToPreferredSize();
- EXPECT_LE(with_footnote_size.height(), client_view()->bounds().height());
- EXPECT_LE(with_footnote_size.width(), client_view()->bounds().width());
- gfx::Size with_footnote_and_button_size = client_view()->bounds().size();
-
- SetDialogButtons(ui::DIALOG_BUTTON_NONE);
- footnote_view->SetVisible(false);
- CheckContentsIsSetToPreferredSize();
- EXPECT_EQ(no_footnote_size.height(), client_view()->bounds().height());
- EXPECT_EQ(no_footnote_size.width(), client_view()->bounds().width());
-}
-
-// Test that GetHeightForWidth is respected for the footnote view.
-TEST_F(DialogClientViewTest, LayoutWithFootnoteHeightForWidth) {
- CheckContentsIsSetToPreferredSize();
- gfx::Size no_footnote_size = client_view()->bounds().size();
-
- View* footnote_view = new ProportionallySizedView(3);
- SetFootnoteView(footnote_view);
- CheckContentsIsSetToPreferredSize();
- EXPECT_GT(client_view()->bounds().height(), no_footnote_size.height());
- EXPECT_EQ(footnote_view->bounds().width() * 3,
- footnote_view->bounds().height());
-}
-
-// Test that the DialogClientView's FocusManager is properly updated when the
-// DialogClientView belongs to a non top level widget and the widget is
-// reparented. The DialogClientView belongs to a non top level widget in the
-// case of constrained windows. The constrained window's widget is reparented
-// when a browser tab is dragged to a different browser window.
-TEST_F(DialogClientViewTest, FocusManager) {
- scoped_ptr<Widget> toplevel1(new Widget);
- Widget::InitParams toplevel1_params =
- CreateParams(Widget::InitParams::TYPE_WINDOW);
- toplevel1_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- toplevel1->Init(toplevel1_params);
-
- scoped_ptr<Widget> toplevel2(new Widget);
- Widget::InitParams toplevel2_params =
- CreateParams(Widget::InitParams::TYPE_WINDOW);
- toplevel2_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- toplevel2->Init(toplevel2_params);
-
- Widget* dialog = new Widget;
- Widget::InitParams dialog_params =
- CreateParams(Widget::InitParams::TYPE_WINDOW);
- dialog_params.child = true;
- dialog_params.delegate = new DialogDelegateView();
- dialog_params.parent = toplevel1->GetNativeView();
- dialog->Init(dialog_params);
-
- // Test that the FocusManager has been properly set when the DialogClientView
- // was parented to |dialog|.
- DialogClientView* client_view =
- static_cast<DialogClientView*>(dialog->client_view());
- EXPECT_EQ(toplevel1->GetFocusManager(), client_view->focus_manager_);
-
- // Test that the FocusManager is properly updated when the DialogClientView's
- // top level widget is changed.
- Widget::ReparentNativeView(dialog->GetNativeView(), NULL);
- EXPECT_EQ(NULL, client_view->focus_manager_);
- Widget::ReparentNativeView(dialog->GetNativeView(),
- toplevel2->GetNativeView());
- EXPECT_EQ(toplevel2->GetFocusManager(), client_view->focus_manager_);
- Widget::ReparentNativeView(dialog->GetNativeView(),
- toplevel1->GetNativeView());
- EXPECT_NE(toplevel1->GetFocusManager(), toplevel2->GetFocusManager());
- EXPECT_EQ(toplevel1->GetFocusManager(), client_view->focus_manager_);
-
- // Test that the FocusManager is properly cleared when the DialogClientView is
- // removed from |dialog| during the widget's destruction.
- client_view->set_owned_by_client();
- scoped_ptr<DialogClientView> owned_client_view(client_view);
- toplevel1->CloseNow();
- toplevel2->CloseNow();
- EXPECT_EQ(NULL, owned_client_view->focus_manager_);
-}
-
-} // namespace views
« no previous file with comments | « ui/views/window/dialog_client_view.cc ('k') | ui/views/window/dialog_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698