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

Unified Diff: chrome/browser/ui/panels/panel_browser_view_browsertest.cc

Issue 7055001: Make info button appear only when mouse is over the panel or the panel has focus. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/panels/panel_browser_view_browsertest.cc
===================================================================
--- chrome/browser/ui/panels/panel_browser_view_browsertest.cc (revision 86006)
+++ chrome/browser/ui/panels/panel_browser_view_browsertest.cc (working copy)
@@ -13,11 +13,8 @@
#include "chrome/test/in_process_browser_test.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "views/controls/button/image_button.h"
-#include "views/controls/button/menu_button.h"
#include "views/controls/label.h"
-#include "views/controls/menu/menu_2.h"
-
class PanelBrowserViewTest : public InProcessBrowserTest {
public:
PanelBrowserViewTest() : InProcessBrowserTest() { }
@@ -27,6 +24,25 @@
}
protected:
+ class MockMouseWatcher : public PanelBrowserFrameView::MouseWatcher {
+ public:
+ explicit MockMouseWatcher(PanelBrowserFrameView* view)
+ : PanelBrowserFrameView::MouseWatcher(view),
+ cursor_in_view_(false) {
+ }
+
+ virtual bool IsCursorInViewBounds() const {
+ return cursor_in_view_;
+ }
+
+ void set_cursor_in_view(bool cursor_in_view) {
+ cursor_in_view_ = cursor_in_view;
+ }
+
+ private:
+ bool cursor_in_view_;
+ };
+
PanelBrowserView* CreatePanelBrowserView(const std::string& panel_name) {
Browser* panel_browser = Browser::CreateForApp(Browser::TYPE_PANEL,
panel_name,
@@ -37,20 +53,6 @@
static_cast<Panel*>(panel_browser->window())->browser_window());
}
- void ValidateOptionsMenuItems(
- ui::SimpleMenuModel* options_menu_contents, size_t count, int* ids) {
- ASSERT_TRUE(options_menu_contents);
- EXPECT_EQ(static_cast<int>(count), options_menu_contents->GetItemCount());
- for (size_t i = 0; i < count; ++i) {
- if (ids[i] == -1) {
- EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR,
- options_menu_contents->GetTypeAt(i));
- } else {
- EXPECT_EQ(ids[i] , options_menu_contents->GetCommandIdAt(i));
- }
- }
- }
-
void ValidateDragging(PanelBrowserView** browser_views,
size_t num_browser_views,
size_t index_to_drag,
@@ -142,8 +144,8 @@
// Panel is not supported for Linux view yet.
#if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS)
IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) {
- PanelBrowserFrameView* frame_view =
- CreatePanelBrowserView("PanelTest")->GetFrameView();
+ PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
+ PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
// We should have icon, text, options button and close button.
EXPECT_EQ(4, frame_view->child_count());
@@ -155,7 +157,6 @@
// These controls should be visible.
EXPECT_TRUE(frame_view->title_icon_->IsVisible());
EXPECT_TRUE(frame_view->title_label_->IsVisible());
- EXPECT_TRUE(frame_view->info_button_->IsVisible());
EXPECT_TRUE(frame_view->close_button_->IsVisible());
// Validate their layouts.
@@ -188,6 +189,41 @@
frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE);
gfx::Font title_label_font2 = frame_view->title_label_->font();
EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle());
+
+ // The info button should be visible if the panel is activated or the cursor
jennb 2011/05/20 23:13:12 Suggest making this a separate test so we can chec
jianli 2011/05/23 21:21:03 Made it a separate test.
+ // is over the window (simulated by MockMouseWatcher).
+ MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view);
+ mouse_watcher->set_cursor_in_view(false);
+ frame_view->set_mouse_watcher(mouse_watcher);
+ browser_view->panel()->Activate();
+ EXPECT_TRUE(frame_view->info_button_->IsVisible());
+ browser_view->panel()->Deactivate();
+ EXPECT_FALSE(frame_view->info_button_->IsVisible());
+
+ mouse_watcher->set_cursor_in_view(true);
+ browser_view->panel()->Activate();
+ EXPECT_TRUE(frame_view->info_button_->IsVisible());
+ browser_view->panel()->Deactivate();
+ EXPECT_TRUE(frame_view->info_button_->IsVisible());
+
+ mouse_watcher->set_cursor_in_view(false);
+#if defined(OS_WIN)
+ MSG msg;
+ msg.message = WM_MOUSEMOVE;
+ mouse_watcher->DidProcessMessage(msg);
+#else
+ GdkEvent event;
+ event.type = GDK_MOTION_NOTIFY;
+ mouse_watcher->DidProcessEvent(&event);
+#endif
+ EXPECT_FALSE(frame_view->info_button_->IsVisible());
+ mouse_watcher->set_cursor_in_view(true);
+#if defined(OS_WIN)
+ mouse_watcher->DidProcessMessage(msg);
+#else
+ mouse_watcher->DidProcessEvent(&event);
+#endif
+ EXPECT_TRUE(frame_view->info_button_->IsVisible());
}
IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) {

Powered by Google App Engine
This is Rietveld 408576698