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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view_layout_unittest.cc

Issue 63173016: DevTools: place DevTools WebContents underneath inspected WebContents. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/ui/views/frame/browser_view_layout.h" 5 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
6 6
7 #include "chrome/browser/ui/views/frame/browser_view.h" 7 #include "chrome/browser/ui/views/frame/browser_view.h"
8 #include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h" 8 #include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h"
9 #include "chrome/browser/ui/views/frame/contents_container.h" 9 #include "chrome/browser/ui/views/frame/contents_layout_manager.h"
10 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" 10 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
11 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" 11 #include "chrome/browser/ui/views/infobars/infobar_container_view.h"
12 #include "chrome/browser/ui/views/tabs/tab_strip.h" 12 #include "chrome/browser/ui/views/tabs/tab_strip.h"
13 #include "chrome/test/base/browser_with_test_window_test.h" 13 #include "chrome/test/base/browser_with_test_window_test.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 class MockBrowserViewLayoutDelegate : public BrowserViewLayoutDelegate { 16 class MockBrowserViewLayoutDelegate : public BrowserViewLayoutDelegate {
17 public: 17 public:
18 MockBrowserViewLayoutDelegate() 18 MockBrowserViewLayoutDelegate()
19 : tab_strip_visible_(true), 19 : tab_strip_visible_(true),
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 /////////////////////////////////////////////////////////////////////////////// 128 ///////////////////////////////////////////////////////////////////////////////
129 // Tests of BrowserViewLayout. Runs tests without constructing a BrowserView. 129 // Tests of BrowserViewLayout. Runs tests without constructing a BrowserView.
130 class BrowserViewLayoutTest : public BrowserWithTestWindowTest { 130 class BrowserViewLayoutTest : public BrowserWithTestWindowTest {
131 public: 131 public:
132 BrowserViewLayoutTest() 132 BrowserViewLayoutTest()
133 : delegate_(NULL), 133 : delegate_(NULL),
134 top_container_(NULL), 134 top_container_(NULL),
135 tab_strip_(NULL), 135 tab_strip_(NULL),
136 toolbar_(NULL), 136 toolbar_(NULL),
137 infobar_container_(NULL), 137 infobar_container_(NULL),
138 contents_split_(NULL),
139 contents_container_(NULL), 138 contents_container_(NULL),
140 active_web_view_(NULL) {} 139 contents_web_view_(NULL),
140 devtools_web_view_(NULL) {}
141 virtual ~BrowserViewLayoutTest() {} 141 virtual ~BrowserViewLayoutTest() {}
142 142
143 BrowserViewLayout* layout() { return layout_.get(); } 143 BrowserViewLayout* layout() { return layout_.get(); }
144 MockBrowserViewLayoutDelegate* delegate() { return delegate_; } 144 MockBrowserViewLayoutDelegate* delegate() { return delegate_; }
145 MockView* root_view() { return root_view_.get(); } 145 MockView* root_view() { return root_view_.get(); }
146 MockView* top_container() { return top_container_; } 146 MockView* top_container() { return top_container_; }
147 TabStrip* tab_strip() { return tab_strip_; } 147 TabStrip* tab_strip() { return tab_strip_; }
148 MockView* toolbar() { return toolbar_; } 148 MockView* toolbar() { return toolbar_; }
149 InfoBarContainerView* infobar_container() { return infobar_container_; } 149 InfoBarContainerView* infobar_container() { return infobar_container_; }
150 MockView* contents_split() { return contents_split_; } 150 MockView* contents_container() { return contents_container_; }
151 ContentsContainer* contents_container() { return contents_container_; }
152 151
153 // BrowserWithTestWindowTest overrides: 152 // BrowserWithTestWindowTest overrides:
154 virtual void SetUp() OVERRIDE { 153 virtual void SetUp() OVERRIDE {
155 BrowserWithTestWindowTest::SetUp(); 154 BrowserWithTestWindowTest::SetUp();
156 155
157 root_view_.reset(new MockView(gfx::Size(800, 600))); 156 root_view_.reset(new MockView(gfx::Size(800, 600)));
158 157
159 immersive_mode_controller_.reset(new MockImmersiveModeController); 158 immersive_mode_controller_.reset(new MockImmersiveModeController);
160 159
161 top_container_ = new MockView(gfx::Size(800, 60)); 160 top_container_ = new MockView(gfx::Size(800, 60));
162 tab_strip_ = new TabStrip(NULL); 161 tab_strip_ = new TabStrip(NULL);
163 top_container_->AddChildView(tab_strip_); 162 top_container_->AddChildView(tab_strip_);
164 toolbar_ = new MockView(gfx::Size(800, 30)); 163 toolbar_ = new MockView(gfx::Size(800, 30));
165 top_container_->AddChildView(toolbar_); 164 top_container_->AddChildView(toolbar_);
166 root_view_->AddChildView(top_container_); 165 root_view_->AddChildView(top_container_);
167 166
168 infobar_container_ = new InfoBarContainerView(NULL); 167 infobar_container_ = new InfoBarContainerView(NULL);
169 root_view_->AddChildView(infobar_container_); 168 root_view_->AddChildView(infobar_container_);
170 169
171 contents_split_ = new MockView(gfx::Size(800, 600)); 170 contents_web_view_ = new MockView(gfx::Size(800, 600));
172 active_web_view_ = new MockView(gfx::Size(800, 600)); 171 devtools_web_view_ = new MockView(gfx::Size(800, 600));
173 contents_container_ = new ContentsContainer(active_web_view_); 172 devtools_web_view_->SetVisible(false);
174 contents_split_->AddChildView(contents_container_); 173
175 root_view_->AddChildView(contents_split_); 174 contents_container_ = new MockView(gfx::Size(800, 600));
175 contents_container_->AddChildView(devtools_web_view_);
176 contents_container_->AddChildView(contents_web_view_);
177 ContentsLayoutManager* contents_layout_manager =
178 new ContentsLayoutManager(devtools_web_view_, contents_web_view_);
179 contents_container_->SetLayoutManager(contents_layout_manager);
180
181 root_view_->AddChildView(contents_container_);
176 182
177 // TODO(jamescook): Attach |layout_| to |root_view_|? 183 // TODO(jamescook): Attach |layout_| to |root_view_|?
178 layout_.reset(new BrowserViewLayout); 184 layout_.reset(new BrowserViewLayout);
179 delegate_ = new MockBrowserViewLayoutDelegate; 185 delegate_ = new MockBrowserViewLayoutDelegate;
180 layout_->Init(delegate_, 186 layout_->Init(delegate_,
181 browser(), 187 browser(),
182 NULL, // BrowserView. 188 NULL, // BrowserView.
183 top_container_, 189 top_container_,
184 tab_strip_, 190 tab_strip_,
185 toolbar_, 191 toolbar_,
186 infobar_container_, 192 infobar_container_,
187 contents_split_,
188 contents_container_, 193 contents_container_,
194 contents_layout_manager,
189 immersive_mode_controller_.get()); 195 immersive_mode_controller_.get());
190 } 196 }
191 197
192 private: 198 private:
193 scoped_ptr<BrowserViewLayout> layout_; 199 scoped_ptr<BrowserViewLayout> layout_;
194 MockBrowserViewLayoutDelegate* delegate_; // Owned by |layout_|. 200 MockBrowserViewLayoutDelegate* delegate_; // Owned by |layout_|.
195 scoped_ptr<MockView> root_view_; 201 scoped_ptr<MockView> root_view_;
196 202
197 // Views owned by |root_view_|. 203 // Views owned by |root_view_|.
198 MockView* top_container_; 204 MockView* top_container_;
199 TabStrip* tab_strip_; 205 TabStrip* tab_strip_;
200 MockView* toolbar_; 206 MockView* toolbar_;
201 InfoBarContainerView* infobar_container_; 207 InfoBarContainerView* infobar_container_;
202 MockView* contents_split_; 208 MockView* contents_container_;
203 ContentsContainer* contents_container_; 209 MockView* contents_web_view_;
204 MockView* active_web_view_; 210 MockView* devtools_web_view_;
205 211
206 scoped_ptr<MockImmersiveModeController> immersive_mode_controller_; 212 scoped_ptr<MockImmersiveModeController> immersive_mode_controller_;
207 213
208 DISALLOW_COPY_AND_ASSIGN(BrowserViewLayoutTest); 214 DISALLOW_COPY_AND_ASSIGN(BrowserViewLayoutTest);
209 }; 215 };
210 216
211 // Test basic construction and initialization. 217 // Test basic construction and initialization.
212 TEST_F(BrowserViewLayoutTest, BrowserViewLayout) { 218 TEST_F(BrowserViewLayoutTest, BrowserViewLayout) {
213 EXPECT_TRUE(layout()->browser()); 219 EXPECT_TRUE(layout()->browser());
214 EXPECT_TRUE(layout()->GetWebContentsModalDialogHost()); 220 EXPECT_TRUE(layout()->GetWebContentsModalDialogHost());
215 EXPECT_FALSE(layout()->InfobarVisible()); 221 EXPECT_FALSE(layout()->InfobarVisible());
216 } 222 }
217 223
218 // Test the core layout functions. 224 // Test the core layout functions.
219 TEST_F(BrowserViewLayoutTest, Layout) { 225 TEST_F(BrowserViewLayoutTest, Layout) {
220 // Simulate a window with no interesting UI. 226 // Simulate a window with no interesting UI.
221 delegate()->set_tab_strip_visible(false); 227 delegate()->set_tab_strip_visible(false);
222 delegate()->set_toolbar_visible(false); 228 delegate()->set_toolbar_visible(false);
223 delegate()->set_bookmark_bar_visible(false); 229 delegate()->set_bookmark_bar_visible(false);
224 layout()->Layout(root_view()); 230 layout()->Layout(root_view());
225 231
226 // Top views are zero-height. 232 // Top views are zero-height.
227 EXPECT_EQ("0,0 0x0", tab_strip()->bounds().ToString()); 233 EXPECT_EQ("0,0 0x0", tab_strip()->bounds().ToString());
228 EXPECT_EQ("0,0 800x0", toolbar()->bounds().ToString()); 234 EXPECT_EQ("0,0 800x0", toolbar()->bounds().ToString());
229 EXPECT_EQ("0,0 800x0", infobar_container()->bounds().ToString()); 235 EXPECT_EQ("0,0 800x0", infobar_container()->bounds().ToString());
230 // Contents split fills the window. 236 // Contents split fills the window.
231 EXPECT_EQ("0,0 800x600", contents_split()->bounds().ToString()); 237 EXPECT_EQ("0,0 800x600", contents_container()->bounds().ToString());
232 238
233 // Turn on the toolbar, like in a pop-up window. 239 // Turn on the toolbar, like in a pop-up window.
234 delegate()->set_toolbar_visible(true); 240 delegate()->set_toolbar_visible(true);
235 layout()->Layout(root_view()); 241 layout()->Layout(root_view());
236 242
237 // Now the toolbar has bounds and other views shift down. 243 // Now the toolbar has bounds and other views shift down.
238 EXPECT_EQ("0,0 0x0", tab_strip()->bounds().ToString()); 244 EXPECT_EQ("0,0 0x0", tab_strip()->bounds().ToString());
239 EXPECT_EQ("0,0 800x30", toolbar()->bounds().ToString()); 245 EXPECT_EQ("0,0 800x30", toolbar()->bounds().ToString());
240 EXPECT_EQ("0,30 800x0", infobar_container()->bounds().ToString()); 246 EXPECT_EQ("0,30 800x0", infobar_container()->bounds().ToString());
241 EXPECT_EQ("0,30 800x570", contents_split()->bounds().ToString()); 247 EXPECT_EQ("0,30 800x570", contents_container()->bounds().ToString());
242 248
243 // TODO(jamescook): Tab strip and bookmark bar. 249 // TODO(jamescook): Tab strip and bookmark bar.
244 } 250 }
245 251
246 TEST_F(BrowserViewLayoutTest, LayoutDownloadShelf) { 252 TEST_F(BrowserViewLayoutTest, LayoutDownloadShelf) {
247 scoped_ptr<MockView> download_shelf(new MockView(gfx::Size(800, 50))); 253 scoped_ptr<MockView> download_shelf(new MockView(gfx::Size(800, 50)));
248 layout()->set_download_shelf(download_shelf.get()); 254 layout()->set_download_shelf(download_shelf.get());
249 255
250 // If download shelf doesn't need layout, it doesn't move the bottom edge. 256 // If download shelf doesn't need layout, it doesn't move the bottom edge.
251 delegate()->set_download_shelf_needs_layout(false); 257 delegate()->set_download_shelf_needs_layout(false);
252 const int kBottom = 500; 258 const int kBottom = 500;
253 EXPECT_EQ(kBottom, layout()->LayoutDownloadShelf(kBottom)); 259 EXPECT_EQ(kBottom, layout()->LayoutDownloadShelf(kBottom));
254 260
255 // Download shelf layout moves up the bottom edge and sets visibility. 261 // Download shelf layout moves up the bottom edge and sets visibility.
256 delegate()->set_download_shelf_needs_layout(true); 262 delegate()->set_download_shelf_needs_layout(true);
257 download_shelf->SetVisible(false); 263 download_shelf->SetVisible(false);
258 EXPECT_EQ(450, layout()->LayoutDownloadShelf(kBottom)); 264 EXPECT_EQ(450, layout()->LayoutDownloadShelf(kBottom));
259 EXPECT_TRUE(download_shelf->visible()); 265 EXPECT_TRUE(download_shelf->visible());
260 EXPECT_EQ("0,450 0x50", download_shelf->bounds().ToString()); 266 EXPECT_EQ("0,450 0x50", download_shelf->bounds().ToString());
261 } 267 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view_layout.cc ('k') | chrome/browser/ui/views/frame/browser_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698