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

Side by Side Diff: chrome/browser/ui/panels/panel_browser_view_browsertest.cc

Issue 9956145: Remove wrench button from panel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync Created 8 years, 8 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 | Annotate | Revision Log
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/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 17 matching lines...) Expand all
28 #include "ui/views/controls/image_view.h" 28 #include "ui/views/controls/image_view.h"
29 #include "ui/views/controls/label.h" 29 #include "ui/views/controls/label.h"
30 #include "ui/views/controls/link.h" 30 #include "ui/views/controls/link.h"
31 #include "ui/views/controls/textfield/textfield.h" 31 #include "ui/views/controls/textfield/textfield.h"
32 32
33 class PanelBrowserViewTest : public BasePanelBrowserTest { 33 class PanelBrowserViewTest : public BasePanelBrowserTest {
34 public: 34 public:
35 PanelBrowserViewTest() : BasePanelBrowserTest() { } 35 PanelBrowserViewTest() : BasePanelBrowserTest() { }
36 36
37 protected: 37 protected:
38 class MockMouseWatcher : public PanelBrowserFrameView::MouseWatcher {
39 public:
40 explicit MockMouseWatcher(PanelBrowserFrameView* view)
41 : PanelBrowserFrameView::MouseWatcher(view),
42 is_cursor_in_view_(false) {
43 }
44
45 virtual bool IsCursorInViewBounds() const {
46 return is_cursor_in_view_;
47 }
48
49 void MoveMouse(bool is_cursor_in_view) {
50 is_cursor_in_view_ = is_cursor_in_view;
51
52 #if defined(OS_WIN)
53 MSG msg;
54 msg.message = WM_MOUSEMOVE;
55 DidProcessEvent(msg);
56 #elif defined(USE_AURA)
57 NOTIMPLEMENTED();
58 #elif defined(TOOLKIT_GTK)
59 GdkEvent event;
60 event.type = GDK_MOTION_NOTIFY;
61 DidProcessEvent(&event);
62 #endif
63 }
64
65 private:
66 bool is_cursor_in_view_;
67 };
68
69 PanelBrowserView* GetBrowserView(Panel* panel) const { 38 PanelBrowserView* GetBrowserView(Panel* panel) const {
70 return static_cast<PanelBrowserView*>(panel->native_panel()); 39 return static_cast<PanelBrowserView*>(panel->native_panel());
71 } 40 }
72 41
73 gfx::Rect GetViewBounds(Panel* panel) const { 42 gfx::Rect GetViewBounds(Panel* panel) const {
74 return GetBrowserView(panel)->GetBounds(); 43 return GetBrowserView(panel)->GetBounds();
75 } 44 }
76 45
77 void SetViewBounds(Panel* panel, const gfx::Rect& rect) const { 46 void SetViewBounds(Panel* panel, const gfx::Rect& rect) const {
78 return GetBrowserView(panel)->SetPanelBounds(rect); 47 return GetBrowserView(panel)->SetPanelBounds(rect);
79 } 48 }
80 49
81 gfx::NativeWindow GetNativeWindow(Panel* panel) const { 50 gfx::NativeWindow GetNativeWindow(Panel* panel) const {
82 return GetBrowserView(panel)->GetNativeHandle(); 51 return GetBrowserView(panel)->GetNativeHandle();
83 } 52 }
84 53
85 PanelBoundsAnimation* GetBoundsAnimator(Panel* panel) const { 54 PanelBoundsAnimation* GetBoundsAnimator(Panel* panel) const {
86 return GetBrowserView(panel)->bounds_animator_.get(); 55 return GetBrowserView(panel)->bounds_animator_.get();
87 } 56 }
88 57
89 ui::LinearAnimation* GetSettingsButtonAnimator(Panel* panel) const {
90 return GetBrowserView(panel)->GetFrameView()->
91 settings_button_animator_.get();
92 }
93
94 int GetTitlebarHeight(Panel* panel) const { 58 int GetTitlebarHeight(Panel* panel) const {
95 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView(); 59 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView();
96 return frame_view->NonClientTopBorderHeight() - 60 return frame_view->NonClientTopBorderHeight() -
97 frame_view->NonClientBorderThickness(); 61 frame_view->NonClientBorderThickness();
98 } 62 }
99 63
100 MockMouseWatcher* CreateTitlebarMouseWatcher(Panel* panel) {
101 PanelBrowserFrameView* frame_view = GetBrowserView(panel)->GetFrameView();
102 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view);
103 frame_view->set_mouse_watcher(mouse_watcher);
104 return mouse_watcher;
105 }
106
107 PanelBrowserFrameView::PaintState GetTitlebarPaintState(Panel* panel) const { 64 PanelBrowserFrameView::PaintState GetTitlebarPaintState(Panel* panel) const {
108 return GetBrowserView(panel)->GetFrameView()->paint_state_; 65 return GetBrowserView(panel)->GetFrameView()->paint_state_;
109 } 66 }
110 67
111 bool IsTitlebarPaintedAsActive(Panel* panel) const { 68 bool IsTitlebarPaintedAsActive(Panel* panel) const {
112 return GetTitlebarPaintState(panel) == 69 return GetTitlebarPaintState(panel) ==
113 PanelBrowserFrameView::PAINT_AS_ACTIVE; 70 PanelBrowserFrameView::PAINT_AS_ACTIVE;
114 } 71 }
115 72
116 bool IsTitlebarPaintedAsInactive(Panel* panel) const { 73 bool IsTitlebarPaintedAsInactive(Panel* panel) const {
(...skipping 11 matching lines...) Expand all
128 } 85 }
129 86
130 TabIconView* GetTitleIcon(Panel* panel) const { 87 TabIconView* GetTitleIcon(Panel* panel) const {
131 return GetBrowserView(panel)->GetFrameView()->title_icon_; 88 return GetBrowserView(panel)->GetFrameView()->title_icon_;
132 } 89 }
133 90
134 views::Label* GetTitleText(Panel* panel) const { 91 views::Label* GetTitleText(Panel* panel) const {
135 return GetBrowserView(panel)->GetFrameView()->title_label_; 92 return GetBrowserView(panel)->GetFrameView()->title_label_;
136 } 93 }
137 94
138 views::Button* GetSettingsButton(Panel* panel) const {
139 return GetBrowserView(panel)->GetFrameView()->settings_button_;
140 }
141
142 views::Button* GetCloseButton(Panel* panel) const { 95 views::Button* GetCloseButton(Panel* panel) const {
143 return GetBrowserView(panel)->GetFrameView()->close_button_; 96 return GetBrowserView(panel)->GetFrameView()->close_button_;
144 } 97 }
145 98
146 bool ContainsControl(Panel* panel, views::View* control) const { 99 bool ContainsControl(Panel* panel, views::View* control) const {
147 return GetBrowserView(panel)->GetFrameView()->Contains(control); 100 return GetBrowserView(panel)->GetFrameView()->Contains(control);
148 } 101 }
149 102
150 void WaitTillBoundsAnimationFinished(Panel* panel) { 103 void WaitTillBoundsAnimationFinished(Panel* panel) {
151 // The timer for the animation will only kick in as async task. 104 // The timer for the animation will only kick in as async task.
152 while (GetBoundsAnimator(panel)->is_animating()) { 105 while (GetBoundsAnimator(panel)->is_animating()) {
153 MessageLoopForUI::current()->PostTask(FROM_HERE, 106 MessageLoopForUI::current()->PostTask(FROM_HERE,
154 MessageLoop::QuitClosure()); 107 MessageLoop::QuitClosure());
155 MessageLoopForUI::current()->RunAllPending(); 108 MessageLoopForUI::current()->RunAllPending();
156 } 109 }
157 } 110 }
158 111
159 void WaitTillSettingsAnimationFinished(Panel* panel) {
160 // The timer for the animation will only kick in as async task.
161 while (GetSettingsButtonAnimator(panel)->is_animating()) {
162 MessageLoopForUI::current()->PostTask(FROM_HERE,
163 MessageLoop::QuitClosure());
164 MessageLoopForUI::current()->RunAllPending();
165 }
166 }
167
168 void ClosePanelAndWaitForNotification(Panel* panel) { 112 void ClosePanelAndWaitForNotification(Panel* panel) {
169 ui_test_utils::WindowedNotificationObserver signal( 113 ui_test_utils::WindowedNotificationObserver signal(
170 chrome::NOTIFICATION_BROWSER_CLOSED, 114 chrome::NOTIFICATION_BROWSER_CLOSED,
171 content::Source<Browser>(panel->browser())); 115 content::Source<Browser>(panel->browser()));
172 panel->Close(); 116 panel->Close();
173 signal.Wait(); 117 signal.Wait();
174 } 118 }
175 119
176 // We put all the testing logic in this class instead of the test so that 120 // We put all the testing logic in this class instead of the test so that
177 // we do not need to declare each new test as a friend of PanelBrowserView 121 // we do not need to declare each new test as a friend of PanelBrowserView
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 #endif 382 #endif
439 383
440 panel->Close(); 384 panel->Close();
441 } 385 }
442 386
443 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, PanelLayout) { 387 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, PanelLayout) {
444 Panel* panel = CreatePanel("PanelTest"); 388 Panel* panel = CreatePanel("PanelTest");
445 389
446 views::View* title_icon = GetTitleIcon(panel); 390 views::View* title_icon = GetTitleIcon(panel);
447 views::View* title_text = GetTitleText(panel); 391 views::View* title_text = GetTitleText(panel);
448 views::View* settings_button = GetSettingsButton(panel);
449 views::View* close_button = GetCloseButton(panel); 392 views::View* close_button = GetCloseButton(panel);
450 393
451 // We should have icon, text, settings button and close button. 394 // We should have icon, text, settings button and close button.
452 EXPECT_EQ(4, GetControlCount(panel)); 395 EXPECT_EQ(3, GetControlCount(panel));
453 EXPECT_TRUE(ContainsControl(panel, title_icon)); 396 EXPECT_TRUE(ContainsControl(panel, title_icon));
454 EXPECT_TRUE(ContainsControl(panel, title_text)); 397 EXPECT_TRUE(ContainsControl(panel, title_text));
455 EXPECT_TRUE(ContainsControl(panel, settings_button));
456 EXPECT_TRUE(ContainsControl(panel, close_button)); 398 EXPECT_TRUE(ContainsControl(panel, close_button));
457 399
458 // These controls should be visible. 400 // These controls should be visible.
459 EXPECT_TRUE(title_icon->visible()); 401 EXPECT_TRUE(title_icon->visible());
460 EXPECT_TRUE(title_text->visible()); 402 EXPECT_TRUE(title_text->visible());
461 EXPECT_TRUE(close_button->visible()); 403 EXPECT_TRUE(close_button->visible());
462 404
463 // Validate their layouts. 405 // Validate their layouts.
464 int titlebar_height = GetTitlebarHeight(panel); 406 int titlebar_height = GetTitlebarHeight(panel);
465 EXPECT_GT(title_icon->width(), 0); 407 EXPECT_GT(title_icon->width(), 0);
466 EXPECT_GT(title_icon->height(), 0); 408 EXPECT_GT(title_icon->height(), 0);
467 EXPECT_LT(title_icon->height(), titlebar_height); 409 EXPECT_LT(title_icon->height(), titlebar_height);
468 EXPECT_GT(title_text->width(), 0); 410 EXPECT_GT(title_text->width(), 0);
469 EXPECT_GT(title_text->height(), 0); 411 EXPECT_GT(title_text->height(), 0);
470 EXPECT_LT(title_text->height(), titlebar_height); 412 EXPECT_LT(title_text->height(), titlebar_height);
471 EXPECT_GT(settings_button->width(), 0);
472 EXPECT_GT(settings_button->height(), 0);
473 EXPECT_LT(settings_button->height(), titlebar_height);
474 EXPECT_GT(close_button->width(), 0); 413 EXPECT_GT(close_button->width(), 0);
475 EXPECT_GT(close_button->height(), 0); 414 EXPECT_GT(close_button->height(), 0);
476 EXPECT_LT(close_button->height(), titlebar_height); 415 EXPECT_LT(close_button->height(), titlebar_height);
477 EXPECT_LT(title_icon->x() + title_icon->width(), title_text->x()); 416 EXPECT_LT(title_icon->x() + title_icon->width(), title_text->x());
478 EXPECT_LT(title_text->x() + title_text->width(), settings_button->x()); 417 EXPECT_LT(title_text->x() + title_text->width(), close_button->x());
479 EXPECT_LT(settings_button->x() + settings_button->width(), close_button->x());
480 }
481
482 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideSettingsButton) {
483 Panel* panel = CreatePanel("PanelTest");
484 views::View* settings_button = GetSettingsButton(panel);
485
486 // Create and hook up the MockMouseWatcher so that we can simulate if the
487 // mouse is over the panel.
488 MockMouseWatcher* mouse_watcher = CreateTitlebarMouseWatcher(panel);
489
490 // When the panel is created, it is active. Since we cannot programatically
491 // bring the panel back to active state once it is deactivated, we have to
492 // test the cases that the panel is active first.
493 EXPECT_TRUE(panel->IsActive());
494
495 // When the panel is active, the settings button should always be visible.
496 mouse_watcher->MoveMouse(true);
497 EXPECT_TRUE(settings_button->visible());
498 mouse_watcher->MoveMouse(false);
499 EXPECT_TRUE(settings_button->visible());
500
501 // When the panel is inactive, the options button is active per the mouse over
502 // the panel or not.
503 panel->Deactivate();
504 EXPECT_FALSE(panel->IsActive());
505 WaitTillSettingsAnimationFinished(panel);
506 EXPECT_FALSE(settings_button->visible());
507
508 mouse_watcher->MoveMouse(true);
509 WaitTillSettingsAnimationFinished(panel);
510 EXPECT_TRUE(settings_button->visible());
511 mouse_watcher->MoveMouse(false);
512 WaitTillSettingsAnimationFinished(panel);
513 EXPECT_FALSE(settings_button->visible());
514 } 418 }
515 419
516 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) { 420 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) {
517 Panel* panel = CreatePanel("PanelTest"); 421 Panel* panel = CreatePanel("PanelTest");
518 PanelBrowserView* browser_view = GetBrowserView(panel); 422 PanelBrowserView* browser_view = GetBrowserView(panel);
519 423
520 // The bounds animation should not be triggered when the panel is up for the 424 // The bounds animation should not be triggered when the panel is up for the
521 // first time. 425 // first time.
522 EXPECT_FALSE(GetBoundsAnimator(panel)); 426 EXPECT_FALSE(GetBoundsAnimator(panel));
523 427
(...skipping 29 matching lines...) Expand all
553 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, 457 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest,
554 MinimizeAndRestoreOnAutoHideTaskBar) { 458 MinimizeAndRestoreOnAutoHideTaskBar) {
555 TestMinimizeAndRestore(true); 459 TestMinimizeAndRestore(true);
556 } 460 }
557 461
558 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, 462 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest,
559 ChangeAutoHideTaskBarThickness) { 463 ChangeAutoHideTaskBarThickness) {
560 TestChangeAutoHideTaskBarThickness(); 464 TestChangeAutoHideTaskBarThickness();
561 } 465 }
562 #endif 466 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698