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

Unified Diff: views/controls/textfield/textfield_views_model_unittest.cc

Issue 6004010: Implement clipboard features in views textfield. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 12 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
Index: views/controls/textfield/textfield_views_model_unittest.cc
diff --git a/views/controls/textfield/textfield_views_model_unittest.cc b/views/controls/textfield/textfield_views_model_unittest.cc
index fa09efa745fda63c7676143574b4f0622d282434..72ac6be3bac1ed3e8fee9911f2436ba68d93f5c8 100644
--- a/views/controls/textfield/textfield_views_model_unittest.cc
+++ b/views/controls/textfield/textfield_views_model_unittest.cc
@@ -2,12 +2,39 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "app/clipboard/clipboard.h"
+#include "base/message_loop.h"
+#include "base/scoped_ptr.h"
#include "base/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "views/controls/textfield/textfield_views_model.h"
+#include "views/views_delegate.h"
namespace views {
+class SimpleViewsDelegate : public views::ViewsDelegate {
+ public:
+ SimpleViewsDelegate() { clipboard_.reset(new Clipboard()); }
+ virtual Clipboard* GetClipboard() const { return clipboard_.get(); }
+ virtual void SaveWindowPlacement(const std::wstring& window_name,
+ const gfx::Rect& bounds, bool maximized) {}
+ virtual bool GetSavedWindowBounds(const std::wstring& window_name,
+ gfx::Rect* bounds) const { return false; }
+ virtual bool GetSavedMaximizedState(const std::wstring& window_name,
+ bool* maximized) const { return false; }
+ virtual void NotifyAccessibilityEvent(
+ views::View* view, AccessibilityTypes::Event event_type) {}
+#if defined(OS_WIN)
+ virtual HICON GetDefaultWindowIcon() const { return 0; }
+#endif
+ virtual void AddRef() {}
+ virtual void ReleaseRef() { MessageLoopForUI::current()->Quit(); }
+
+ private:
+ scoped_ptr<Clipboard> clipboard_;
+ DISALLOW_COPY_AND_ASSIGN(SimpleViewsDelegate);
+};
oshima 2011/01/04 22:36:49 Looks like there are several ViewsDelegate impl fo
varunjain 2011/01/05 16:19:31 Done.
+
#define EXPECT_STR_EQ(ascii, utf16) \
EXPECT_EQ(ASCIIToWide(ascii), UTF16ToWide(utf16))
@@ -282,4 +309,40 @@ TEST(TextfieldViewsModelTest, SetText) {
EXPECT_EQ(0U, model.cursor_pos());
}
+TEST(TextfieldViewsModelTest, Clipboard) {
+ views::ViewsDelegate::views_delegate = new SimpleViewsDelegate();
+ Clipboard* clipboard = views::ViewsDelegate::views_delegate->GetClipboard();
+ string16 clipboard_text;
+ TextfieldViewsModel model;
+
+ // Test for cut.
+ model.Append(ASCIIToUTF16("HELLO WORLD"));
+ model.MoveCursorToEnd(false);
+ model.MoveCursorToPreviousWord(true);
+ EXPECT_TRUE(model.HandleClipboardEvents(app::VKEY_X));
+ clipboard->ReadText(Clipboard::BUFFER_STANDARD, &clipboard_text);
+ EXPECT_STR_EQ("WORLD", clipboard_text);
+ EXPECT_STR_EQ("HELLO ", model.text());
+ EXPECT_EQ(6U, model.cursor_pos());
+
+ // Test for copy.
+ model.Append(ASCIIToUTF16("HELLO WORLD"));
+ model.SelectAll();
+ EXPECT_FALSE(model.HandleClipboardEvents(app::VKEY_C));
+ clipboard->ReadText(Clipboard::BUFFER_STANDARD, &clipboard_text);
+ EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text);
+ EXPECT_STR_EQ("HELLO HELLO WORLD", model.text());
+ EXPECT_EQ(0U, model.cursor_pos());
oshima 2011/01/04 22:36:49 can you add test case for cut&copy with no selecti
varunjain 2011/01/05 16:19:31 Done.
+
+ // Test for paste.
+ model.ClearSelection();
+ model.MoveCursorToEnd(false);
+ model.MoveCursorToPreviousWord(true);
+ EXPECT_TRUE(model.HandleClipboardEvents(app::VKEY_V));
+ clipboard->ReadText(Clipboard::BUFFER_STANDARD, &clipboard_text);
+ EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text);
+ EXPECT_STR_EQ("HELLO HELLO HELLO HELLO WORLD", model.text());
+ EXPECT_EQ(29U, model.cursor_pos());
+}
+
} // namespace views

Powered by Google App Engine
This is Rietveld 408576698