Chromium Code Reviews| Index: views/controls/textfield/native_textfield_views_unittest.cc |
| diff --git a/views/controls/textfield/native_textfield_views_unittest.cc b/views/controls/textfield/native_textfield_views_unittest.cc |
| index 9fc883c073e1c61a7ba485aa8b8bb44d0d484ae3..6a112af3aedfda6bad9c0e1f58a55c283b6ecd6e 100644 |
| --- a/views/controls/textfield/native_textfield_views_unittest.cc |
| +++ b/views/controls/textfield/native_textfield_views_unittest.cc |
| @@ -6,12 +6,24 @@ |
| #include "base/message_loop.h" |
| #include "base/utf_string_conversions.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "ui/base/clipboard/clipboard.h" |
| +#include "views/controls/menu/menu_2.h" |
| #include "views/controls/textfield/native_textfield_views.h" |
| #include "views/controls/textfield/textfield.h" |
| #include "views/controls/textfield/textfield_views_model.h" |
| #include "views/event.h" |
| #include "views/focus/focus_manager.h" |
| +#include "views/test/test_views_delegate.h" |
| #include "views/widget/widget.h" |
| +#include "views/views_delegate.h" |
| + |
| +#if !defined(OS_WIN) |
| +#if defined(TOUCH_UI) |
| +#include "views/controls/menu/native_menu_x.h" |
| +#else |
| +#include "views/controls/menu/native_menu_gtk.h" |
| +#endif |
| +#endif |
| namespace views { |
| @@ -88,6 +100,12 @@ class NativeTextfieldViewsTest : public ::testing::Test, |
| model_ = textfield_view_->model_.get(); |
| } |
| + views::Menu2* GetContextMenu() { |
| + if (!textfield_view_->context_menu_menu_.get()) |
| + textfield_view_->CreateContextMenu(); |
| + return textfield_view_->context_menu_menu_.get(); |
| + } |
| + |
| protected: |
| bool SendKeyEventToTextfieldViews(app::KeyboardCode key_code, |
| bool shift, |
| @@ -380,4 +398,38 @@ TEST_F(NativeTextfieldViewsTest, FocusTraversalTest) { |
| EXPECT_EQ(1, GetFocusedView()->GetID()); |
| } |
| +void VerifyTextfieldContextMenuContents(bool textfield_has_selection, |
| + menus::MenuModel* menu_model) { |
| + EXPECT_TRUE(menu_model->IsEnabledAt(4 /* Separator */)); |
| + EXPECT_TRUE(menu_model->IsEnabledAt(5 /* SELECT ALL */)); |
| + EXPECT_EQ(textfield_has_selection, menu_model->IsEnabledAt(0 /* CUT */)); |
| + EXPECT_EQ(textfield_has_selection, menu_model->IsEnabledAt(1 /* COPY */)); |
| + EXPECT_EQ(textfield_has_selection, menu_model->IsEnabledAt(3 /* DELETE */)); |
| + string16 str; |
| + views::ViewsDelegate::views_delegate->GetClipboard() |
| + ->ReadText(ui::Clipboard::BUFFER_STANDARD, &str); |
| + EXPECT_NE(str.empty(), menu_model->IsEnabledAt(2 /* PASTE */)); |
| +} |
| + |
| +TEST_F(NativeTextfieldViewsTest, ContextMenuDisplayTest) { |
| + views::ViewsDelegate::views_delegate = new TestViewsDelegate(); |
|
oshima
2011/01/12 18:46:25
don't you have to delete this?
tfarina
2011/01/12 19:19:19
It seems, refer to this CL for a fix?
http://coder
varunjain
2011/01/12 19:59:05
Fixed... I cannot believe I did this again (especi
|
| + InitTextfield(Textfield::STYLE_DEFAULT); |
| + textfield_->SetText(ASCIIToUTF16("hello world")); |
| + EXPECT_TRUE(GetContextMenu()); |
| + VerifyTextfieldContextMenuContents(false, GetContextMenu()->model()); |
| + |
| + textfield_->SelectAll(); |
| + VerifyTextfieldContextMenuContents(true, GetContextMenu()->model()); |
| +} |
| + |
| +#if !defined(OS_WIN) |
| +MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) { |
|
oshima
2011/01/12 18:46:25
why do we need this here?
varunjain
2011/01/12 19:59:05
for touchui=1 && chromeos=1, we do not get an impl
oshima
2011/01/12 21:01:47
That sounds like general issue with touchui&chrome
varunjain
2011/01/12 21:28:11
In the general case, when touchui=1&&chromeos=1, t
|
| +#if defined(TOUCH_UI) |
| + return new NativeMenuX(menu); |
| +#else |
| + return new NativeMenuGtk(menu); |
| +#endif |
| +} |
| +#endif |
| + |
| } // namespace views |