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..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 |