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..8087eafc64043c3aefcdd071fcb521de9ad8c119 100644 |
--- a/views/controls/textfield/native_textfield_views_unittest.cc |
+++ b/views/controls/textfield/native_textfield_views_unittest.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -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,11 @@ class NativeTextfieldViewsTest : public ::testing::Test, |
model_ = textfield_view_->model_.get(); |
} |
+ views::Menu2* GetContextMenu() { |
+ textfield_view_->InitContextMenuIfRequired(); |
+ return textfield_view_->context_menu_menu_.get(); |
+ } |
+ |
protected: |
bool SendKeyEventToTextfieldViews(app::KeyboardCode key_code, |
bool shift, |
@@ -380,4 +397,40 @@ 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) { |
+ scoped_ptr<TestViewsDelegate> test_views_delegate(new TestViewsDelegate()); |
+ views::ViewsDelegate* original_delegate = |
+ views::ViewsDelegate::views_delegate; |
+ views::ViewsDelegate::views_delegate = test_views_delegate.get(); |
+ InitTextfield(Textfield::STYLE_DEFAULT); |
+ textfield_->SetText(ASCIIToUTF16("hello world")); |
+ EXPECT_TRUE(GetContextMenu()); |
+ VerifyTextfieldContextMenuContents(false, GetContextMenu()->model()); |
+ |
+ textfield_->SelectAll(); |
+ VerifyTextfieldContextMenuContents(true, GetContextMenu()->model()); |
+ |
+ // Restore original delegate. |
+ views::ViewsDelegate::views_delegate = original_delegate; |
oshima
2011/01/12 21:01:47
can you use base/auto_reset.h ?
varunjain
2011/01/12 21:28:11
Done.
|
+} |
+ |
+#if defined(OS_CHROMEOS) && defined(TOUCH_UI) |
+MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) { |
+ return new NativeMenuX(menu); |
+} |
+#endif |
+ |
} // namespace views |