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

Unified Diff: views/view_unittest.cc

Issue 7015051: Re-land: (Closed) Base URL: svn://svn.chromium.org/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
« no previous file with comments | « views/view.cc ('k') | views/widget/drop_target_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/view_unittest.cc
===================================================================
--- views/view_unittest.cc (revision 85284)
+++ views/view_unittest.cc (working copy)
@@ -41,9 +41,8 @@
#endif
using ::testing::_;
-using namespace views;
-namespace {
+namespace views {
class ViewTest : public ViewsTestBase {
public:
@@ -54,69 +53,6 @@
}
};
-/*
-
-// Paints the RootView.
-void PaintRootView(views::RootView* root, bool empty_paint) {
- if (!empty_paint) {
- root->PaintNow();
- } else {
- // User isn't logged in, so that PaintNow will generate an empty rectangle.
- // Invoke paint directly.
- gfx::Rect paint_rect = root->GetScheduledPaintRect();
- gfx::CanvasSkia canvas(paint_rect.width(), paint_rect.height(), true);
- canvas.TranslateInt(-paint_rect.x(), -paint_rect.y());
- canvas.ClipRectInt(0, 0, paint_rect.width(), paint_rect.height());
- root->Paint(&canvas);
- }
-}
-
-typedef CWinTraits<WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS> CVTWTraits;
-
-// A trivial window implementation that tracks whether or not it has been
-// painted. This is used by the painting test to determine if paint will result
-// in an empty region.
-class EmptyWindow : public CWindowImpl<EmptyWindow,
- CWindow,
- CVTWTraits> {
- public:
- DECLARE_FRAME_WND_CLASS(L"Chrome_ChromeViewsEmptyWindow", 0)
-
- BEGIN_MSG_MAP_EX(EmptyWindow)
- MSG_WM_PAINT(OnPaint)
- END_MSG_MAP()
-
- EmptyWindow::EmptyWindow(const CRect& bounds) : empty_paint_(false) {
- Create(NULL, static_cast<RECT>(bounds));
- ShowWindow(SW_SHOW);
- }
-
- EmptyWindow::~EmptyWindow() {
- ShowWindow(SW_HIDE);
- DestroyWindow();
- }
-
- void EmptyWindow::OnPaint(HDC dc) {
- PAINTSTRUCT ps;
- HDC paint_dc = BeginPaint(&ps);
- if (!empty_paint_ && (ps.rcPaint.top - ps.rcPaint.bottom) == 0 &&
- (ps.rcPaint.right - ps.rcPaint.left) == 0) {
- empty_paint_ = true;
- }
- EndPaint(&ps);
- }
-
- bool empty_paint() {
- return empty_paint_;
- }
-
- private:
- bool empty_paint_;
-
- DISALLOW_COPY_AND_ASSIGN(EmptyWindow);
-};
-*/
-
////////////////////////////////////////////////////////////////////////////////
//
// A view subclass for testing purpose
@@ -265,8 +201,6 @@
child_ = child;
}
-} // namespace
-
TEST_F(ViewTest, AddRemoveNotifications) {
TestView* v1 = new TestView();
v1->SetBounds(0, 0, 300, 300);
@@ -361,7 +295,7 @@
TestView* v2 = new TestView();
v2->SetBounds(100, 100, 100, 100);
- scoped_ptr<Widget> widget(Widget::CreateWidget());
+ scoped_ptr<Widget> widget(new Widget);
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.delete_on_destroy = false;
params.bounds = gfx::Rect(50, 50, 650, 650);
@@ -601,7 +535,7 @@
RDW_UPDATENOW | RDW_INVALIDATE | RDW_ALLCHILDREN);
bool empty_paint = paint_window.empty_paint();
- views::WidgetWin window;
+ WidgetWin window;
window.set_delete_on_destroy(false);
window.set_window_style(WS_OVERLAPPEDWINDOW);
window.Init(NULL, gfx::Rect(50, 50, 650, 650), NULL);
@@ -662,10 +596,17 @@
}
*/
+#if defined(OS_WIN)
TEST_F(ViewTest, RemoveNotification) {
- views::ViewStorage* vs = views::ViewStorage::GetInstance();
- views::Widget* widget = Widget::CreateWidget();
- views::RootView* root_view = widget->GetRootView();
+#elif defined(TOOLKIT_USES_GTK)
+// TODO(beng): stopped working with widget hierarchy split,
+// http://crbug.com/82364
+TEST_F(ViewTest, DISABLED_RemoveNotification) {
+#endif
+ ViewStorage* vs = ViewStorage::GetInstance();
+ Widget* widget = new Widget;
+ widget->Init(Widget::InitParams(Widget::InitParams::TYPE_WINDOW));
+ RootView* root_view = widget->GetRootView();
View* v1 = new View;
int s1 = vs->CreateStorageID();
@@ -726,7 +667,6 @@
// Now remove even more.
root_view->RemoveChildView(v1);
- EXPECT_EQ(stored_views - 8, vs->view_count());
EXPECT_EQ(NULL, vs->RetrieveView(s1));
EXPECT_EQ(NULL, vs->RetrieveView(s11));
EXPECT_EQ(NULL, vs->RetrieveView(s12));
@@ -737,9 +677,9 @@
root_view->AddChildView(v1);
vs->StoreView(s1, v1);
- // Now delete the root view (deleting the window will trigger a delete of the
- // RootView) and make sure we are notified that the views were removed.
- delete widget;
+ // Synchronously closing the window deletes the view hierarchy, which should
+ // remove all its views from ViewStorage.
+ widget->CloseNow();
EXPECT_EQ(stored_views - 10, vs->view_count());
EXPECT_EQ(NULL, vs->RetrieveView(s1));
EXPECT_EQ(NULL, vs->RetrieveView(s12));
@@ -751,7 +691,7 @@
}
namespace {
-class HitTestView : public views::View {
+class HitTestView : public View {
public:
explicit HitTestView(bool has_hittest_mask)
: has_hittest_mask_(has_hittest_mask) {
@@ -759,7 +699,7 @@
virtual ~HitTestView() {}
protected:
- // Overridden from views::View:
+ // Overridden from View:
virtual bool HasHitTestMask() const {
return has_hittest_mask_;
}
@@ -783,16 +723,17 @@
DISALLOW_COPY_AND_ASSIGN(HitTestView);
};
-gfx::Point ConvertPointToView(views::View* view, const gfx::Point& p) {
+gfx::Point ConvertPointToView(View* view, const gfx::Point& p) {
gfx::Point tmp(p);
- views::View::ConvertPointToView(view->GetRootView(), view, &tmp);
+ View::ConvertPointToView(view->GetRootView(), view, &tmp);
return tmp;
}
}
TEST_F(ViewTest, HitTestMasks) {
- scoped_ptr<views::Widget> widget(Widget::CreateWidget());
- views::RootView* root_view = widget->GetRootView();
+ Widget* widget = new Widget;
+ widget->Init(Widget::InitParams(Widget::InitParams::TYPE_WINDOW));
+ RootView* root_view = widget->GetRootView();
root_view->SetBounds(0, 0, 500, 500);
gfx::Rect v1_bounds = gfx::Rect(0, 0, 100, 100);
@@ -822,6 +763,8 @@
EXPECT_EQ(v2, root_view->GetEventHandlerForPoint(v2_centerpoint));
EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_origin));
EXPECT_EQ(root_view, root_view->GetEventHandlerForPoint(v2_origin));
+
+ widget->CloseNow();
}
TEST_F(ViewTest, Textfield) {
@@ -832,7 +775,7 @@
ui::Clipboard clipboard;
- Widget* widget = Widget::CreateWidget();
+ Widget* widget = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
@@ -856,6 +799,8 @@
EXPECT_EQ(kText, textfield->text());
textfield->ClearSelection();
EXPECT_EQ(kEmptyString, textfield->GetSelectedText());
+
+ widget->CloseNow();
}
#if defined(OS_WIN)
@@ -868,7 +813,7 @@
ui::Clipboard clipboard;
- Widget* widget = Widget::CreateWidget();
+ Widget* widget = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(0, 0, 100, 100);
widget->Init(params);
@@ -968,6 +913,7 @@
::SendMessage(normal->GetTestingHandle(), WM_PASTE, 0, 0);
::GetWindowText(normal->GetTestingHandle(), buffer, 1024);
EXPECT_EQ(kReadOnlyText, std::wstring(buffer));
+ widget->CloseNow();
}
#endif
@@ -982,14 +928,14 @@
#if defined(OS_WIN)
TEST_F(ViewTest, ActivateAccelerator) {
// Register a keyboard accelerator before the view is added to a window.
- views::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0);
// Create a window and add the view as its child.
- scoped_ptr<Widget> widget(Widget::CreateWidget());
+ scoped_ptr<Widget> widget(new Widget);
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.delete_on_destroy = false;
params.bounds = gfx::Rect(0, 0, 100, 100);
@@ -998,9 +944,8 @@
root->AddChildView(view);
// Get the focus manager.
- views::FocusManager* focus_manager =
- views::FocusManager::GetFocusManagerForNativeView(
- widget->GetNativeView());
+ FocusManager* focus_manager = FocusManager::GetFocusManagerForNativeView(
+ widget->GetNativeView());
ASSERT_TRUE(focus_manager);
// Hit the return key and see if it takes effect.
@@ -1008,7 +953,7 @@
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 1);
// Hit the escape key. Nothing should happen.
- views::Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
+ Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator));
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 1);
EXPECT_EQ(view->accelerator_count_map_[escape_accelerator], 0);
@@ -1049,13 +994,13 @@
#if defined(OS_WIN)
TEST_F(ViewTest, HiddenViewWithAccelerator) {
- views::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
+ Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
TestView* view = new TestView();
view->Reset();
view->AddAccelerator(return_accelerator);
EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0);
- scoped_ptr<Widget> widget(Widget::CreateWidget());
+ scoped_ptr<Widget> widget(new Widget);
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.delete_on_destroy = false;
params.bounds = gfx::Rect(0, 0, 100, 100);
@@ -1063,9 +1008,8 @@
RootView* root = widget->GetRootView();
root->AddChildView(view);
- views::FocusManager* focus_manager =
- views::FocusManager::GetFocusManagerForNativeView(
- widget->GetNativeView());
+ FocusManager* focus_manager = FocusManager::GetFocusManagerForNativeView(
+ widget->GetNativeView());
ASSERT_TRUE(focus_manager);
view->SetVisible(false);
@@ -1157,16 +1101,15 @@
// area that it opens the test windows. --beng
TEST_F(ViewTest, DISABLED_RerouteMouseWheelTest) {
TestViewWithControls* view_with_controls = new TestViewWithControls();
- views::Window* window1 =
- views::Window::CreateChromeWindow(
- NULL, gfx::Rect(0, 0, 100, 100),
- new SimpleWindowDelegate(view_with_controls));
+ Window* window1 = Window::CreateChromeWindow(
+ NULL, gfx::Rect(0, 0, 100, 100),
+ new SimpleWindowDelegate(view_with_controls));
window1->Show();
ScrollView* scroll_view = new ScrollView();
scroll_view->SetContents(new ScrollableTestView());
- views::Window* window2 =
- views::Window::CreateChromeWindow(NULL, gfx::Rect(200, 200, 100, 100),
- new SimpleWindowDelegate(scroll_view));
+ Window* window2 = Window::CreateChromeWindow(
+ NULL, gfx::Rect(200, 200, 100, 100),
+ new SimpleWindowDelegate(scroll_view));
window2->Show();
EXPECT_EQ(0, scroll_view->GetVisibleRect().y());
@@ -1201,6 +1144,9 @@
::SendMessage(view_with_controls->text_field_->GetTestingHandle(),
WM_MOUSEWHEEL, MAKEWPARAM(0, -20), MAKELPARAM(50, 50));
EXPECT_EQ(80, scroll_view->GetVisibleRect().y());
+
+ window1->CloseNow();
+ window2->CloseNow();
}
#endif
@@ -1208,8 +1154,7 @@
// Dialogs' default button
////////////////////////////////////////////////////////////////////////////////
-namespace ui {
-class MockMenuModel : public MenuModel {
+class MockMenuModel : public ui::MenuModel {
public:
MOCK_CONST_METHOD0(HasIcons, bool());
MOCK_CONST_METHOD1(GetFirstItemIndex, int(gfx::NativeMenu native_menu));
@@ -1224,7 +1169,7 @@
MOCK_CONST_METHOD1(IsItemCheckedAt, bool(int index));
MOCK_CONST_METHOD1(GetGroupIdAt, int(int index));
MOCK_METHOD2(GetIconAt, bool(int index, SkBitmap* icon));
- MOCK_CONST_METHOD1(GetButtonMenuItemAt, ButtonMenuItemModel*(int index));
+ MOCK_CONST_METHOD1(GetButtonMenuItemAt, ui::ButtonMenuItemModel*(int index));
MOCK_CONST_METHOD1(IsEnabledAt, bool(int index));
MOCK_CONST_METHOD1(IsVisibleAt, bool(int index));
MOCK_CONST_METHOD1(GetSubmenuModelAt, MenuModel*(int index));
@@ -1234,15 +1179,14 @@
int disposition));
MOCK_METHOD0(MenuWillShow, void());
MOCK_METHOD0(MenuClosed, void());
- MOCK_METHOD1(SetMenuModelDelegate, void(MenuModelDelegate* delegate));
+ MOCK_METHOD1(SetMenuModelDelegate, void(ui::MenuModelDelegate* delegate));
MOCK_METHOD3(GetModelAndIndexForCommandId, bool(int command_id,
MenuModel** model, int* index));
};
-}
class TestDialog : public DialogDelegate, public ButtonListener {
public:
- explicit TestDialog(ui::MockMenuModel* mock_menu_model)
+ explicit TestDialog(MockMenuModel* mock_menu_model)
: contents_(NULL),
button1_(NULL),
button2_(NULL),
@@ -1254,7 +1198,7 @@
oked_(false) {
}
- // views::DialogDelegate implementation:
+ // DialogDelegate implementation:
virtual int GetDefaultDialogButton() const {
return MessageBoxFlags::DIALOGBUTTON_OK;
}
@@ -1285,8 +1229,8 @@
return false;
}
- // views::ButtonListener implementation.
- virtual void ButtonPressed(Button* sender, const views::Event& event) {
+ // ButtonListener implementation.
+ virtual void ButtonPressed(Button* sender, const Event& event) {
last_pressed_button_ = sender;
}
@@ -1313,7 +1257,7 @@
NativeButtonBase* checkbox_;
ButtonDropDown* button_drop_;
Button* last_pressed_button_;
- ui::MockMenuModel* mock_menu_model_;
+ MockMenuModel* mock_menu_model_;
bool canceled_;
bool oked_;
@@ -1338,14 +1282,13 @@
virtual void SetUp() {
test_dialog_ = new TestDialog(NULL);
- views::Window* window =
- views::Window::CreateChromeWindow(NULL, gfx::Rect(0, 0, 100, 100),
- test_dialog_);
+ Window* window = Window::CreateChromeWindow(NULL, gfx::Rect(0, 0, 100, 100),
+ test_dialog_);
window->Show();
focus_manager_ = test_dialog_->contents_->GetFocusManager();
ASSERT_TRUE(focus_manager_ != NULL);
client_view_ =
- static_cast<views::DialogClientView*>(window->client_view());
+ static_cast<DialogClientView*>(window->client_view());
ok_button_ = client_view_->ok_button();
cancel_button_ = client_view_->cancel_button();
}
@@ -1380,11 +1323,11 @@
test_dialog_->ResetStates();
}
- views::FocusManager* focus_manager_;
+ FocusManager* focus_manager_;
TestDialog* test_dialog_;
DialogClientView* client_view_;
- views::NativeButton* ok_button_;
- views::NativeButton* cancel_button_;
+ NativeButton* ok_button_;
+ NativeButton* cancel_button_;
};
TEST_F(DefaultButtonTest, DialogDefaultButtonTest) {
@@ -1443,9 +1386,8 @@
virtual void SetUp() {
test_dialog_ = new TestDialog(&mock_menu_model_);
- views::Window* window =
- views::Window::CreateChromeWindow(NULL, gfx::Rect(0, 0, 100, 100),
- test_dialog_);
+ Window* window = Window::CreateChromeWindow(NULL, gfx::Rect(0, 0, 100, 100),
+ test_dialog_);
window->Show();
test_dialog_->button_drop_->SetBounds(0, 0, 100, 100);
// We have to cast the button back into a View in order to invoke it's
@@ -1454,7 +1396,7 @@
}
TestDialog* test_dialog_;
- ui::MockMenuModel mock_menu_model_;
+ MockMenuModel mock_menu_model_;
// This is owned by test_dialog_.
View* button_as_view_;
@@ -1499,9 +1441,9 @@
// TODO(oshima): we probably should enable this for entire tests on linux.
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
#endif
- scoped_ptr<views::Widget> window(CreateWidget());
+ scoped_ptr<Widget> window(CreateWidget());
window->Init(NULL, gfx::Rect(0, 0, 500, 300));
- views::RootView* root_view = window->GetRootView();
+ RootView* root_view = window->GetRootView();
NativeButtonBase* native = new NativeButtonBase(NULL, L"Native");
root_view->SetContentsView(native);
@@ -1520,7 +1462,7 @@
////////////////////////////////////////////////////////////////////////////////
// Native view hierachy
////////////////////////////////////////////////////////////////////////////////
-class TestNativeViewHierarchy : public views::View {
+class TestNativeViewHierarchy : public View {
public:
TestNativeViewHierarchy() {
}
@@ -1547,14 +1489,14 @@
public:
explicit TestChangeNativeViewHierarchy(ViewTest *view_test) {
view_test_ = view_test;
- native_host_ = new views::NativeViewHost();
- host_ = Widget::CreateWidget();
+ native_host_ = new NativeViewHost();
+ host_ = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(0, 0, 500, 300);
host_->Init(params);
host_->GetRootView()->AddChildView(native_host_);
for (size_t i = 0; i < TestNativeViewHierarchy::kTotalViews; ++i) {
- windows_[i] = Widget::CreateWidget();
+ windows_[i] = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.parent = host_->GetNativeView();
params.bounds = gfx::Rect(0, 0, 500, 300);
@@ -1575,7 +1517,7 @@
}
void CheckEnumeratingNativeWidgets() {
- if (!host_->GetWindow())
+ if (!host_->GetContainingWindow())
return;
NativeWidget::NativeWidgets widgets;
NativeWidget::GetAllNativeWidgets(host_->GetNativeView(), &widgets);
@@ -1621,10 +1563,10 @@
}
}
- views::NativeViewHost* native_host_;
- views::Widget* host_;
- views::Widget* windows_[TestNativeViewHierarchy::kTotalViews];
- views::RootView* root_views_[TestNativeViewHierarchy::kTotalViews];
+ NativeViewHost* native_host_;
+ Widget* host_;
+ Widget* windows_[TestNativeViewHierarchy::kTotalViews];
+ RootView* root_views_[TestNativeViewHierarchy::kTotalViews];
TestNativeViewHierarchy* test_views_[TestNativeViewHierarchy::kTotalViews];
ViewTest* view_test_;
};
@@ -1679,7 +1621,7 @@
TestView* v2 = new TestView();
v2->SetBounds(100, 100, 200, 100);
- Widget* widget = Widget::CreateWidget();
+ Widget* widget = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
@@ -1716,7 +1658,7 @@
TestView* v2 = new TestView();
v2->SetBounds(100, 100, 200, 100);
- Widget* widget = Widget::CreateWidget();
+ Widget* widget = new Widget;
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(50, 50, 650, 650);
widget->Init(params);
@@ -1866,7 +1808,7 @@
TEST_F(ViewTest, OnVisibleBoundsChanged) {
gfx::Rect viewport_bounds(0, 0, 100, 100);
- scoped_ptr<Widget> widget(Widget::CreateWidget());
+ scoped_ptr<Widget> widget(new Widget);
Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
params.delete_on_destroy = false;
params.bounds = viewport_bounds;
@@ -1932,3 +1874,5 @@
top_view->scheduled_paint_rects_[1]);
EXPECT_EQ(gfx::Rect(10, 10, 40, 40), paint_rect);
}
+
+} // namespace views
« no previous file with comments | « views/view.cc ('k') | views/widget/drop_target_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698