Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 6 | 6 |
| 7 #import "base/mac/mac_util.h" | 7 #import "base/mac/mac_util.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/api/infobars/confirm_infobar_delegate.h" | |
| 11 #include "chrome/browser/api/infobars/infobar_service.h" | |
| 10 #include "chrome/browser/browser_process.h" | 12 #include "chrome/browser/browser_process.h" |
| 13 #include "chrome/browser/ui/browser_tabstrip.h" | |
| 11 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 12 #include "chrome/browser/profiles/profile_manager.h" | 15 #include "chrome/browser/profiles/profile_manager.h" |
| 13 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
| 14 #include "chrome/browser/ui/browser_window.h" | 17 #include "chrome/browser/ui/browser_window.h" |
| 15 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h" | 18 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h" |
| 19 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" | |
| 16 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h" | 20 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h" |
| 21 #import "chrome/browser/ui/cocoa/fast_resize_view.h" | |
| 22 #import "chrome/browser/ui/cocoa/nsview_additions.h" | |
| 23 #import "chrome/browser/ui/cocoa/tab_contents/previewable_contents_controller.h" | |
| 24 #include "chrome/browser/ui/search/search.h" | |
| 25 #include "chrome/browser/ui/search/search_model.h" | |
| 17 #include "chrome/test/base/in_process_browser_test.h" | 26 #include "chrome/test/base/in_process_browser_test.h" |
| 27 #include "content/public/browser/web_contents.h" | |
| 28 #import "testing/gtest_mac.h" | |
| 29 | |
| 30 namespace { | |
| 18 | 31 |
| 19 #if !defined(MAC_OS_X_VERSION_10_7) || \ | 32 #if !defined(MAC_OS_X_VERSION_10_7) || \ |
| 20 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 | 33 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 |
| 21 enum { | 34 enum { |
| 22 NSWindowDocumentVersionsButton = 6, | 35 NSWindowDocumentVersionsButton = 6, |
| 23 NSWindowFullScreenButton | 36 NSWindowFullScreenButton |
| 24 }; | 37 }; |
| 25 #endif // MAC_OS_X_VERSION_10_7 | 38 #endif // MAC_OS_X_VERSION_10_7 |
| 26 | 39 |
| 27 typedef InProcessBrowserTest BrowserWindowControllerTest; | |
| 28 | |
| 29 void CreateProfileCallback(const base::Closure& quit_closure, | 40 void CreateProfileCallback(const base::Closure& quit_closure, |
| 30 Profile* profile, | 41 Profile* profile, |
| 31 Profile::CreateStatus status) { | 42 Profile::CreateStatus status) { |
| 32 EXPECT_TRUE(profile); | 43 EXPECT_TRUE(profile); |
| 33 EXPECT_NE(Profile::CREATE_STATUS_FAIL, status); | 44 EXPECT_NE(Profile::CREATE_STATUS_FAIL, status); |
| 34 // This will be called multiple times. Wait until the profile is initialized | 45 // This will be called multiple times. Wait until the profile is initialized |
| 35 // fully to quit the loop. | 46 // fully to quit the loop. |
| 36 if (status == Profile::CREATE_STATUS_INITIALIZED) | 47 if (status == Profile::CREATE_STATUS_INITIALIZED) |
| 37 quit_closure.Run(); | 48 quit_closure.Run(); |
| 38 } | 49 } |
| 39 | 50 |
| 51 enum ViewID { | |
| 52 VIEW_ID_TOOLBAR, // 0 | |
|
dhollowa
2013/01/18 00:55:11
I'm not a fan of the numbers in the comments. I'd
sail
2013/01/18 01:37:09
Done.
Oops, that was just for debugging. Removed.
| |
| 53 VIEW_ID_BOOKMARK_BAR, // 1 | |
| 54 VIEW_ID_INFO_BAR, // 2 | |
| 55 VIEW_ID_FIND_BAR, // 3 | |
| 56 VIEW_ID_DOWNLOAD_SHELF, // 4 | |
| 57 VIEW_ID_TAB_CONTENT_AREA, // 5 | |
| 58 VIEW_ID_FULLSCREEN_FLOATING_BAR, // 6 | |
| 59 VIEW_ID_COUNT, | |
| 60 }; | |
| 61 | |
| 62 class DummyInfoBar : public ConfirmInfoBarDelegate { | |
|
dhollowa
2013/01/18 00:55:11
Small doc please.
sail
2013/01/18 01:37:09
Done.
| |
| 63 public: | |
| 64 DummyInfoBar(InfoBarService* service) : ConfirmInfoBarDelegate(service) { | |
|
dhollowa
2013/01/18 00:55:11
explicit
sail
2013/01/18 01:37:09
Done.
| |
| 65 } | |
| 66 | |
| 67 virtual ~DummyInfoBar() { | |
| 68 } | |
| 69 | |
| 70 virtual string16 GetMessageText() const OVERRIDE { | |
| 71 return string16(); | |
| 72 } | |
| 73 }; | |
|
dhollowa
2013/01/18 00:55:11
DISALLOW_...
sail
2013/01/18 01:37:09
Done.
| |
| 74 | |
| 75 } // namespace | |
| 76 | |
| 77 class BrowserWindowControllerTest : public InProcessBrowserTest { | |
| 78 public: | |
| 79 BrowserWindowControllerTest() : InProcessBrowserTest() { | |
| 80 } | |
| 81 | |
| 82 virtual void SetUpOnMainThread() OVERRIDE { | |
| 83 [[controller() bookmarkBarController] setStateAnimationsEnabled:NO]; | |
| 84 [[controller() bookmarkBarController] setInnerContentAnimationsEnabled:NO]; | |
| 85 } | |
| 86 | |
| 87 virtual void CleanUpOnMainThread() OVERRIDE { | |
| 88 if (web_contents_) | |
| 89 browser()->search_model()->set_web_contents(NULL); | |
| 90 } | |
| 91 | |
| 92 BrowserWindowController* controller() const { | |
| 93 return [BrowserWindowController browserWindowControllerForWindow: | |
| 94 browser()->window()->GetNativeWindow()]; | |
| 95 } | |
| 96 | |
| 97 void ShowInstantResults() { | |
| 98 chrome::search::EnableInstantExtendedAPIForTesting(); | |
| 99 web_contents_.reset(content::WebContents::Create( | |
| 100 content::WebContents::CreateParams(browser()->profile()))); | |
| 101 browser()->search_model()->set_web_contents(web_contents_.get()); | |
| 102 chrome::search::Mode mode(chrome::search::Mode::MODE_SEARCH_SUGGESTIONS, | |
| 103 chrome::search::Mode::ORIGIN_SEARCH); | |
| 104 browser()->search_model()->SetMode(mode); | |
| 105 EXPECT_TRUE(browser()->search_model()->mode().is_search_suggestions()); | |
| 106 EXPECT_TRUE([controller() isShowingInstantResults]); | |
| 107 } | |
| 108 | |
| 109 void ShowInstantNTP() { | |
| 110 chrome::search::EnableInstantExtendedAPIForTesting(); | |
| 111 web_contents_.reset(content::WebContents::Create( | |
| 112 content::WebContents::CreateParams(browser()->profile()))); | |
| 113 browser()->search_model()->set_web_contents(web_contents_.get()); | |
| 114 chrome::search::Mode mode(chrome::search::Mode::MODE_NTP, | |
| 115 chrome::search::Mode::ORIGIN_NTP); | |
| 116 browser()->search_model()->SetMode(mode); | |
| 117 EXPECT_TRUE(browser()->search_model()->mode().is_ntp()); | |
| 118 EXPECT_FALSE([controller() isShowingInstantResults]); | |
| 119 } | |
| 120 | |
| 121 void ShowInfoBar() { | |
| 122 content::WebContents* web_contents = | |
| 123 chrome::GetActiveWebContents(browser()); | |
| 124 InfoBarService* service = | |
| 125 InfoBarService::FromWebContents(web_contents); | |
| 126 service->AddInfoBar(scoped_ptr<InfoBarDelegate>(new DummyInfoBar(service))); | |
| 127 } | |
| 128 | |
| 129 NSView* GetViewWithID(ViewID view_id) const { | |
| 130 switch (view_id) { | |
| 131 case VIEW_ID_FULLSCREEN_FLOATING_BAR: | |
| 132 return [controller() floatingBarBackingView]; | |
| 133 case VIEW_ID_TOOLBAR: | |
| 134 return [[controller() toolbarController] view]; | |
| 135 case VIEW_ID_BOOKMARK_BAR: | |
| 136 return [[controller() bookmarkBarController] view]; | |
| 137 case VIEW_ID_INFO_BAR: | |
| 138 return [[controller() infoBarContainerController] view]; | |
| 139 case VIEW_ID_FIND_BAR: | |
| 140 return [[controller() findBarCocoaController] view]; | |
| 141 case VIEW_ID_DOWNLOAD_SHELF: | |
| 142 return [[controller() downloadShelf] view]; | |
| 143 case VIEW_ID_TAB_CONTENT_AREA: | |
| 144 return [controller() tabContentArea]; | |
| 145 default: | |
| 146 NOTREACHED(); | |
| 147 return nil; | |
| 148 } | |
| 149 } | |
| 150 | |
| 151 void VerifyZOrder(const std::vector<ViewID>& view_list) const { | |
| 152 for (size_t i = 0; i < view_list.size() - 1; ++i) { | |
| 153 NSView* bottom_view = GetViewWithID(view_list[i]); | |
| 154 NSView* top_view = GetViewWithID(view_list[i + 1]); | |
| 155 EXPECT_NSEQ([bottom_view superview], [top_view superview]); | |
| 156 EXPECT_TRUE([bottom_view cr_isBelowView:top_view]); | |
| 157 } | |
| 158 | |
| 159 // Views not in |view_list| must either be nil or not parented. | |
| 160 for (size_t i = 0; i < VIEW_ID_COUNT; ++i) { | |
| 161 if (std::find(view_list.begin(), view_list.end(), i) == view_list.end()) { | |
| 162 NSView* view = GetViewWithID(static_cast<ViewID>(i)); | |
| 163 EXPECT_TRUE(!view || ![view superview]); | |
| 164 } | |
| 165 } | |
| 166 } | |
| 167 | |
| 168 CGFloat GetViewHeight(ViewID viewID) const { | |
| 169 return NSHeight([GetViewWithID(viewID) frame]); | |
| 170 } | |
| 171 | |
| 172 private: | |
| 173 scoped_ptr<content::WebContents> web_contents_; | |
| 174 | |
| 175 DISALLOW_COPY_AND_ASSIGN(BrowserWindowControllerTest); | |
| 176 }; | |
| 177 | |
| 40 // Tests that adding the first profile moves the Lion fullscreen button over | 178 // Tests that adding the first profile moves the Lion fullscreen button over |
| 41 // correctly. | 179 // correctly. |
| 42 // DISABLED_ because it regularly times out: http://crbug.com/159002. | 180 // DISABLED_ because it regularly times out: http://crbug.com/159002. |
| 43 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, | 181 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, |
| 44 DISABLED_ProfileAvatarFullscreenButton) { | 182 DISABLED_ProfileAvatarFullscreenButton) { |
| 45 if (base::mac::IsOSSnowLeopard()) | 183 if (base::mac::IsOSSnowLeopard()) |
| 46 return; | 184 return; |
| 47 | 185 |
| 48 // Initialize the locals. | 186 // Initialize the locals. |
| 49 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 187 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 50 ASSERT_TRUE(profile_manager); | 188 ASSERT_TRUE(profile_manager); |
| 51 | 189 |
| 52 NSWindow* window = browser()->window()->GetNativeWindow(); | 190 NSWindow* window = browser()->window()->GetNativeWindow(); |
| 53 ASSERT_TRUE(window); | 191 ASSERT_TRUE(window); |
| 54 | 192 |
| 55 BrowserWindowController* controller = | |
| 56 static_cast<BrowserWindowCocoa*>(browser()->window())->cocoa_controller(); | |
| 57 | |
| 58 // With only one profile, the fullscreen button should be visible, but the | 193 // With only one profile, the fullscreen button should be visible, but the |
| 59 // avatar button should not. | 194 // avatar button should not. |
| 60 EXPECT_EQ(1u, profile_manager->GetNumberOfProfiles()); | 195 EXPECT_EQ(1u, profile_manager->GetNumberOfProfiles()); |
| 61 | 196 |
| 62 NSButton* fullscreen_button = | 197 NSButton* fullscreen_button = |
| 63 [window standardWindowButton:NSWindowFullScreenButton]; | 198 [window standardWindowButton:NSWindowFullScreenButton]; |
| 64 EXPECT_TRUE(fullscreen_button); | 199 EXPECT_TRUE(fullscreen_button); |
| 65 EXPECT_FALSE([fullscreen_button isHidden]); | 200 EXPECT_FALSE([fullscreen_button isHidden]); |
| 66 | 201 |
| 67 AvatarButtonController* avatar_controller = | 202 AvatarButtonController* avatar_controller = |
| 68 [controller avatarButtonController]; | 203 [controller() avatarButtonController]; |
| 69 NSView* avatar = [avatar_controller view]; | 204 NSView* avatar = [avatar_controller view]; |
| 70 EXPECT_TRUE(avatar); | 205 EXPECT_TRUE(avatar); |
| 71 EXPECT_TRUE([avatar isHidden]); | 206 EXPECT_TRUE([avatar isHidden]); |
| 72 | 207 |
| 73 // Create a profile asynchronously and run the loop until its creation | 208 // Create a profile asynchronously and run the loop until its creation |
| 74 // is complete. | 209 // is complete. |
| 75 base::RunLoop run_loop; | 210 base::RunLoop run_loop; |
| 76 | 211 |
| 77 ProfileManager::CreateCallback create_callback = | 212 ProfileManager::CreateCallback create_callback = |
| 78 base::Bind(&CreateProfileCallback, run_loop.QuitClosure()); | 213 base::Bind(&CreateProfileCallback, run_loop.QuitClosure()); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 93 EXPECT_EQ([avatar window], [fullscreen_button window]); | 228 EXPECT_EQ([avatar window], [fullscreen_button window]); |
| 94 | 229 |
| 95 // Make sure the visual order of the buttons is correct and that they don't | 230 // Make sure the visual order of the buttons is correct and that they don't |
| 96 // overlap. | 231 // overlap. |
| 97 NSRect avatar_frame = [avatar frame]; | 232 NSRect avatar_frame = [avatar frame]; |
| 98 NSRect fullscreen_frame = [fullscreen_button frame]; | 233 NSRect fullscreen_frame = [fullscreen_button frame]; |
| 99 | 234 |
| 100 EXPECT_LT(NSMinX(fullscreen_frame), NSMinX(avatar_frame)); | 235 EXPECT_LT(NSMinX(fullscreen_frame), NSMinX(avatar_frame)); |
| 101 EXPECT_LT(NSMaxX(fullscreen_frame), NSMinX(avatar_frame)); | 236 EXPECT_LT(NSMaxX(fullscreen_frame), NSMinX(avatar_frame)); |
| 102 } | 237 } |
| 238 | |
| 239 // Verify that in non-instant normal mode that the find bar and download shelf | |
| 240 // are above the content area. Everything else should be below it. | |
| 241 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormal) { | |
| 242 browser()->GetFindBarController(); // add find bar | |
| 243 | |
| 244 std::vector<ViewID> view_list; | |
| 245 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | |
| 246 view_list.push_back(VIEW_ID_TOOLBAR); | |
| 247 view_list.push_back(VIEW_ID_INFO_BAR); | |
| 248 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | |
| 249 view_list.push_back(VIEW_ID_FIND_BAR); | |
| 250 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | |
| 251 VerifyZOrder(view_list); | |
| 252 } | |
| 253 | |
| 254 // Verify that in non-instant presentation mode that the info bar is below the | |
| 255 // content are and everything else is above it. | |
| 256 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderPresentationMode) { | |
| 257 browser()->TogglePresentationMode(); | |
| 258 browser()->GetFindBarController(); // add find bar | |
| 259 | |
| 260 std::vector<ViewID> view_list; | |
| 261 view_list.push_back(VIEW_ID_INFO_BAR); | |
| 262 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | |
| 263 view_list.push_back(VIEW_ID_FULLSCREEN_FLOATING_BAR); | |
| 264 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | |
| 265 view_list.push_back(VIEW_ID_TOOLBAR); | |
| 266 view_list.push_back(VIEW_ID_FIND_BAR); | |
| 267 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | |
| 268 VerifyZOrder(view_list); | |
| 269 } | |
| 270 | |
| 271 // Normal mode with instant results showing. Should be same zorder as normal | |
| 272 // mode except find bar is below content area. | |
| 273 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormalInstant) { | |
| 274 ShowInstantResults(); | |
| 275 browser()->GetFindBarController(); // add find bar | |
| 276 | |
| 277 std::vector<ViewID> view_list; | |
| 278 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | |
| 279 view_list.push_back(VIEW_ID_TOOLBAR); | |
| 280 view_list.push_back(VIEW_ID_INFO_BAR); | |
| 281 view_list.push_back(VIEW_ID_FIND_BAR); | |
| 282 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | |
| 283 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | |
| 284 VerifyZOrder(view_list); | |
| 285 } | |
| 286 | |
| 287 // Presentation mode with instant results showing. Should be exact same as | |
| 288 // non-instant presentation mode. | |
| 289 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, | |
| 290 ZOrderInstantPresentationMode) { | |
| 291 browser()->TogglePresentationMode(); | |
| 292 ShowInstantResults(); | |
| 293 browser()->GetFindBarController(); // add find bar | |
| 294 | |
| 295 std::vector<ViewID> view_list; | |
| 296 view_list.push_back(VIEW_ID_INFO_BAR); | |
| 297 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | |
| 298 view_list.push_back(VIEW_ID_FULLSCREEN_FLOATING_BAR); | |
| 299 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | |
| 300 view_list.push_back(VIEW_ID_TOOLBAR); | |
| 301 view_list.push_back(VIEW_ID_FIND_BAR); | |
| 302 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | |
| 303 VerifyZOrder(view_list); | |
| 304 } | |
| 305 | |
| 306 // Verify that in non-instant presentation mode the content area is beneath | |
| 307 // the bookmark bar and info bar. | |
| 308 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ContentOffset) { | |
| 309 PreviewableContentsController* preview = | |
| 310 [controller() previewableContentsController]; | |
| 311 | |
| 312 // Just toolbar. | |
| 313 EXPECT_EQ(0, [preview previewOffset]); | |
| 314 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 315 | |
| 316 // Plus bookmark bar. | |
| 317 browser()->window()->ToggleBookmarkBar(); | |
| 318 EXPECT_EQ(0, [preview previewOffset]); | |
| 319 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR), | |
| 320 [preview activeContainerOffset]); | |
| 321 | |
| 322 // Plus info bar. | |
| 323 ShowInfoBar(); | |
| 324 EXPECT_EQ(0, [preview previewOffset]); | |
| 325 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR) + | |
| 326 GetViewHeight(VIEW_ID_INFO_BAR), | |
| 327 [preview activeContainerOffset]); | |
| 328 | |
| 329 // Minus bookmark bar. | |
| 330 browser()->window()->ToggleBookmarkBar(); | |
| 331 EXPECT_EQ(0, [preview previewOffset]); | |
| 332 EXPECT_EQ(GetViewHeight(VIEW_ID_INFO_BAR), [preview activeContainerOffset]); | |
| 333 } | |
| 334 | |
| 335 // Verify that in non-instant presentation mode the content area is beneath | |
| 336 // the info bar. | |
| 337 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, | |
| 338 ContentOffsetPresentationMode) { | |
| 339 browser()->TogglePresentationMode(); | |
| 340 PreviewableContentsController* preview = | |
| 341 [controller() previewableContentsController]; | |
| 342 | |
| 343 // Just toolbar. | |
| 344 EXPECT_EQ(0, [preview previewOffset]); | |
| 345 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 346 | |
| 347 // Plus bookmark bar. | |
| 348 browser()->window()->ToggleBookmarkBar(); | |
| 349 EXPECT_EQ(0, [preview previewOffset]); | |
| 350 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 351 | |
| 352 // Plus info bar. | |
| 353 ShowInfoBar(); | |
| 354 EXPECT_EQ(0, [preview previewOffset]); | |
| 355 EXPECT_EQ(GetViewHeight(VIEW_ID_INFO_BAR), [preview activeContainerOffset]); | |
| 356 | |
| 357 // Minus bookmark bar. | |
| 358 browser()->window()->ToggleBookmarkBar(); | |
| 359 EXPECT_EQ(0, [preview previewOffset]); | |
| 360 EXPECT_EQ(GetViewHeight(VIEW_ID_INFO_BAR), [preview activeContainerOffset]); | |
| 361 } | |
| 362 | |
| 363 // Verify that when showing instant results the content area overlaps the | |
| 364 // bookmark bar and info bar. | |
| 365 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ContentOffsetInstant) { | |
| 366 ShowInstantResults(); | |
| 367 PreviewableContentsController* preview = | |
| 368 [controller() previewableContentsController]; | |
| 369 | |
| 370 // Just toolbar. | |
| 371 EXPECT_EQ(0, [preview previewOffset]); | |
| 372 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 373 | |
| 374 // Plus bookmark bar. | |
| 375 browser()->window()->ToggleBookmarkBar(); | |
| 376 EXPECT_EQ(0, [preview previewOffset]); | |
| 377 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 378 | |
| 379 // Plus info bar. | |
| 380 ShowInfoBar(); | |
| 381 EXPECT_EQ(0, [preview previewOffset]); | |
| 382 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 383 | |
| 384 // Minus bookmark bar. | |
| 385 browser()->window()->ToggleBookmarkBar(); | |
| 386 EXPECT_EQ(0, [preview previewOffset]); | |
| 387 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 388 } | |
| 389 | |
| 390 // The instant NTP case is same as normal case except that the preview is | |
| 391 // also shifted down. | |
| 392 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ContentOffsetInstantNPT) { | |
| 393 ShowInstantNTP(); | |
| 394 PreviewableContentsController* preview = | |
| 395 [controller() previewableContentsController]; | |
| 396 | |
| 397 // Just toolbar. | |
| 398 EXPECT_EQ(0, [preview previewOffset]); | |
| 399 EXPECT_EQ(0, [preview activeContainerOffset]); | |
| 400 | |
| 401 // Plus bookmark bar. | |
| 402 browser()->window()->ToggleBookmarkBar(); | |
| 403 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR), | |
| 404 [preview previewOffset]); | |
| 405 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR), | |
| 406 [preview activeContainerOffset]); | |
| 407 | |
| 408 // Plus info bar. | |
| 409 ShowInfoBar(); | |
| 410 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR) + | |
| 411 GetViewHeight(VIEW_ID_INFO_BAR), | |
| 412 [preview previewOffset]); | |
| 413 EXPECT_EQ(GetViewHeight(VIEW_ID_BOOKMARK_BAR) + | |
| 414 GetViewHeight(VIEW_ID_INFO_BAR), | |
| 415 [preview activeContainerOffset]); | |
| 416 | |
| 417 // Minus bookmark bar. | |
| 418 browser()->window()->ToggleBookmarkBar(); | |
| 419 EXPECT_EQ(GetViewHeight(VIEW_ID_INFO_BAR), [preview previewOffset]); | |
| 420 EXPECT_EQ(GetViewHeight(VIEW_ID_INFO_BAR), [preview activeContainerOffset]); | |
| 421 } | |
| OLD | NEW |