OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/i18n/time_formatting.h" | 5 #include "base/i18n/time_formatting.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "chrome/browser/extensions/extension_service.h" | 7 #include "chrome/browser/extensions/extension_service.h" |
8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/ui/browser_window.h" | 9 #include "chrome/browser/ui/browser_window.h" |
10 #include "chrome/browser/ui/panels/base_panel_browser_test.h" | 10 #include "chrome/browser/ui/panels/base_panel_browser_test.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 GdkEvent event; | 53 GdkEvent event; |
54 event.type = GDK_MOTION_NOTIFY; | 54 event.type = GDK_MOTION_NOTIFY; |
55 DidProcessEvent(&event); | 55 DidProcessEvent(&event); |
56 #endif | 56 #endif |
57 } | 57 } |
58 | 58 |
59 private: | 59 private: |
60 bool is_cursor_in_view_; | 60 bool is_cursor_in_view_; |
61 }; | 61 }; |
62 | 62 |
63 PanelBrowserView* GetBrowserView(Panel* panel) { | 63 PanelBrowserView* GetBrowserView(Panel* panel) const { |
64 return static_cast<PanelBrowserView*>(panel->native_panel()); | 64 return static_cast<PanelBrowserView*>(panel->native_panel()); |
65 } | 65 } |
66 | 66 |
67 void WaitTillBoundsAnimationFinished(PanelBrowserView* browser_view) { | 67 gfx::Rect GetViewBounds(Panel* panel) const { |
| 68 return GetBrowserView(panel)->GetBounds(); |
| 69 } |
| 70 |
| 71 void SetViewBounds(Panel* panel, const gfx::Rect& rect) const { |
| 72 return GetBrowserView(panel)->SetPanelBounds(rect); |
| 73 } |
| 74 |
| 75 gfx::NativeWindow GetNativeWindow(Panel* panel) const { |
| 76 return GetBrowserView(panel)->GetNativeHandle(); |
| 77 } |
| 78 |
| 79 ui::SlideAnimation* GetBoundsAnimator(Panel* panel) const { |
| 80 return GetBrowserView(panel)->bounds_animator_.get(); |
| 81 } |
| 82 |
| 83 ui::SlideAnimation* GetSettingsButtonAnimator(Panel* panel) const { |
| 84 return GetBrowserView(panel)->GetFrameView()-> |
| 85 settings_button_animator_.get(); |
| 86 } |
| 87 |
| 88 int GetTitlebarHeight(Panel* panel) const { |
| 89 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView(); |
| 90 return frame_view->NonClientTopBorderHeight() - |
| 91 frame_view->NonClientBorderThickness(); |
| 92 } |
| 93 |
| 94 MockMouseWatcher* CreateTitlebarMouseWatcher(Panel* panel) { |
| 95 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView(); |
| 96 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view); |
| 97 frame_view->set_mouse_watcher(mouse_watcher); |
| 98 return mouse_watcher; |
| 99 } |
| 100 |
| 101 PanelBrowserFrameView::PaintState GetTitlebarPaintState(Panel* panel) const { |
| 102 return GetBrowserView(panel)->GetFrameView()->paint_state_; |
| 103 } |
| 104 |
| 105 bool IsTitlebarPaintedAsActive(Panel* panel) const { |
| 106 return GetTitlebarPaintState(panel) == |
| 107 PanelBrowserFrameView::PAINT_AS_ACTIVE; |
| 108 } |
| 109 |
| 110 bool IsTitlebarPaintedAsInactive(Panel* panel) const { |
| 111 return GetTitlebarPaintState(panel) == |
| 112 PanelBrowserFrameView::PAINT_AS_INACTIVE; |
| 113 } |
| 114 |
| 115 bool IsTitlebarPaintedForAttention(Panel* panel) const { |
| 116 return GetTitlebarPaintState(panel) == |
| 117 PanelBrowserFrameView::PAINT_FOR_ATTENTION; |
| 118 } |
| 119 |
| 120 int GetControlCount(Panel* panel) const { |
| 121 return GetBrowserView(panel)->GetFrameView()->child_count(); |
| 122 } |
| 123 |
| 124 TabIconView* GetTitleIcon(Panel* panel) const { |
| 125 return GetBrowserView(panel)->GetFrameView()->title_icon_; |
| 126 } |
| 127 |
| 128 views::Label* GetTitleText(Panel* panel) const { |
| 129 return GetBrowserView(panel)->GetFrameView()->title_label_; |
| 130 } |
| 131 |
| 132 views::Button* GetSettingsButton(Panel* panel) const { |
| 133 return GetBrowserView(panel)->GetFrameView()->settings_button_; |
| 134 } |
| 135 |
| 136 views::Button* GetCloseButton(Panel* panel) const { |
| 137 return GetBrowserView(panel)->GetFrameView()->close_button_; |
| 138 } |
| 139 |
| 140 bool ContainsControl(Panel* panel, views::View* control) const { |
| 141 return GetBrowserView(panel)->GetFrameView()->Contains(control); |
| 142 } |
| 143 |
| 144 void WaitTillBoundsAnimationFinished(Panel* panel) { |
68 // The timer for the animation will only kick in as async task. | 145 // The timer for the animation will only kick in as async task. |
69 while (browser_view->bounds_animator_->is_animating()) { | 146 while (GetBoundsAnimator(panel)->is_animating()) { |
70 MessageLoopForUI::current()->PostTask(FROM_HERE, | 147 MessageLoopForUI::current()->PostTask(FROM_HERE, |
71 new MessageLoop::QuitTask()); | 148 new MessageLoop::QuitTask()); |
72 MessageLoopForUI::current()->RunAllPending(); | 149 MessageLoopForUI::current()->RunAllPending(); |
73 } | 150 } |
74 } | 151 } |
75 | 152 |
76 void WaitTillSettingsAnimationFinished(PanelBrowserFrameView* frame_view) { | 153 void WaitTillSettingsAnimationFinished(Panel* panel) { |
77 // The timer for the animation will only kick in as async task. | 154 // The timer for the animation will only kick in as async task. |
78 while (frame_view->settings_button_animator_->is_animating()) { | 155 while (GetSettingsButtonAnimator(panel)->is_animating()) { |
79 MessageLoopForUI::current()->PostTask(FROM_HERE, | 156 MessageLoopForUI::current()->PostTask(FROM_HERE, |
80 new MessageLoop::QuitTask()); | 157 new MessageLoop::QuitTask()); |
81 MessageLoopForUI::current()->RunAllPending(); | 158 MessageLoopForUI::current()->RunAllPending(); |
82 } | 159 } |
83 } | 160 } |
84 | 161 |
85 void TestShowPanelActiveOrInactive() { | |
86 CreatePanelParams params1("PanelTest1", gfx::Rect(), SHOW_AS_ACTIVE); | |
87 Panel* panel1 = CreatePanelWithParams(params1); | |
88 PanelBrowserView* browser_view1 = GetBrowserView(panel1); | |
89 PanelBrowserFrameView* frame_view1 = browser_view1->GetFrameView(); | |
90 EXPECT_TRUE(panel1->IsActive()); | |
91 EXPECT_EQ(PanelBrowserFrameView::PAINT_AS_ACTIVE, | |
92 frame_view1->paint_state_); | |
93 | |
94 CreatePanelParams params2("PanelTest2", gfx::Rect(), SHOW_AS_INACTIVE); | |
95 Panel* panel2 = CreatePanelWithParams(params2); | |
96 PanelBrowserView* browser_view2 = GetBrowserView(panel2); | |
97 PanelBrowserFrameView* frame_view2 = browser_view2->GetFrameView(); | |
98 EXPECT_FALSE(panel2->IsActive()); | |
99 EXPECT_EQ(PanelBrowserFrameView::PAINT_AS_INACTIVE, | |
100 frame_view2->paint_state_); | |
101 | |
102 panel1->Close(); | |
103 panel2->Close(); | |
104 } | |
105 | |
106 // We put all the testing logic in this class instead of the test so that | 162 // We put all the testing logic in this class instead of the test so that |
107 // we do not need to declare each new test as a friend of PanelBrowserView | 163 // we do not need to declare each new test as a friend of PanelBrowserView |
108 // for the purpose of accessing its private members. | 164 // for the purpose of accessing its private members. |
109 void TestMinimizeAndRestore(bool enable_auto_hiding) { | 165 void TestMinimizeAndRestore(bool enable_auto_hiding) { |
110 PanelManager* panel_manager = PanelManager::GetInstance(); | 166 PanelManager* panel_manager = PanelManager::GetInstance(); |
111 int expected_bottom_on_minimized = testing_work_area().height(); | 167 int expected_bottom_on_minimized = testing_work_area().height(); |
112 int expected_bottom_on_unminimized = expected_bottom_on_minimized; | 168 int expected_bottom_on_unminimized = expected_bottom_on_minimized; |
113 | 169 |
114 // Turn on auto-hiding if requested. | 170 // Turn on auto-hiding if requested. |
115 static const int bottom_thickness = 40; | 171 static const int bottom_thickness = 40; |
(...skipping 14 matching lines...) Expand all Loading... |
130 EXPECT_EQ(0, panel_manager->minimized_panel_count()); | 186 EXPECT_EQ(0, panel_manager->minimized_panel_count()); |
131 int initial_height = panel1->GetBounds().height(); | 187 int initial_height = panel1->GetBounds().height(); |
132 int titlebar_height = frame_view1->NonClientTopBorderHeight(); | 188 int titlebar_height = frame_view1->NonClientTopBorderHeight(); |
133 | 189 |
134 panel1->SetExpansionState(Panel::MINIMIZED); | 190 panel1->SetExpansionState(Panel::MINIMIZED); |
135 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); | 191 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
136 EXPECT_LT(panel1->GetBounds().height(), titlebar_height); | 192 EXPECT_LT(panel1->GetBounds().height(), titlebar_height); |
137 EXPECT_GT(panel1->GetBounds().height(), 0); | 193 EXPECT_GT(panel1->GetBounds().height(), 0); |
138 EXPECT_EQ(expected_bottom_on_minimized, panel1->GetBounds().bottom()); | 194 EXPECT_EQ(expected_bottom_on_minimized, panel1->GetBounds().bottom()); |
139 EXPECT_EQ(1, panel_manager->minimized_panel_count()); | 195 EXPECT_EQ(1, panel_manager->minimized_panel_count()); |
140 WaitTillBoundsAnimationFinished(browser_view1); | 196 WaitTillBoundsAnimationFinished(panel1); |
141 EXPECT_FALSE(panel1->IsActive()); | 197 EXPECT_FALSE(panel1->IsActive()); |
142 | 198 |
143 panel1->SetExpansionState(Panel::TITLE_ONLY); | 199 panel1->SetExpansionState(Panel::TITLE_ONLY); |
144 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); | 200 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
145 EXPECT_EQ(titlebar_height, panel1->GetBounds().height()); | 201 EXPECT_EQ(titlebar_height, panel1->GetBounds().height()); |
146 EXPECT_EQ(expected_bottom_on_unminimized, panel1->GetBounds().bottom()); | 202 EXPECT_EQ(expected_bottom_on_unminimized, panel1->GetBounds().bottom()); |
147 EXPECT_EQ(1, panel_manager->minimized_panel_count()); | 203 EXPECT_EQ(1, panel_manager->minimized_panel_count()); |
148 WaitTillBoundsAnimationFinished(browser_view1); | 204 WaitTillBoundsAnimationFinished(panel1); |
149 EXPECT_TRUE(frame_view1->close_button_->IsVisible()); | 205 EXPECT_TRUE(frame_view1->close_button_->IsVisible()); |
150 EXPECT_TRUE(frame_view1->title_icon_->IsVisible()); | 206 EXPECT_TRUE(frame_view1->title_icon_->IsVisible()); |
151 EXPECT_TRUE(frame_view1->title_label_->IsVisible()); | 207 EXPECT_TRUE(frame_view1->title_label_->IsVisible()); |
152 | 208 |
153 panel1->SetExpansionState(Panel::EXPANDED); | 209 panel1->SetExpansionState(Panel::EXPANDED); |
154 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); | 210 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
155 EXPECT_EQ(initial_height, panel1->GetBounds().height()); | 211 EXPECT_EQ(initial_height, panel1->GetBounds().height()); |
156 EXPECT_EQ(expected_bottom_on_unminimized, panel1->GetBounds().bottom()); | 212 EXPECT_EQ(expected_bottom_on_unminimized, panel1->GetBounds().bottom()); |
157 EXPECT_EQ(0, panel_manager->minimized_panel_count()); | 213 EXPECT_EQ(0, panel_manager->minimized_panel_count()); |
158 WaitTillBoundsAnimationFinished(browser_view1); | 214 WaitTillBoundsAnimationFinished(panel1); |
159 EXPECT_TRUE(frame_view1->close_button_->IsVisible()); | 215 EXPECT_TRUE(frame_view1->close_button_->IsVisible()); |
160 EXPECT_TRUE(frame_view1->title_icon_->IsVisible()); | 216 EXPECT_TRUE(frame_view1->title_icon_->IsVisible()); |
161 EXPECT_TRUE(frame_view1->title_label_->IsVisible()); | 217 EXPECT_TRUE(frame_view1->title_label_->IsVisible()); |
162 | 218 |
163 panel1->SetExpansionState(Panel::MINIMIZED); | 219 panel1->SetExpansionState(Panel::MINIMIZED); |
164 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); | 220 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
165 EXPECT_LT(panel1->GetBounds().height(), titlebar_height); | 221 EXPECT_LT(panel1->GetBounds().height(), titlebar_height); |
166 EXPECT_GT(panel1->GetBounds().height(), 0); | 222 EXPECT_GT(panel1->GetBounds().height(), 0); |
167 EXPECT_EQ(expected_bottom_on_minimized, panel1->GetBounds().bottom()); | 223 EXPECT_EQ(expected_bottom_on_minimized, panel1->GetBounds().bottom()); |
168 EXPECT_EQ(1, panel_manager->minimized_panel_count()); | 224 EXPECT_EQ(1, panel_manager->minimized_panel_count()); |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 panel->GetBounds().bottom()); | 382 panel->GetBounds().bottom()); |
327 EXPECT_EQ(testing_work_area().right() - right_bar_thickness, | 383 EXPECT_EQ(testing_work_area().right() - right_bar_thickness, |
328 panel->GetBounds().right()); | 384 panel->GetBounds().right()); |
329 | 385 |
330 panel->Close(); | 386 panel->Close(); |
331 } | 387 } |
332 }; | 388 }; |
333 | 389 |
334 // Panel is not supported for Linux view yet. | 390 // Panel is not supported for Linux view yet. |
335 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS) | 391 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS) |
336 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) { | 392 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanelBasic) { |
337 Panel* panel = CreatePanel("PanelTest"); | 393 CreatePanelParams params( |
338 PanelBrowserView* browser_view = GetBrowserView(panel); | 394 "PanelTest", gfx::Rect(0, 0, 200, 150), SHOW_AS_ACTIVE); |
339 PanelBrowserFrameView* frame_view = browser_view->GetFrameView(); | 395 Panel* panel = CreatePanelWithParams(params); |
340 | 396 |
341 // The bounds animation should not be triggered when the panel is up for the | 397 // Validate basic window properties. |
342 // first time. | 398 #if defined(OS_WIN) |
343 EXPECT_FALSE(browser_view->bounds_animator_.get()); | 399 HWND native_window = GetNativeWindow(panel); |
344 | 400 |
345 // We should have icon, text, settings button and close button. | 401 RECT window_rect; |
346 EXPECT_EQ(4, frame_view->child_count()); | 402 EXPECT_TRUE(::GetWindowRect(native_window, &window_rect)); |
347 EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_)); | 403 EXPECT_EQ(200, window_rect.right - window_rect.left); |
348 EXPECT_TRUE(frame_view->Contains(frame_view->title_label_)); | 404 EXPECT_EQ(150, window_rect.bottom - window_rect.top); |
349 EXPECT_TRUE(frame_view->Contains(frame_view->settings_button_)); | |
350 EXPECT_TRUE(frame_view->Contains(frame_view->close_button_)); | |
351 | 405 |
352 // These controls should be visible. | 406 EXPECT_TRUE(::IsWindowVisible(native_window)); |
353 EXPECT_TRUE(frame_view->title_icon_->IsVisible()); | 407 #endif |
354 EXPECT_TRUE(frame_view->title_label_->IsVisible()); | |
355 EXPECT_TRUE(frame_view->close_button_->IsVisible()); | |
356 | |
357 // Validate their layouts. | |
358 int titlebar_height = frame_view->NonClientTopBorderHeight() - | |
359 frame_view->NonClientBorderThickness(); | |
360 EXPECT_GT(frame_view->title_icon_->width(), 0); | |
361 EXPECT_GT(frame_view->title_icon_->height(), 0); | |
362 EXPECT_LT(frame_view->title_icon_->height(), titlebar_height); | |
363 EXPECT_GT(frame_view->title_label_->width(), 0); | |
364 EXPECT_GT(frame_view->title_label_->height(), 0); | |
365 EXPECT_LT(frame_view->title_label_->height(), titlebar_height); | |
366 EXPECT_GT(frame_view->settings_button_->width(), 0); | |
367 EXPECT_GT(frame_view->settings_button_->height(), 0); | |
368 EXPECT_LT(frame_view->settings_button_->height(), titlebar_height); | |
369 EXPECT_GT(frame_view->close_button_->width(), 0); | |
370 EXPECT_GT(frame_view->close_button_->height(), 0); | |
371 EXPECT_LT(frame_view->close_button_->height(), titlebar_height); | |
372 EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(), | |
373 frame_view->title_label_->x()); | |
374 EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(), | |
375 frame_view->settings_button_->x()); | |
376 EXPECT_LT( | |
377 frame_view->settings_button_->x() + frame_view->settings_button_->width(), | |
378 frame_view->close_button_->x()); | |
379 | |
380 // Validate that the controls should be updated when the activation state is | |
381 // changed. | |
382 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_ACTIVE); | |
383 SkColor title_label_color1 = frame_view->title_label_->GetColor(); | |
384 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE); | |
385 SkColor title_label_color2 = frame_view->title_label_->GetColor(); | |
386 EXPECT_NE(title_label_color1, title_label_color2); | |
387 | 408 |
388 panel->Close(); | 409 panel->Close(); |
389 } | 410 } |
390 | 411 |
391 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowPanelActiveOrInactive) { | 412 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanelActive) { |
392 TestShowPanelActiveOrInactive(); | 413 CreatePanelParams params("PanelTest", gfx::Rect(), SHOW_AS_ACTIVE); |
| 414 Panel* panel = CreatePanelWithParams(params); |
| 415 |
| 416 // Validate it is active. |
| 417 EXPECT_TRUE(panel->IsActive()); |
| 418 EXPECT_TRUE(IsTitlebarPaintedAsActive(panel)); |
| 419 |
| 420 // Validate window styles. We want to ensure that the window is created |
| 421 // with expected styles regardless of its active state. |
| 422 #if defined(OS_WIN) |
| 423 HWND native_window = GetNativeWindow(panel); |
| 424 |
| 425 LONG styles = ::GetWindowLong(native_window, GWL_STYLE); |
| 426 EXPECT_EQ(0, styles & WS_MAXIMIZEBOX); |
| 427 EXPECT_EQ(0, styles & WS_MINIMIZEBOX); |
| 428 EXPECT_EQ(0, styles & WS_THICKFRAME); |
| 429 |
| 430 LONG ext_styles = ::GetWindowLong(native_window, GWL_EXSTYLE); |
| 431 EXPECT_EQ(WS_EX_TOPMOST, ext_styles & WS_EX_TOPMOST); |
| 432 #endif |
| 433 |
| 434 panel->Close(); |
| 435 } |
| 436 |
| 437 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanelInactive) { |
| 438 CreatePanelParams params("PanelTest", gfx::Rect(), SHOW_AS_INACTIVE); |
| 439 Panel* panel = CreatePanelWithParams(params); |
| 440 |
| 441 // Validate it is inactive. |
| 442 EXPECT_FALSE(panel->IsActive()); |
| 443 EXPECT_FALSE(IsTitlebarPaintedAsActive(panel)); |
| 444 |
| 445 // Validate window styles. We want to ensure that the window is created |
| 446 // with expected styles regardless of its active state. |
| 447 #if defined(OS_WIN) |
| 448 HWND native_window = GetNativeWindow(panel); |
| 449 |
| 450 LONG styles = ::GetWindowLong(native_window, GWL_STYLE); |
| 451 EXPECT_EQ(0, styles & WS_MAXIMIZEBOX); |
| 452 EXPECT_EQ(0, styles & WS_MINIMIZEBOX); |
| 453 EXPECT_EQ(0, styles & WS_THICKFRAME); |
| 454 |
| 455 LONG ext_styles = ::GetWindowLong(native_window, GWL_EXSTYLE); |
| 456 EXPECT_EQ(WS_EX_TOPMOST, ext_styles & WS_EX_TOPMOST); |
| 457 #endif |
| 458 |
| 459 panel->Close(); |
| 460 } |
| 461 |
| 462 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, PanelLayout) { |
| 463 Panel* panel = CreatePanel("PanelTest"); |
| 464 |
| 465 views::View* title_icon = GetTitleIcon(panel); |
| 466 views::View* title_text = GetTitleText(panel); |
| 467 views::View* settings_button = GetSettingsButton(panel); |
| 468 views::View* close_button = GetCloseButton(panel); |
| 469 |
| 470 // We should have icon, text, settings button and close button. |
| 471 EXPECT_EQ(4, GetControlCount(panel)); |
| 472 EXPECT_TRUE(ContainsControl(panel, title_icon)); |
| 473 EXPECT_TRUE(ContainsControl(panel, title_text)); |
| 474 EXPECT_TRUE(ContainsControl(panel, settings_button)); |
| 475 EXPECT_TRUE(ContainsControl(panel, close_button)); |
| 476 |
| 477 // These controls should be visible. |
| 478 EXPECT_TRUE(title_icon->IsVisible()); |
| 479 EXPECT_TRUE(title_text->IsVisible()); |
| 480 EXPECT_TRUE(close_button->IsVisible()); |
| 481 |
| 482 // Validate their layouts. |
| 483 int titlebar_height = GetTitlebarHeight(panel); |
| 484 EXPECT_GT(title_icon->width(), 0); |
| 485 EXPECT_GT(title_icon->height(), 0); |
| 486 EXPECT_LT(title_icon->height(), titlebar_height); |
| 487 EXPECT_GT(title_text->width(), 0); |
| 488 EXPECT_GT(title_text->height(), 0); |
| 489 EXPECT_LT(title_text->height(), titlebar_height); |
| 490 EXPECT_GT(settings_button->width(), 0); |
| 491 EXPECT_GT(settings_button->height(), 0); |
| 492 EXPECT_LT(settings_button->height(), titlebar_height); |
| 493 EXPECT_GT(close_button->width(), 0); |
| 494 EXPECT_GT(close_button->height(), 0); |
| 495 EXPECT_LT(close_button->height(), titlebar_height); |
| 496 EXPECT_LT(title_icon->x() + title_icon->width(), title_text->x()); |
| 497 EXPECT_LT(title_text->x() + title_text->width(), settings_button->x()); |
| 498 EXPECT_LT(settings_button->x() + settings_button->width(), close_button->x()); |
| 499 } |
| 500 |
| 501 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, Deactivate) { |
| 502 // When a panel is created, it should be active at first. |
| 503 Panel* panel = CreatePanel("PanelTest"); |
| 504 EXPECT_TRUE(panel->IsActive()); |
| 505 |
| 506 // When the panel is deactivated, the appearance of controls should be |
| 507 // updated. |
| 508 views::Label* title_text = GetTitleText(panel); |
| 509 SkColor title_text_color_before = title_text->GetColor(); |
| 510 |
| 511 panel->Deactivate(); |
| 512 EXPECT_FALSE(panel->IsActive()); |
| 513 |
| 514 SkColor title_text_color_after = title_text->GetColor(); |
| 515 EXPECT_NE(title_text_color_before, title_text_color_after); |
393 } | 516 } |
394 | 517 |
395 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideSettingsButton) { | 518 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideSettingsButton) { |
396 Panel* panel = CreatePanel("PanelTest"); | 519 Panel* panel = CreatePanel("PanelTest"); |
397 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView(); | 520 views::View* settings_button = GetSettingsButton(panel); |
398 | 521 |
399 // Create and hook up the MockMouseWatcher so that we can simulate if the | 522 // Create and hook up the MockMouseWatcher so that we can simulate if the |
400 // mouse is over the panel. | 523 // mouse is over the panel. |
401 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view); | 524 MockMouseWatcher* mouse_watcher = CreateTitlebarMouseWatcher(panel); |
402 frame_view->set_mouse_watcher(mouse_watcher); | |
403 | 525 |
404 // When the panel is created, it is active. Since we cannot programatically | 526 // When the panel is created, it is active. Since we cannot programatically |
405 // bring the panel back to active state once it is deactivated, we have to | 527 // bring the panel back to active state once it is deactivated, we have to |
406 // test the cases that the panel is active first. | 528 // test the cases that the panel is active first. |
407 EXPECT_TRUE(panel->IsActive()); | 529 EXPECT_TRUE(panel->IsActive()); |
408 | 530 |
409 // When the panel is active, the settings button should always be visible. | 531 // When the panel is active, the settings button should always be visible. |
410 mouse_watcher->MoveMouse(true); | 532 mouse_watcher->MoveMouse(true); |
411 EXPECT_TRUE(frame_view->settings_button_->IsVisible()); | 533 EXPECT_TRUE(settings_button->IsVisible()); |
412 mouse_watcher->MoveMouse(false); | 534 mouse_watcher->MoveMouse(false); |
413 EXPECT_TRUE(frame_view->settings_button_->IsVisible()); | 535 EXPECT_TRUE(settings_button->IsVisible()); |
414 | 536 |
415 // When the panel is inactive, the options button is active per the mouse over | 537 // When the panel is inactive, the options button is active per the mouse over |
416 // the panel or not. | 538 // the panel or not. |
417 panel->Deactivate(); | 539 panel->Deactivate(); |
418 EXPECT_FALSE(panel->IsActive()); | 540 EXPECT_FALSE(panel->IsActive()); |
419 WaitTillSettingsAnimationFinished(frame_view); | 541 WaitTillSettingsAnimationFinished(panel); |
420 EXPECT_FALSE(frame_view->settings_button_->IsVisible()); | 542 EXPECT_FALSE(settings_button->IsVisible()); |
421 | 543 |
422 mouse_watcher->MoveMouse(true); | 544 mouse_watcher->MoveMouse(true); |
423 WaitTillSettingsAnimationFinished(frame_view); | 545 WaitTillSettingsAnimationFinished(panel); |
424 EXPECT_TRUE(frame_view->settings_button_->IsVisible()); | 546 EXPECT_TRUE(settings_button->IsVisible()); |
425 mouse_watcher->MoveMouse(false); | 547 mouse_watcher->MoveMouse(false); |
426 WaitTillSettingsAnimationFinished(frame_view); | 548 WaitTillSettingsAnimationFinished(panel); |
427 EXPECT_FALSE(frame_view->settings_button_->IsVisible()); | 549 EXPECT_FALSE(settings_button->IsVisible()); |
428 } | 550 } |
429 | 551 |
430 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) { | 552 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) { |
431 Panel* panel = CreatePanel("PanelTest"); | 553 Panel* panel = CreatePanel("PanelTest"); |
432 PanelBrowserView* browser_view = GetBrowserView(panel); | 554 PanelBrowserView* browser_view = GetBrowserView(panel); |
433 | 555 |
| 556 // The bounds animation should not be triggered when the panel is up for the |
| 557 // first time. |
| 558 EXPECT_FALSE(GetBoundsAnimator(panel)); |
| 559 |
434 // Validate that animation should be triggered when bounds are changed. | 560 // Validate that animation should be triggered when bounds are changed. |
435 gfx::Rect target_bounds(browser_view->GetBounds()); | 561 gfx::Rect target_bounds(GetViewBounds(panel)); |
436 target_bounds.Offset(20, -30); | 562 target_bounds.Offset(20, -30); |
437 target_bounds.set_width(target_bounds.width() + 100); | 563 target_bounds.set_width(target_bounds.width() + 100); |
438 target_bounds.set_height(target_bounds.height() + 50); | 564 target_bounds.set_height(target_bounds.height() + 50); |
439 browser_view->SetPanelBounds(target_bounds); | 565 SetViewBounds(panel, target_bounds); |
440 ASSERT_TRUE(browser_view->bounds_animator_.get()); | 566 ASSERT_TRUE(GetBoundsAnimator(panel)); |
441 EXPECT_TRUE(browser_view->bounds_animator_->is_animating()); | 567 EXPECT_TRUE(GetBoundsAnimator(panel)->is_animating()); |
442 EXPECT_NE(browser_view->GetBounds(), target_bounds); | 568 EXPECT_NE(GetViewBounds(panel), target_bounds); |
443 WaitTillBoundsAnimationFinished(browser_view); | 569 WaitTillBoundsAnimationFinished(panel); |
444 EXPECT_EQ(browser_view->GetBounds(), target_bounds); | 570 EXPECT_EQ(GetViewBounds(panel), target_bounds); |
445 | 571 |
446 // Validates that no animation should be triggered for the panel currently | 572 // Validates that no animation should be triggered for the panel currently |
447 // being dragged. | 573 // being dragged. |
448 browser_view->OnTitlebarMousePressed(gfx::Point( | 574 browser_view->OnTitlebarMousePressed(gfx::Point( |
449 target_bounds.x(), target_bounds.y())); | 575 target_bounds.x(), target_bounds.y())); |
450 browser_view->OnTitlebarMouseDragged(gfx::Point( | 576 browser_view->OnTitlebarMouseDragged(gfx::Point( |
451 target_bounds.x() + 5, target_bounds.y() + 5)); | 577 target_bounds.x() + 5, target_bounds.y() + 5)); |
452 EXPECT_FALSE(browser_view->bounds_animator_->is_animating()); | 578 EXPECT_FALSE(GetBoundsAnimator(panel)->is_animating()); |
453 browser_view->OnTitlebarMouseCaptureLost(); | 579 browser_view->OnTitlebarMouseCaptureLost(); |
454 | 580 |
455 panel->Close(); | 581 panel->Close(); |
456 } | 582 } |
457 | 583 |
458 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, | 584 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, |
459 MinimizeAndRestoreOnNormalTaskBar) { | 585 MinimizeAndRestoreOnNormalTaskBar) { |
460 TestMinimizeAndRestore(false); | 586 TestMinimizeAndRestore(false); |
461 } | 587 } |
462 | 588 |
463 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, | 589 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, |
464 MinimizeAndRestoreOnAutoHideTaskBar) { | 590 MinimizeAndRestoreOnAutoHideTaskBar) { |
465 TestMinimizeAndRestore(true); | 591 TestMinimizeAndRestore(true); |
466 } | 592 } |
467 | 593 |
468 // TODO(jianli): Investigate why this fails on win trunk build. | 594 // TODO(jianli): Investigate why this fails on win trunk build. |
469 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, DISABLED_DrawAttention) { | 595 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, DISABLED_DrawAttention) { |
470 TestDrawAttention(); | 596 TestDrawAttention(); |
471 } | 597 } |
472 | 598 |
473 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ChangeAutoHideTaskBarThickness) { | 599 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ChangeAutoHideTaskBarThickness) { |
474 TestChangeAutoHideTaskBarThickness(); | 600 TestChangeAutoHideTaskBarThickness(); |
475 } | 601 } |
476 #endif | 602 #endif |
OLD | NEW |