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 |