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

Side by Side Diff: ui/views/controls/textfield/textfield_unittest.cc

Issue 565583005: Clean up GestureEventDetails constructors (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Upload to the most recent patch Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/textfield/textfield.h" 5 #include "ui/views/controls/textfield/textfield.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 bool key_received_; 96 bool key_received_;
97 97
98 base::WeakPtrFactory<TestTextfield> weak_ptr_factory_; 98 base::WeakPtrFactory<TestTextfield> weak_ptr_factory_;
99 99
100 DISALLOW_COPY_AND_ASSIGN(TestTextfield); 100 DISALLOW_COPY_AND_ASSIGN(TestTextfield);
101 }; 101 };
102 102
103 // Convenience to make constructing a GestureEvent simpler. 103 // Convenience to make constructing a GestureEvent simpler.
104 class GestureEventForTest : public ui::GestureEvent { 104 class GestureEventForTest : public ui::GestureEvent {
105 public: 105 public:
106 GestureEventForTest(ui::EventType type, 106 GestureEventForTest(int x, int y, ui::GestureEventDetails details)
107 int x, 107 : GestureEvent(x, y, 0, base::TimeDelta(), details) {}
108 int y,
109 float delta_x,
110 float delta_y)
111 : GestureEvent(x,
112 y,
113 0,
114 base::TimeDelta(),
115 ui::GestureEventDetails(type, delta_x, delta_y)) {}
116 108
117 private: 109 private:
118 DISALLOW_COPY_AND_ASSIGN(GestureEventForTest); 110 DISALLOW_COPY_AND_ASSIGN(GestureEventForTest);
119 }; 111 };
120 112
121 // This controller will happily destroy the target textfield passed on 113 // This controller will happily destroy the target textfield passed on
122 // construction when a key event is triggered. 114 // construction when a key event is triggered.
123 class TextfieldDestroyerController : public views::TextfieldController { 115 class TextfieldDestroyerController : public views::TextfieldController {
124 public: 116 public:
125 explicit TextfieldDestroyerController(views::Textfield* target) 117 explicit TextfieldDestroyerController(views::Textfield* target)
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 textfield_->OnMousePressed(click); 315 textfield_->OnMousePressed(click);
324 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), 316 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(),
325 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT, 317 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT,
326 ui::EF_LEFT_MOUSE_BUTTON); 318 ui::EF_LEFT_MOUSE_BUTTON);
327 textfield_->OnMouseReleased(release); 319 textfield_->OnMouseReleased(release);
328 } 320 }
329 321
330 // Simulates a complete tap. 322 // Simulates a complete tap.
331 void Tap(const gfx::Point& point) { 323 void Tap(const gfx::Point& point) {
332 GestureEventForTest begin( 324 GestureEventForTest begin(
333 ui::ET_GESTURE_BEGIN, point.x(), point.y(), 0.0f, 0.0f); 325 point.x(), point.y(), ui::GestureEventDetails(ui::ET_GESTURE_BEGIN));
334 textfield_->OnGestureEvent(&begin); 326 textfield_->OnGestureEvent(&begin);
335 327
336 GestureEventForTest tap_down( 328 GestureEventForTest tap_down(
337 ui::ET_GESTURE_TAP_DOWN, point.x(), point.y(), 0.0f, 0.0f); 329 point.x(), point.y(), ui::GestureEventDetails(ui::ET_GESTURE_TAP_DOWN));
338 textfield_->OnGestureEvent(&tap_down); 330 textfield_->OnGestureEvent(&tap_down);
339 331
340 GestureEventForTest show_press( 332 GestureEventForTest show_press(
341 ui::ET_GESTURE_SHOW_PRESS, point.x(), point.y(), 0.0f, 0.0f); 333 point.x(),
334 point.y(),
335 ui::GestureEventDetails(ui::ET_GESTURE_SHOW_PRESS));
342 textfield_->OnGestureEvent(&show_press); 336 textfield_->OnGestureEvent(&show_press);
343 337
344 GestureEventForTest tap( 338 ui::GestureEventDetails tap_details(ui::ET_GESTURE_TAP);
345 ui::ET_GESTURE_TAP, point.x(), point.y(), 1.0f, 0.0f); 339 tap_details.set_tap_count(1);
340 GestureEventForTest tap(point.x(), point.y(), tap_details);
346 textfield_->OnGestureEvent(&tap); 341 textfield_->OnGestureEvent(&tap);
347 342
348 GestureEventForTest end( 343 GestureEventForTest end(
349 ui::ET_GESTURE_END, point.x(), point.y(), 0.0f, 0.0f); 344 point.x(), point.y(), ui::GestureEventDetails(ui::ET_GESTURE_END));
350 textfield_->OnGestureEvent(&end); 345 textfield_->OnGestureEvent(&end);
351 } 346 }
352 347
353 void VerifyTextfieldContextMenuContents(bool textfield_has_selection, 348 void VerifyTextfieldContextMenuContents(bool textfield_has_selection,
354 bool can_undo, 349 bool can_undo,
355 ui::MenuModel* menu) { 350 ui::MenuModel* menu) {
356 EXPECT_EQ(can_undo, menu->IsEnabledAt(0 /* UNDO */)); 351 EXPECT_EQ(can_undo, menu->IsEnabledAt(0 /* UNDO */));
357 EXPECT_TRUE(menu->IsEnabledAt(1 /* Separator */)); 352 EXPECT_TRUE(menu->IsEnabledAt(1 /* Separator */));
358 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(2 /* CUT */)); 353 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(2 /* CUT */));
359 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(3 /* COPY */)); 354 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(3 /* COPY */));
(...skipping 1590 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 // Touch selection and dragging currently only works for chromeos. 1945 // Touch selection and dragging currently only works for chromeos.
1951 #if defined(OS_CHROMEOS) 1946 #if defined(OS_CHROMEOS)
1952 TEST_F(TextfieldTest, TouchSelectionAndDraggingTest) { 1947 TEST_F(TextfieldTest, TouchSelectionAndDraggingTest) {
1953 InitTextfield(); 1948 InitTextfield();
1954 textfield_->SetText(ASCIIToUTF16("hello world")); 1949 textfield_->SetText(ASCIIToUTF16("hello world"));
1955 EXPECT_FALSE(test_api_->touch_selection_controller()); 1950 EXPECT_FALSE(test_api_->touch_selection_controller());
1956 const int x = GetCursorPositionX(2); 1951 const int x = GetCursorPositionX(2);
1957 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); 1952 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing);
1958 1953
1959 // Tapping on the textfield should turn on the TouchSelectionController. 1954 // Tapping on the textfield should turn on the TouchSelectionController.
1960 GestureEventForTest tap(ui::ET_GESTURE_TAP, x, 0, 1.0f, 0.0f); 1955 ui::GestureEventDetails tap_details(ui::ET_GESTURE_TAP);
1956 tap_details.set_tap_count(1);
1957 GestureEventForTest tap(x, 0, tap_details);
1961 textfield_->OnGestureEvent(&tap); 1958 textfield_->OnGestureEvent(&tap);
1962 EXPECT_TRUE(test_api_->touch_selection_controller()); 1959 EXPECT_TRUE(test_api_->touch_selection_controller());
1963 1960
1964 // Un-focusing the textfield should reset the TouchSelectionController 1961 // Un-focusing the textfield should reset the TouchSelectionController
1965 textfield_->GetFocusManager()->ClearFocus(); 1962 textfield_->GetFocusManager()->ClearFocus();
1966 EXPECT_FALSE(test_api_->touch_selection_controller()); 1963 EXPECT_FALSE(test_api_->touch_selection_controller());
1967 textfield_->RequestFocus(); 1964 textfield_->RequestFocus();
1968 1965
1969 // With touch editing enabled, long press should not show context menu. 1966 // With touch editing enabled, long press should not show context menu.
1970 // Instead, select word and invoke TouchSelectionController. 1967 // Instead, select word and invoke TouchSelectionController.
1971 GestureEventForTest long_press_1(ui::ET_GESTURE_LONG_PRESS, x, 0, 0.0f, 0.0f); 1968 GestureEventForTest long_press_1(
1969 x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS));
1972 textfield_->OnGestureEvent(&long_press_1); 1970 textfield_->OnGestureEvent(&long_press_1);
1973 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); 1971 EXPECT_STR_EQ("hello", textfield_->GetSelectedText());
1974 EXPECT_TRUE(test_api_->touch_selection_controller()); 1972 EXPECT_TRUE(test_api_->touch_selection_controller());
1975 EXPECT_TRUE(long_press_1.handled()); 1973 EXPECT_TRUE(long_press_1.handled());
1976 1974
1977 // With touch drag drop enabled, long pressing in the selected region should 1975 // With touch drag drop enabled, long pressing in the selected region should
1978 // start a drag and remove TouchSelectionController. 1976 // start a drag and remove TouchSelectionController.
1979 ASSERT_TRUE(switches::IsTouchDragDropEnabled()); 1977 ASSERT_TRUE(switches::IsTouchDragDropEnabled());
1980 GestureEventForTest long_press_2(ui::ET_GESTURE_LONG_PRESS, x, 0, 0.0f, 0.0f); 1978 GestureEventForTest long_press_2(
1979 x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS));
1981 textfield_->OnGestureEvent(&long_press_2); 1980 textfield_->OnGestureEvent(&long_press_2);
1982 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); 1981 EXPECT_STR_EQ("hello", textfield_->GetSelectedText());
1983 EXPECT_FALSE(test_api_->touch_selection_controller()); 1982 EXPECT_FALSE(test_api_->touch_selection_controller());
1984 EXPECT_FALSE(long_press_2.handled()); 1983 EXPECT_FALSE(long_press_2.handled());
1985 1984
1986 // After disabling touch drag drop, long pressing again in the selection 1985 // After disabling touch drag drop, long pressing again in the selection
1987 // region should not do anything. 1986 // region should not do anything.
1988 CommandLine::ForCurrentProcess()->AppendSwitch( 1987 CommandLine::ForCurrentProcess()->AppendSwitch(
1989 switches::kDisableTouchDragDrop); 1988 switches::kDisableTouchDragDrop);
1990 ASSERT_FALSE(switches::IsTouchDragDropEnabled()); 1989 ASSERT_FALSE(switches::IsTouchDragDropEnabled());
1991 GestureEventForTest long_press_3(ui::ET_GESTURE_LONG_PRESS, x, 0, 0.0f, 0.0f); 1990 GestureEventForTest long_press_3(
1991 x, 0, ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS));
1992 textfield_->OnGestureEvent(&long_press_3); 1992 textfield_->OnGestureEvent(&long_press_3);
1993 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); 1993 EXPECT_STR_EQ("hello", textfield_->GetSelectedText());
1994 EXPECT_FALSE(test_api_->touch_selection_controller()); 1994 EXPECT_FALSE(test_api_->touch_selection_controller());
1995 EXPECT_FALSE(long_press_3.handled()); 1995 EXPECT_FALSE(long_press_3.handled());
1996 } 1996 }
1997 #endif 1997 #endif
1998 1998
1999 TEST_F(TextfieldTest, TouchSelectionInUnfocusableTextfield) { 1999 TEST_F(TextfieldTest, TouchSelectionInUnfocusableTextfield) {
2000 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); 2000 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing);
2001 2001
(...skipping 24 matching lines...) Expand all
2026 2026
2027 // Ensure the textfield will provide selected text for drag data. 2027 // Ensure the textfield will provide selected text for drag data.
2028 textfield_->SelectRange(gfx::Range(6, 12)); 2028 textfield_->SelectRange(gfx::Range(6, 12));
2029 const gfx::Point kStringPoint(GetCursorPositionX(9), 0); 2029 const gfx::Point kStringPoint(GetCursorPositionX(9), 0);
2030 2030
2031 // Enable touch-drag-drop to make long press effective. 2031 // Enable touch-drag-drop to make long press effective.
2032 CommandLine::ForCurrentProcess()->AppendSwitch( 2032 CommandLine::ForCurrentProcess()->AppendSwitch(
2033 switches::kEnableTouchDragDrop); 2033 switches::kEnableTouchDragDrop);
2034 2034
2035 // Create a long press event in the selected region should start a drag. 2035 // Create a long press event in the selected region should start a drag.
2036 GestureEventForTest long_press(ui::ET_GESTURE_LONG_PRESS, kStringPoint.x(), 2036 GestureEventForTest long_press(
2037 kStringPoint.y(), 0.0f, 0.0f); 2037 kStringPoint.x(),
2038 kStringPoint.y(),
2039 ui::GestureEventDetails(ui::ET_GESTURE_LONG_PRESS));
2038 textfield_->OnGestureEvent(&long_press); 2040 textfield_->OnGestureEvent(&long_press);
2039 EXPECT_TRUE(textfield_->CanStartDragForView(NULL, kStringPoint, 2041 EXPECT_TRUE(textfield_->CanStartDragForView(NULL, kStringPoint,
2040 kStringPoint)); 2042 kStringPoint));
2041 } 2043 }
2042 2044
2043 TEST_F(TextfieldTest, GetTextfieldBaseline_FontFallbackTest) { 2045 TEST_F(TextfieldTest, GetTextfieldBaseline_FontFallbackTest) {
2044 InitTextfield(); 2046 InitTextfield();
2045 textfield_->SetText(UTF8ToUTF16("abc")); 2047 textfield_->SetText(UTF8ToUTF16("abc"));
2046 const int old_baseline = textfield_->GetBaseline(); 2048 const int old_baseline = textfield_->GetBaseline();
2047 2049
(...skipping 15 matching lines...) Expand all
2063 TextfieldDestroyerController controller(textfield_); 2065 TextfieldDestroyerController controller(textfield_);
2064 EXPECT_TRUE(controller.target()); 2066 EXPECT_TRUE(controller.target());
2065 2067
2066 // Send a key to trigger OnKeyEvent(). 2068 // Send a key to trigger OnKeyEvent().
2067 SendKeyEvent('X'); 2069 SendKeyEvent('X');
2068 2070
2069 EXPECT_FALSE(controller.target()); 2071 EXPECT_FALSE(controller.target());
2070 } 2072 }
2071 2073
2072 } // namespace views 2074 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/table/table_view_unittest.cc ('k') | ui/views/corewm/desktop_capture_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698