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) { |