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

Side by Side Diff: ui/views/window/dialog_client_view_unittest.cc

Issue 1141253002: [Views] Allow dialog delegates to use a custom padding for the extra view (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "ui/base/ui_base_types.h" 7 #include "ui/base/ui_base_types.h"
8 #include "ui/views/controls/button/label_button.h" 8 #include "ui/views/controls/button/label_button.h"
9 #include "ui/views/test/test_views.h" 9 #include "ui/views/test/test_views.h"
10 #include "ui/views/test/views_test_base.h" 10 #include "ui/views/test/views_test_base.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 dialog_buttons_ = ui::DIALOG_BUTTON_NONE; 52 dialog_buttons_ = ui::DIALOG_BUTTON_NONE;
53 contents_.reset(new StaticSizedView(gfx::Size(100, 200))); 53 contents_.reset(new StaticSizedView(gfx::Size(100, 200)));
54 client_view_.reset(new TestDialogClientView(contents_.get(), this)); 54 client_view_.reset(new TestDialogClientView(contents_.get(), this));
55 55
56 ViewsTestBase::SetUp(); 56 ViewsTestBase::SetUp();
57 } 57 }
58 58
59 // DialogDelegateView implementation. 59 // DialogDelegateView implementation.
60 View* GetContentsView() override { return contents_.get(); } 60 View* GetContentsView() override { return contents_.get(); }
61 View* CreateExtraView() override { return extra_view_; } 61 View* CreateExtraView() override { return extra_view_; }
62 bool GetExtraViewPadding(int* padding) override {
63 if (extra_view_padding_)
64 *padding = *extra_view_padding_;
65 return extra_view_padding_.get() != nullptr;
66 }
62 View* CreateFootnoteView() override { return footnote_view_; } 67 View* CreateFootnoteView() override { return footnote_view_; }
63 int GetDialogButtons() const override { return dialog_buttons_; } 68 int GetDialogButtons() const override { return dialog_buttons_; }
64 69
65 protected: 70 protected:
66 gfx::Rect GetUpdatedClientBounds() { 71 gfx::Rect GetUpdatedClientBounds() {
67 client_view_->SizeToPreferredSize(); 72 client_view_->SizeToPreferredSize();
68 client_view_->Layout(); 73 client_view_->Layout();
69 return client_view_->bounds(); 74 return client_view_->bounds();
70 } 75 }
71 76
(...skipping 14 matching lines...) Expand all
86 client_view_->UpdateDialogButtons(); 91 client_view_->UpdateDialogButtons();
87 } 92 }
88 93
89 // Sets the extra view. 94 // Sets the extra view.
90 void SetExtraView(View* view) { 95 void SetExtraView(View* view) {
91 DCHECK(!extra_view_); 96 DCHECK(!extra_view_);
92 extra_view_ = view; 97 extra_view_ = view;
93 client_view_->CreateExtraViews(); 98 client_view_->CreateExtraViews();
94 } 99 }
95 100
101 // Sets the extra view padding.
102 void SetExtraViewPadding(int padding) {
103 DCHECK(!extra_view_padding_);
104 extra_view_padding_.reset(new int(padding));
105 client_view_->Layout();
106 }
107
96 // Sets the footnote view. 108 // Sets the footnote view.
97 void SetFootnoteView(View* view) { 109 void SetFootnoteView(View* view) {
98 DCHECK(!footnote_view_); 110 DCHECK(!footnote_view_);
99 footnote_view_ = view; 111 footnote_view_ = view;
100 client_view_->CreateExtraViews(); 112 client_view_->CreateExtraViews();
101 } 113 }
102 114
103 TestDialogClientView* client_view() { return client_view_.get(); } 115 TestDialogClientView* client_view() { return client_view_.get(); }
104 116
105 private: 117 private:
106 // The contents of the dialog. 118 // The contents of the dialog.
107 scoped_ptr<View> contents_; 119 scoped_ptr<View> contents_;
108 // The DialogClientView that's being tested. 120 // The DialogClientView that's being tested.
109 scoped_ptr<TestDialogClientView> client_view_; 121 scoped_ptr<TestDialogClientView> client_view_;
110 // The bitmask of buttons to show in the dialog. 122 // The bitmask of buttons to show in the dialog.
111 int dialog_buttons_; 123 int dialog_buttons_;
112 View* extra_view_; // weak 124 View* extra_view_; // weak
125 scoped_ptr<int> extra_view_padding_; // Null by default.
113 View* footnote_view_; // weak 126 View* footnote_view_; // weak
114 127
115 DISALLOW_COPY_AND_ASSIGN(DialogClientViewTest); 128 DISALLOW_COPY_AND_ASSIGN(DialogClientViewTest);
116 }; 129 };
117 130
118 TEST_F(DialogClientViewTest, UpdateButtons) { 131 TEST_F(DialogClientViewTest, UpdateButtons) {
119 // This dialog should start with no buttons. 132 // This dialog should start with no buttons.
120 EXPECT_EQ(GetDialogButtons(), ui::DIALOG_BUTTON_NONE); 133 EXPECT_EQ(GetDialogButtons(), ui::DIALOG_BUTTON_NONE);
121 EXPECT_EQ(NULL, client_view()->ok_button()); 134 EXPECT_EQ(NULL, client_view()->ok_button());
122 EXPECT_EQ(NULL, client_view()->cancel_button()); 135 EXPECT_EQ(NULL, client_view()->cancel_button());
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL); 188 SetDialogButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
176 CheckContentsIsSetToPreferredSize(); 189 CheckContentsIsSetToPreferredSize();
177 EXPECT_LT(GetContentsView()->bounds().bottom(), 190 EXPECT_LT(GetContentsView()->bounds().bottom(),
178 client_view()->bounds().bottom()); 191 client_view()->bounds().bottom());
179 gfx::Size no_extra_view_size = client_view()->bounds().size(); 192 gfx::Size no_extra_view_size = client_view()->bounds().size();
180 193
181 View* extra_view = new StaticSizedView(gfx::Size(200, 200)); 194 View* extra_view = new StaticSizedView(gfx::Size(200, 200));
182 SetExtraView(extra_view); 195 SetExtraView(extra_view);
183 CheckContentsIsSetToPreferredSize(); 196 CheckContentsIsSetToPreferredSize();
184 EXPECT_GT(client_view()->bounds().height(), no_extra_view_size.height()); 197 EXPECT_GT(client_view()->bounds().height(), no_extra_view_size.height());
198 int width_of_dialog = client_view()->bounds().width();
185 int width_of_extra_view = extra_view->bounds().width(); 199 int width_of_extra_view = extra_view->bounds().width();
186 200
201 // Try with an adjusted padding for the extra view.
202 SetExtraViewPadding(250);
203 CheckContentsIsSetToPreferredSize();
204 EXPECT_GT(client_view()->bounds().width(), width_of_dialog);
205
187 // Visibility of extra view is respected. 206 // Visibility of extra view is respected.
188 extra_view->SetVisible(false); 207 extra_view->SetVisible(false);
189 CheckContentsIsSetToPreferredSize(); 208 CheckContentsIsSetToPreferredSize();
190 EXPECT_EQ(no_extra_view_size.height(), client_view()->bounds().height()); 209 EXPECT_EQ(no_extra_view_size.height(), client_view()->bounds().height());
191 EXPECT_EQ(no_extra_view_size.width(), client_view()->bounds().width()); 210 EXPECT_EQ(no_extra_view_size.width(), client_view()->bounds().width());
192 211
193 // Try with a reduced-size dialog. 212 // Try with a reduced-size dialog.
194 extra_view->SetVisible(true); 213 extra_view->SetVisible(true);
195 client_view()->SetBoundsRect(gfx::Rect(gfx::Point(0, 0), no_extra_view_size)); 214 client_view()->SetBoundsRect(gfx::Rect(gfx::Point(0, 0), no_extra_view_size));
196 client_view()->Layout(); 215 client_view()->Layout();
197 DCHECK_GT(width_of_extra_view, extra_view->bounds().width()); 216 EXPECT_GT(width_of_extra_view, extra_view->bounds().width());
198 } 217 }
199 218
200 // Test the effect of the footnote view on layout. 219 // Test the effect of the footnote view on layout.
201 TEST_F(DialogClientViewTest, LayoutWithFootnote) { 220 TEST_F(DialogClientViewTest, LayoutWithFootnote) {
202 CheckContentsIsSetToPreferredSize(); 221 CheckContentsIsSetToPreferredSize();
203 gfx::Size no_footnote_size = client_view()->bounds().size(); 222 gfx::Size no_footnote_size = client_view()->bounds().size();
204 223
205 View* footnote_view = new StaticSizedView(gfx::Size(200, 200)); 224 View* footnote_view = new StaticSizedView(gfx::Size(200, 200));
206 SetFootnoteView(footnote_view); 225 SetFootnoteView(footnote_view);
207 CheckContentsIsSetToPreferredSize(); 226 CheckContentsIsSetToPreferredSize();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // Test that the FocusManager is properly cleared when the DialogClientView is 302 // Test that the FocusManager is properly cleared when the DialogClientView is
284 // removed from |dialog| during the widget's destruction. 303 // removed from |dialog| during the widget's destruction.
285 client_view->set_owned_by_client(); 304 client_view->set_owned_by_client();
286 scoped_ptr<DialogClientView> owned_client_view(client_view); 305 scoped_ptr<DialogClientView> owned_client_view(client_view);
287 toplevel1->CloseNow(); 306 toplevel1->CloseNow();
288 toplevel2->CloseNow(); 307 toplevel2->CloseNow();
289 EXPECT_EQ(NULL, owned_client_view->focus_manager_); 308 EXPECT_EQ(NULL, owned_client_view->focus_manager_);
290 } 309 }
291 310
292 } // namespace views 311 } // namespace views
OLDNEW
« 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