| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/native_textfield_views.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 |
| 11 #include "base/auto_reset.h" | 11 #include "base/auto_reset.h" |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/bind_helpers.h" | 13 #include "base/bind_helpers.h" |
| 14 #include "base/callback.h" | 14 #include "base/callback.h" |
| 15 #include "base/command_line.h" | 15 #include "base/command_line.h" |
| 16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
| 17 #include "base/pickle.h" | 17 #include "base/pickle.h" |
| 18 #include "base/strings/string16.h" | 18 #include "base/strings/string16.h" |
| 19 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
| 20 #include "grit/ui_strings.h" | 20 #include "grit/ui_strings.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
| 22 #include "ui/base/clipboard/clipboard.h" | 22 #include "ui/base/clipboard/clipboard.h" |
| 23 #include "ui/base/clipboard/scoped_clipboard_writer.h" | 23 #include "ui/base/clipboard/scoped_clipboard_writer.h" |
| 24 #include "ui/base/dragdrop/drag_drop_types.h" | 24 #include "ui/base/dragdrop/drag_drop_types.h" |
| 25 #include "ui/base/ime/text_input_client.h" | 25 #include "ui/base/ime/text_input_client.h" |
| 26 #include "ui/base/l10n/l10n_util.h" | 26 #include "ui/base/l10n/l10n_util.h" |
| 27 #include "ui/base/ui_base_switches.h" | 27 #include "ui/base/ui_base_switches.h" |
| 28 #include "ui/base/ui_base_switches_util.h" |
| 28 #include "ui/events/event.h" | 29 #include "ui/events/event.h" |
| 29 #include "ui/events/keycodes/keyboard_codes.h" | 30 #include "ui/events/keycodes/keyboard_codes.h" |
| 30 #include "ui/gfx/render_text.h" | 31 #include "ui/gfx/render_text.h" |
| 31 #include "ui/views/controls/textfield/textfield.h" | |
| 32 #include "ui/views/controls/textfield/textfield_controller.h" | 32 #include "ui/views/controls/textfield/textfield_controller.h" |
| 33 #include "ui/views/controls/textfield/textfield_views_model.h" | 33 #include "ui/views/controls/textfield/textfield_views_model.h" |
| 34 #include "ui/views/focus/focus_manager.h" | 34 #include "ui/views/focus/focus_manager.h" |
| 35 #include "ui/views/ime/mock_input_method.h" | 35 #include "ui/views/ime/mock_input_method.h" |
| 36 #include "ui/views/test/test_views_delegate.h" | 36 #include "ui/views/test/test_views_delegate.h" |
| 37 #include "ui/views/test/views_test_base.h" | 37 #include "ui/views/test/views_test_base.h" |
| 38 #include "ui/views/widget/native_widget_private.h" | 38 #include "ui/views/widget/native_widget_private.h" |
| 39 #include "ui/views/widget/widget.h" | 39 #include "ui/views/widget/widget.h" |
| 40 #include "url/gurl.h" | 40 #include "url/gurl.h" |
| 41 | 41 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 } | 110 } |
| 111 | 111 |
| 112 private: | 112 private: |
| 113 DISALLOW_COPY_AND_ASSIGN(GestureEventForTest); | 113 DISALLOW_COPY_AND_ASSIGN(GestureEventForTest); |
| 114 }; | 114 }; |
| 115 | 115 |
| 116 } // namespace | 116 } // namespace |
| 117 | 117 |
| 118 namespace views { | 118 namespace views { |
| 119 | 119 |
| 120 // TODO(oshima): Move tests that are independent of TextfieldViews to | 120 class TextfieldTest : public ViewsTestBase, public TextfieldController { |
| 121 // textfield_unittests.cc once we move the test utility functions | |
| 122 // from chrome/browser/automation/ to ui/base/test/. | |
| 123 class NativeTextfieldViewsTest : public ViewsTestBase, | |
| 124 public TextfieldController { | |
| 125 public: | 121 public: |
| 126 NativeTextfieldViewsTest() | 122 TextfieldTest() |
| 127 : widget_(NULL), | 123 : widget_(NULL), |
| 128 textfield_(NULL), | 124 textfield_(NULL), |
| 129 textfield_view_(NULL), | |
| 130 model_(NULL), | 125 model_(NULL), |
| 131 input_method_(NULL), | 126 input_method_(NULL), |
| 132 on_before_user_action_(0), | 127 on_before_user_action_(0), |
| 133 on_after_user_action_(0) { | 128 on_after_user_action_(0) { |
| 134 } | 129 } |
| 135 | 130 |
| 136 // ::testing::Test: | 131 // ::testing::Test: |
| 137 virtual void SetUp() { | 132 virtual void SetUp() { |
| 138 ViewsTestBase::SetUp(); | 133 ViewsTestBase::SetUp(); |
| 139 } | 134 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 ASSERT_FALSE(textfield_); | 170 ASSERT_FALSE(textfield_); |
| 176 textfield_ = new TestTextfield(style); | 171 textfield_ = new TestTextfield(style); |
| 177 textfield_->SetController(this); | 172 textfield_->SetController(this); |
| 178 widget_ = new Widget(); | 173 widget_ = new Widget(); |
| 179 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 174 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
| 180 params.bounds = gfx::Rect(100, 100, 100, 100); | 175 params.bounds = gfx::Rect(100, 100, 100, 100); |
| 181 widget_->Init(params); | 176 widget_->Init(params); |
| 182 View* container = new View(); | 177 View* container = new View(); |
| 183 widget_->SetContentsView(container); | 178 widget_->SetContentsView(container); |
| 184 container->AddChildView(textfield_); | 179 container->AddChildView(textfield_); |
| 185 | 180 textfield_->SetBoundsRect(params.bounds); |
| 186 textfield_view_ = textfield_->GetTextfieldViewForTesting(); | |
| 187 DCHECK(textfield_view_); | |
| 188 textfield_view_->SetBoundsRect(params.bounds); | |
| 189 textfield_->set_id(1); | 181 textfield_->set_id(1); |
| 190 | 182 |
| 191 for (int i = 1; i < count; i++) { | 183 for (int i = 1; i < count; i++) { |
| 192 Textfield* textfield = new Textfield(style); | 184 Textfield* textfield = new Textfield(style); |
| 193 container->AddChildView(textfield); | 185 container->AddChildView(textfield); |
| 194 textfield->set_id(i + 1); | 186 textfield->set_id(i + 1); |
| 195 } | 187 } |
| 196 | 188 |
| 197 model_ = textfield_view_->model_.get(); | 189 model_ = textfield_->model_.get(); |
| 198 model_->ClearEditHistory(); | 190 model_->ClearEditHistory(); |
| 199 | 191 |
| 200 input_method_ = new MockInputMethod(); | 192 input_method_ = new MockInputMethod(); |
| 201 widget_->ReplaceInputMethod(input_method_); | 193 widget_->ReplaceInputMethod(input_method_); |
| 202 | 194 |
| 203 // Activate the widget and focus the textfield for input handling. | 195 // Activate the widget and focus the textfield for input handling. |
| 204 widget_->Activate(); | 196 widget_->Activate(); |
| 205 textfield_->RequestFocus(); | 197 textfield_->RequestFocus(); |
| 206 } | 198 } |
| 207 | 199 |
| 208 ui::MenuModel* GetContextMenuModel() { | 200 ui::MenuModel* GetContextMenuModel() { |
| 209 textfield_view_->UpdateContextMenu(); | 201 textfield_->UpdateContextMenu(); |
| 210 return textfield_view_->context_menu_contents_.get(); | 202 return textfield_->context_menu_contents_.get(); |
| 211 } | 203 } |
| 212 | 204 |
| 213 ui::TouchSelectionController* GetTouchSelectionController() { | 205 ui::TouchSelectionController* GetTouchSelectionController() { |
| 214 return textfield_view_->touch_selection_controller_.get(); | 206 return textfield_->touch_selection_controller_.get(); |
| 215 } | 207 } |
| 216 | 208 |
| 217 protected: | 209 protected: |
| 218 void SendKeyEvent(ui::KeyboardCode key_code, | 210 void SendKeyEvent(ui::KeyboardCode key_code, |
| 219 bool alt, | 211 bool alt, |
| 220 bool shift, | 212 bool shift, |
| 221 bool control, | 213 bool control, |
| 222 bool caps_lock) { | 214 bool caps_lock) { |
| 223 int flags = (alt ? ui::EF_ALT_DOWN : 0) | | 215 int flags = (alt ? ui::EF_ALT_DOWN : 0) | |
| 224 (shift ? ui::EF_SHIFT_DOWN : 0) | | 216 (shift ? ui::EF_SHIFT_DOWN : 0) | |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 ui::Clipboard::GetForCurrentThread(), | 253 ui::Clipboard::GetForCurrentThread(), |
| 262 ui::CLIPBOARD_TYPE_COPY_PASTE); | 254 ui::CLIPBOARD_TYPE_COPY_PASTE); |
| 263 clipboard_writer.WriteText(ASCIIToUTF16(text)); | 255 clipboard_writer.WriteText(ASCIIToUTF16(text)); |
| 264 } | 256 } |
| 265 | 257 |
| 266 View* GetFocusedView() { | 258 View* GetFocusedView() { |
| 267 return widget_->GetFocusManager()->GetFocusedView(); | 259 return widget_->GetFocusManager()->GetFocusedView(); |
| 268 } | 260 } |
| 269 | 261 |
| 270 int GetCursorPositionX(int cursor_pos) { | 262 int GetCursorPositionX(int cursor_pos) { |
| 271 gfx::RenderText* render_text = textfield_view_->GetRenderText(); | 263 return textfield_->GetRenderText()->GetCursorBounds( |
| 272 return render_text->GetCursorBounds( | |
| 273 gfx::SelectionModel(cursor_pos, gfx::CURSOR_FORWARD), false).x(); | 264 gfx::SelectionModel(cursor_pos, gfx::CURSOR_FORWARD), false).x(); |
| 274 } | 265 } |
| 275 | 266 |
| 276 // Get the current cursor bounds. | 267 // Get the current cursor bounds. |
| 277 gfx::Rect GetCursorBounds() { | 268 gfx::Rect GetCursorBounds() { |
| 278 gfx::RenderText* render_text = textfield_view_->GetRenderText(); | 269 return textfield_->GetRenderText()->GetUpdatedCursorBounds(); |
| 279 gfx::Rect bounds = render_text->GetUpdatedCursorBounds(); | |
| 280 return bounds; | |
| 281 } | 270 } |
| 282 | 271 |
| 283 // Get the cursor bounds of |sel|. | 272 // Get the cursor bounds of |sel|. |
| 284 gfx::Rect GetCursorBounds(const gfx::SelectionModel& sel) { | 273 gfx::Rect GetCursorBounds(const gfx::SelectionModel& sel) { |
| 285 gfx::RenderText* render_text = textfield_view_->GetRenderText(); | 274 return textfield_->GetRenderText()->GetCursorBounds(sel, true); |
| 286 gfx::Rect bounds = render_text->GetCursorBounds(sel, true); | |
| 287 return bounds; | |
| 288 } | 275 } |
| 289 | 276 |
| 290 gfx::Rect GetDisplayRect() { | 277 gfx::Rect GetDisplayRect() { |
| 291 return textfield_view_->GetRenderText()->display_rect(); | 278 return textfield_->GetRenderText()->display_rect(); |
| 292 } | 279 } |
| 293 | 280 |
| 294 // Mouse click on the point whose x-axis is |bound|'s x plus |x_offset| and | 281 // Mouse click on the point whose x-axis is |bound|'s x plus |x_offset| and |
| 295 // y-axis is in the middle of |bound|'s vertical range. | 282 // y-axis is in the middle of |bound|'s vertical range. |
| 296 void MouseClick(const gfx::Rect bound, int x_offset) { | 283 void MouseClick(const gfx::Rect bound, int x_offset) { |
| 297 gfx::Point point(bound.x() + x_offset, bound.y() + bound.height() / 2); | 284 gfx::Point point(bound.x() + x_offset, bound.y() + bound.height() / 2); |
| 298 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, point, point, | 285 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, point, point, |
| 299 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 286 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 300 textfield_view_->OnMousePressed(click); | 287 textfield_->OnMousePressed(click); |
| 301 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, point, point, | 288 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, point, point, |
| 302 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 289 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 303 textfield_view_->OnMouseReleased(release); | 290 textfield_->OnMouseReleased(release); |
| 304 } | 291 } |
| 305 | 292 |
| 306 // This is to avoid double/triple click. | 293 // This is to avoid double/triple click. |
| 307 void NonClientMouseClick() { | 294 void NonClientMouseClick() { |
| 308 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 295 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
| 309 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT, | 296 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT, |
| 310 ui::EF_LEFT_MOUSE_BUTTON); | 297 ui::EF_LEFT_MOUSE_BUTTON); |
| 311 textfield_view_->OnMousePressed(click); | 298 textfield_->OnMousePressed(click); |
| 312 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 299 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 313 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT, | 300 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_NON_CLIENT, |
| 314 ui::EF_LEFT_MOUSE_BUTTON); | 301 ui::EF_LEFT_MOUSE_BUTTON); |
| 315 textfield_view_->OnMouseReleased(release); | 302 textfield_->OnMouseReleased(release); |
| 316 } | 303 } |
| 317 | 304 |
| 318 // Wrap for visibility in test classes. | 305 // Wrap for visibility in test classes. |
| 319 ui::TextInputType GetTextInputType() { | 306 ui::TextInputType GetTextInputType() { |
| 320 return textfield_view_->GetTextInputType(); | 307 return textfield_->GetTextInputType(); |
| 321 } | 308 } |
| 322 | 309 |
| 323 void VerifyTextfieldContextMenuContents(bool textfield_has_selection, | 310 void VerifyTextfieldContextMenuContents(bool textfield_has_selection, |
| 324 bool can_undo, | 311 bool can_undo, |
| 325 ui::MenuModel* menu) { | 312 ui::MenuModel* menu) { |
| 326 EXPECT_EQ(can_undo, menu->IsEnabledAt(0 /* UNDO */)); | 313 EXPECT_EQ(can_undo, menu->IsEnabledAt(0 /* UNDO */)); |
| 327 EXPECT_TRUE(menu->IsEnabledAt(1 /* Separator */)); | 314 EXPECT_TRUE(menu->IsEnabledAt(1 /* Separator */)); |
| 328 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(2 /* CUT */)); | 315 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(2 /* CUT */)); |
| 329 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(3 /* COPY */)); | 316 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(3 /* COPY */)); |
| 330 EXPECT_NE(GetClipboardText().empty(), menu->IsEnabledAt(4 /* PASTE */)); | 317 EXPECT_NE(GetClipboardText().empty(), menu->IsEnabledAt(4 /* PASTE */)); |
| 331 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(5 /* DELETE */)); | 318 EXPECT_EQ(textfield_has_selection, menu->IsEnabledAt(5 /* DELETE */)); |
| 332 EXPECT_TRUE(menu->IsEnabledAt(6 /* Separator */)); | 319 EXPECT_TRUE(menu->IsEnabledAt(6 /* Separator */)); |
| 333 EXPECT_TRUE(menu->IsEnabledAt(7 /* SELECT ALL */)); | 320 EXPECT_TRUE(menu->IsEnabledAt(7 /* SELECT ALL */)); |
| 334 } | 321 } |
| 335 | 322 |
| 336 // We need widget to populate wrapper class. | 323 // We need widget to populate wrapper class. |
| 337 Widget* widget_; | 324 Widget* widget_; |
| 338 | 325 |
| 339 TestTextfield* textfield_; | 326 TestTextfield* textfield_; |
| 340 NativeTextfieldViews* textfield_view_; | |
| 341 TextfieldViewsModel* model_; | 327 TextfieldViewsModel* model_; |
| 342 | 328 |
| 343 // The string from Controller::ContentsChanged callback. | 329 // The string from Controller::ContentsChanged callback. |
| 344 base::string16 last_contents_; | 330 base::string16 last_contents_; |
| 345 | 331 |
| 346 // For testing input method related behaviors. | 332 // For testing input method related behaviors. |
| 347 MockInputMethod* input_method_; | 333 MockInputMethod* input_method_; |
| 348 | 334 |
| 349 // Indicates how many times OnBeforeUserAction() is called. | 335 // Indicates how many times OnBeforeUserAction() is called. |
| 350 int on_before_user_action_; | 336 int on_before_user_action_; |
| 351 | 337 |
| 352 // Indicates how many times OnAfterUserAction() is called. | 338 // Indicates how many times OnAfterUserAction() is called. |
| 353 int on_after_user_action_; | 339 int on_after_user_action_; |
| 354 | 340 |
| 355 private: | 341 private: |
| 356 DISALLOW_COPY_AND_ASSIGN(NativeTextfieldViewsTest); | 342 DISALLOW_COPY_AND_ASSIGN(TextfieldTest); |
| 357 }; | 343 }; |
| 358 | 344 |
| 359 TEST_F(NativeTextfieldViewsTest, ModelChangesTest) { | 345 TEST_F(TextfieldTest, ModelChangesTest) { |
| 360 InitTextfield(Textfield::STYLE_DEFAULT); | 346 InitTextfield(Textfield::STYLE_DEFAULT); |
| 361 | 347 |
| 362 // TextfieldController::ContentsChanged() shouldn't be called when changing | 348 // TextfieldController::ContentsChanged() shouldn't be called when changing |
| 363 // text programmatically. | 349 // text programmatically. |
| 364 last_contents_.clear(); | 350 last_contents_.clear(); |
| 365 textfield_->SetText(ASCIIToUTF16("this is")); | 351 textfield_->SetText(ASCIIToUTF16("this is")); |
| 366 | 352 |
| 367 EXPECT_STR_EQ("this is", model_->GetText()); | 353 EXPECT_STR_EQ("this is", model_->GetText()); |
| 368 EXPECT_STR_EQ("this is", textfield_->text()); | 354 EXPECT_STR_EQ("this is", textfield_->GetText()); |
| 369 EXPECT_TRUE(last_contents_.empty()); | 355 EXPECT_TRUE(last_contents_.empty()); |
| 370 | 356 |
| 371 textfield_->AppendText(ASCIIToUTF16(" a test")); | 357 textfield_->AppendText(ASCIIToUTF16(" a test")); |
| 372 EXPECT_STR_EQ("this is a test", model_->GetText()); | 358 EXPECT_STR_EQ("this is a test", model_->GetText()); |
| 373 EXPECT_STR_EQ("this is a test", textfield_->text()); | 359 EXPECT_STR_EQ("this is a test", textfield_->GetText()); |
| 374 EXPECT_TRUE(last_contents_.empty()); | 360 EXPECT_TRUE(last_contents_.empty()); |
| 375 | 361 |
| 376 EXPECT_EQ(base::string16(), textfield_->GetSelectedText()); | 362 EXPECT_EQ(base::string16(), textfield_->GetSelectedText()); |
| 377 textfield_->SelectAll(false); | 363 textfield_->SelectAll(false); |
| 378 EXPECT_STR_EQ("this is a test", textfield_->GetSelectedText()); | 364 EXPECT_STR_EQ("this is a test", textfield_->GetSelectedText()); |
| 379 EXPECT_TRUE(last_contents_.empty()); | 365 EXPECT_TRUE(last_contents_.empty()); |
| 380 } | 366 } |
| 381 | 367 |
| 382 TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCase) { | 368 TEST_F(TextfieldTest, ModelChangesTestLowerCase) { |
| 383 // Check if |model_|'s text is properly lowercased for STYLE_LOWERCASE. | 369 // Check if |model_|'s text is properly lowercased for STYLE_LOWERCASE. |
| 384 InitTextfield(Textfield::STYLE_LOWERCASE); | 370 InitTextfield(Textfield::STYLE_LOWERCASE); |
| 385 EXPECT_EQ(0U, textfield_->GetCursorPosition()); | 371 EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
| 386 | 372 |
| 387 last_contents_.clear(); | 373 last_contents_.clear(); |
| 388 textfield_->SetText(ASCIIToUTF16("THIS IS")); | 374 textfield_->SetText(ASCIIToUTF16("THIS IS")); |
| 389 EXPECT_EQ(7U, textfield_->GetCursorPosition()); | 375 EXPECT_EQ(7U, textfield_->GetCursorPosition()); |
| 390 | 376 |
| 391 EXPECT_STR_EQ("this is", model_->GetText()); | 377 EXPECT_STR_EQ("this is", textfield_->GetText()); |
| 392 EXPECT_STR_EQ("THIS IS", textfield_->text()); | |
| 393 EXPECT_TRUE(last_contents_.empty()); | 378 EXPECT_TRUE(last_contents_.empty()); |
| 394 | 379 |
| 395 textfield_->AppendText(ASCIIToUTF16(" A TEST")); | 380 textfield_->AppendText(ASCIIToUTF16(" A TEST")); |
| 396 EXPECT_EQ(7U, textfield_->GetCursorPosition()); | 381 EXPECT_EQ(7U, textfield_->GetCursorPosition()); |
| 397 EXPECT_STR_EQ("this is a test", model_->GetText()); | 382 EXPECT_STR_EQ("this is a test", textfield_->GetText()); |
| 398 EXPECT_STR_EQ("THIS IS A TEST", textfield_->text()); | |
| 399 | 383 |
| 400 EXPECT_TRUE(last_contents_.empty()); | 384 EXPECT_TRUE(last_contents_.empty()); |
| 401 } | 385 } |
| 402 | 386 |
| 403 TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseI18n) { | 387 TEST_F(TextfieldTest, ModelChangesTestLowerCaseI18n) { |
| 404 // Check if lower case conversion works for non-ASCII characters. | 388 // Check if lower case conversion works for non-ASCII characters. |
| 405 InitTextfield(Textfield::STYLE_LOWERCASE); | 389 InitTextfield(Textfield::STYLE_LOWERCASE); |
| 406 EXPECT_EQ(0U, textfield_->GetCursorPosition()); | 390 EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
| 407 | 391 |
| 408 last_contents_.clear(); | 392 last_contents_.clear(); |
| 409 // Zenkaku Japanese "ABCabc" | 393 // Zenkaku Japanese "ABCabc" |
| 410 textfield_->SetText(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43")); | 394 textfield_->SetText(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43")); |
| 411 EXPECT_EQ(6U, textfield_->GetCursorPosition()); | 395 EXPECT_EQ(6U, textfield_->GetCursorPosition()); |
| 412 // Zenkaku Japanese "abcabc" | 396 // Zenkaku Japanese "abcabc" |
| 413 EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43"), | 397 EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43"), |
| 414 model_->GetText()); | 398 textfield_->GetText()); |
| 415 // Zenkaku Japanese "ABCabc" | |
| 416 EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43"), | |
| 417 textfield_->text()); | |
| 418 EXPECT_TRUE(last_contents_.empty()); | 399 EXPECT_TRUE(last_contents_.empty()); |
| 419 | 400 |
| 420 // Zenkaku Japanese "XYZxyz" | 401 // Zenkaku Japanese "XYZxyz" |
| 421 textfield_->AppendText(WideToUTF16(L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A")); | 402 textfield_->AppendText(WideToUTF16(L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A")); |
| 422 EXPECT_EQ(6U, textfield_->GetCursorPosition()); | 403 EXPECT_EQ(6U, textfield_->GetCursorPosition()); |
| 423 // Zenkaku Japanese "abcabcxyzxyz" | 404 // Zenkaku Japanese "abcabcxyzxyz" |
| 424 EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43" | 405 EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43" |
| 425 L"\xFF58\xFF59\xFF5A\xFF58\xFF59\xFF5A"), | 406 L"\xFF58\xFF59\xFF5A\xFF58\xFF59\xFF5A"), |
| 426 model_->GetText()); | 407 textfield_->GetText()); |
| 427 // Zenkaku Japanese "ABCabcXYZxyz" | |
| 428 EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43" | |
| 429 L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A"), | |
| 430 textfield_->text()); | |
| 431 EXPECT_TRUE(last_contents_.empty()); | 408 EXPECT_TRUE(last_contents_.empty()); |
| 432 } | 409 } |
| 433 | 410 |
| 434 TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseWithLocale) { | 411 TEST_F(TextfieldTest, ModelChangesTestLowerCaseWithLocale) { |
| 435 // Check if lower case conversion honors locale properly. | 412 // Check if lower case conversion honors locale properly. |
| 436 std::string locale = l10n_util::GetApplicationLocale(""); | 413 std::string locale = l10n_util::GetApplicationLocale(""); |
| 437 base::i18n::SetICUDefaultLocale("tr"); | 414 base::i18n::SetICUDefaultLocale("tr"); |
| 438 | 415 |
| 439 InitTextfield(Textfield::STYLE_LOWERCASE); | 416 InitTextfield(Textfield::STYLE_LOWERCASE); |
| 440 EXPECT_EQ(0U, textfield_->GetCursorPosition()); | 417 EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
| 441 | 418 |
| 442 last_contents_.clear(); | 419 last_contents_.clear(); |
| 443 // Turkish 'I' should be converted to dotless 'i' (U+0131). | 420 // Turkish 'I' should be converted to dotless 'i' (U+0131). |
| 444 textfield_->SetText(WideToUTF16(L"I")); | 421 textfield_->SetText(WideToUTF16(L"I")); |
| 445 EXPECT_EQ(1U, textfield_->GetCursorPosition()); | 422 EXPECT_EQ(1U, textfield_->GetCursorPosition()); |
| 446 EXPECT_EQ(WideToUTF16(L"\x0131"), model_->GetText()); | 423 EXPECT_EQ(WideToUTF16(L"\x0131"), textfield_->GetText()); |
| 447 EXPECT_EQ(WideToUTF16(L"I"), textfield_->text()); | |
| 448 EXPECT_TRUE(last_contents_.empty()); | 424 EXPECT_TRUE(last_contents_.empty()); |
| 449 | 425 |
| 450 base::i18n::SetICUDefaultLocale(locale); | 426 base::i18n::SetICUDefaultLocale(locale); |
| 451 | 427 |
| 452 // On default (en) locale, 'I' should be converted to 'i'. | 428 // On default (en) locale, 'I' should be converted to 'i'. |
| 453 textfield_->SetText(WideToUTF16(L"I")); | 429 textfield_->SetText(WideToUTF16(L"I")); |
| 454 EXPECT_EQ(1U, textfield_->GetCursorPosition()); | 430 EXPECT_EQ(1U, textfield_->GetCursorPosition()); |
| 455 EXPECT_EQ(WideToUTF16(L"i"), model_->GetText()); | 431 EXPECT_EQ(WideToUTF16(L"i"), textfield_->GetText()); |
| 456 EXPECT_EQ(WideToUTF16(L"I"), textfield_->text()); | |
| 457 EXPECT_TRUE(last_contents_.empty()); | 432 EXPECT_TRUE(last_contents_.empty()); |
| 458 } | 433 } |
| 459 | 434 |
| 460 TEST_F(NativeTextfieldViewsTest, KeyTest) { | 435 TEST_F(TextfieldTest, KeyTest) { |
| 461 InitTextfield(Textfield::STYLE_DEFAULT); | 436 InitTextfield(Textfield::STYLE_DEFAULT); |
| 462 // Event flags: key, alt, shift, ctrl, caps-lock. | 437 // Event flags: key, alt, shift, ctrl, caps-lock. |
| 463 SendKeyEvent(ui::VKEY_T, false, true, false, false); | 438 SendKeyEvent(ui::VKEY_T, false, true, false, false); |
| 464 SendKeyEvent(ui::VKEY_E, false, false, false, false); | 439 SendKeyEvent(ui::VKEY_E, false, false, false, false); |
| 465 SendKeyEvent(ui::VKEY_X, false, true, false, true); | 440 SendKeyEvent(ui::VKEY_X, false, true, false, true); |
| 466 SendKeyEvent(ui::VKEY_T, false, false, false, true); | 441 SendKeyEvent(ui::VKEY_T, false, false, false, true); |
| 467 SendKeyEvent(ui::VKEY_1, false, true, false, false); | 442 SendKeyEvent(ui::VKEY_1, false, true, false, false); |
| 468 SendKeyEvent(ui::VKEY_1, false, false, false, false); | 443 SendKeyEvent(ui::VKEY_1, false, false, false, false); |
| 469 SendKeyEvent(ui::VKEY_1, false, true, false, true); | 444 SendKeyEvent(ui::VKEY_1, false, true, false, true); |
| 470 SendKeyEvent(ui::VKEY_1, false, false, false, true); | 445 SendKeyEvent(ui::VKEY_1, false, false, false, true); |
| 471 EXPECT_STR_EQ("TexT!1!1", textfield_->text()); | 446 EXPECT_STR_EQ("TexT!1!1", textfield_->GetText()); |
| 472 } | 447 } |
| 473 | 448 |
| 474 TEST_F(NativeTextfieldViewsTest, ControlAndSelectTest) { | 449 TEST_F(TextfieldTest, ControlAndSelectTest) { |
| 475 // Insert a test string in a textfield. | 450 // Insert a test string in a textfield. |
| 476 InitTextfield(Textfield::STYLE_DEFAULT); | 451 InitTextfield(Textfield::STYLE_DEFAULT); |
| 477 textfield_->SetText(ASCIIToUTF16("one two three")); | 452 textfield_->SetText(ASCIIToUTF16("one two three")); |
| 478 SendKeyEvent(ui::VKEY_HOME, false /* shift */, false /* control */); | 453 SendKeyEvent(ui::VKEY_HOME, false /* shift */, false /* control */); |
| 479 SendKeyEvent(ui::VKEY_RIGHT, true, false); | 454 SendKeyEvent(ui::VKEY_RIGHT, true, false); |
| 480 SendKeyEvent(ui::VKEY_RIGHT, true, false); | 455 SendKeyEvent(ui::VKEY_RIGHT, true, false); |
| 481 SendKeyEvent(ui::VKEY_RIGHT, true, false); | 456 SendKeyEvent(ui::VKEY_RIGHT, true, false); |
| 482 | 457 |
| 483 EXPECT_STR_EQ("one", textfield_->GetSelectedText()); | 458 EXPECT_STR_EQ("one", textfield_->GetSelectedText()); |
| 484 | 459 |
| 485 // Test word select. | 460 // Test word select. |
| 486 SendKeyEvent(ui::VKEY_RIGHT, true, true); | 461 SendKeyEvent(ui::VKEY_RIGHT, true, true); |
| 487 EXPECT_STR_EQ("one two", textfield_->GetSelectedText()); | 462 EXPECT_STR_EQ("one two", textfield_->GetSelectedText()); |
| 488 SendKeyEvent(ui::VKEY_RIGHT, true, true); | 463 SendKeyEvent(ui::VKEY_RIGHT, true, true); |
| 489 EXPECT_STR_EQ("one two three", textfield_->GetSelectedText()); | 464 EXPECT_STR_EQ("one two three", textfield_->GetSelectedText()); |
| 490 SendKeyEvent(ui::VKEY_LEFT, true, true); | 465 SendKeyEvent(ui::VKEY_LEFT, true, true); |
| 491 EXPECT_STR_EQ("one two ", textfield_->GetSelectedText()); | 466 EXPECT_STR_EQ("one two ", textfield_->GetSelectedText()); |
| 492 SendKeyEvent(ui::VKEY_LEFT, true, true); | 467 SendKeyEvent(ui::VKEY_LEFT, true, true); |
| 493 EXPECT_STR_EQ("one ", textfield_->GetSelectedText()); | 468 EXPECT_STR_EQ("one ", textfield_->GetSelectedText()); |
| 494 | 469 |
| 495 // Replace the selected text. | 470 // Replace the selected text. |
| 496 SendKeyEvent(ui::VKEY_Z, true, false); | 471 SendKeyEvent(ui::VKEY_Z, true, false); |
| 497 SendKeyEvent(ui::VKEY_E, true, false); | 472 SendKeyEvent(ui::VKEY_E, true, false); |
| 498 SendKeyEvent(ui::VKEY_R, true, false); | 473 SendKeyEvent(ui::VKEY_R, true, false); |
| 499 SendKeyEvent(ui::VKEY_O, true, false); | 474 SendKeyEvent(ui::VKEY_O, true, false); |
| 500 SendKeyEvent(ui::VKEY_SPACE, false, false); | 475 SendKeyEvent(ui::VKEY_SPACE, false, false); |
| 501 EXPECT_STR_EQ("ZERO two three", textfield_->text()); | 476 EXPECT_STR_EQ("ZERO two three", textfield_->GetText()); |
| 502 | 477 |
| 503 SendKeyEvent(ui::VKEY_END, true, false); | 478 SendKeyEvent(ui::VKEY_END, true, false); |
| 504 EXPECT_STR_EQ("two three", textfield_->GetSelectedText()); | 479 EXPECT_STR_EQ("two three", textfield_->GetSelectedText()); |
| 505 SendKeyEvent(ui::VKEY_HOME, true, false); | 480 SendKeyEvent(ui::VKEY_HOME, true, false); |
| 506 EXPECT_STR_EQ("ZERO ", textfield_->GetSelectedText()); | 481 EXPECT_STR_EQ("ZERO ", textfield_->GetSelectedText()); |
| 507 } | 482 } |
| 508 | 483 |
| 509 TEST_F(NativeTextfieldViewsTest, InsertionDeletionTest) { | 484 TEST_F(TextfieldTest, InsertionDeletionTest) { |
| 510 // Insert a test string in a textfield. | 485 // Insert a test string in a textfield. |
| 511 InitTextfield(Textfield::STYLE_DEFAULT); | 486 InitTextfield(Textfield::STYLE_DEFAULT); |
| 512 for (size_t i = 0; i < 10; i++) | 487 for (size_t i = 0; i < 10; i++) |
| 513 SendKeyEvent(static_cast<ui::KeyboardCode>(ui::VKEY_A + i)); | 488 SendKeyEvent(static_cast<ui::KeyboardCode>(ui::VKEY_A + i)); |
| 514 EXPECT_STR_EQ("abcdefghij", textfield_->text()); | 489 EXPECT_STR_EQ("abcdefghij", textfield_->GetText()); |
| 515 | 490 |
| 516 // Test the delete and backspace keys. | 491 // Test the delete and backspace keys. |
| 517 textfield_->SelectRange(gfx::Range(5)); | 492 textfield_->SelectRange(gfx::Range(5)); |
| 518 for (int i = 0; i < 3; i++) | 493 for (int i = 0; i < 3; i++) |
| 519 SendKeyEvent(ui::VKEY_BACK); | 494 SendKeyEvent(ui::VKEY_BACK); |
| 520 EXPECT_STR_EQ("abfghij", textfield_->text()); | 495 EXPECT_STR_EQ("abfghij", textfield_->GetText()); |
| 521 for (int i = 0; i < 3; i++) | 496 for (int i = 0; i < 3; i++) |
| 522 SendKeyEvent(ui::VKEY_DELETE); | 497 SendKeyEvent(ui::VKEY_DELETE); |
| 523 EXPECT_STR_EQ("abij", textfield_->text()); | 498 EXPECT_STR_EQ("abij", textfield_->GetText()); |
| 524 | 499 |
| 525 // Select all and replace with "k". | 500 // Select all and replace with "k". |
| 526 textfield_->SelectAll(false); | 501 textfield_->SelectAll(false); |
| 527 SendKeyEvent(ui::VKEY_K); | 502 SendKeyEvent(ui::VKEY_K); |
| 528 EXPECT_STR_EQ("k", textfield_->text()); | 503 EXPECT_STR_EQ("k", textfield_->GetText()); |
| 529 | 504 |
| 530 // Delete the previous word from cursor. | 505 // Delete the previous word from cursor. |
| 531 textfield_->SetText(ASCIIToUTF16("one two three four")); | 506 textfield_->SetText(ASCIIToUTF16("one two three four")); |
| 532 SendKeyEvent(ui::VKEY_END); | 507 SendKeyEvent(ui::VKEY_END); |
| 533 SendKeyEvent(ui::VKEY_BACK, false, false, true, false); | 508 SendKeyEvent(ui::VKEY_BACK, false, false, true, false); |
| 534 EXPECT_STR_EQ("one two three ", textfield_->text()); | 509 EXPECT_STR_EQ("one two three ", textfield_->GetText()); |
| 535 | 510 |
| 536 // Delete text preceeding the cursor in chromeos, do nothing in windows. | 511 // Delete text preceeding the cursor in chromeos, do nothing in windows. |
| 537 SendKeyEvent(ui::VKEY_LEFT, false, false, true, false); | 512 SendKeyEvent(ui::VKEY_LEFT, false, false, true, false); |
| 538 SendKeyEvent(ui::VKEY_BACK, false, true, true, false); | 513 SendKeyEvent(ui::VKEY_BACK, false, true, true, false); |
| 539 #if defined(OS_WIN) | 514 #if defined(OS_WIN) |
| 540 EXPECT_STR_EQ("one two three ", textfield_->text()); | 515 EXPECT_STR_EQ("one two three ", textfield_->GetText()); |
| 541 #else | 516 #else |
| 542 EXPECT_STR_EQ("three ", textfield_->text()); | 517 EXPECT_STR_EQ("three ", textfield_->GetText()); |
| 543 #endif | 518 #endif |
| 544 | 519 |
| 545 // Delete the next word from cursor. | 520 // Delete the next word from cursor. |
| 546 textfield_->SetText(ASCIIToUTF16("one two three four")); | 521 textfield_->SetText(ASCIIToUTF16("one two three four")); |
| 547 SendKeyEvent(ui::VKEY_HOME); | 522 SendKeyEvent(ui::VKEY_HOME); |
| 548 SendKeyEvent(ui::VKEY_DELETE, false, false, true, false); | 523 SendKeyEvent(ui::VKEY_DELETE, false, false, true, false); |
| 549 EXPECT_STR_EQ(" two three four", textfield_->text()); | 524 EXPECT_STR_EQ(" two three four", textfield_->GetText()); |
| 550 | 525 |
| 551 // Delete text following the cursor in chromeos, do nothing in windows. | 526 // Delete text following the cursor in chromeos, do nothing in windows. |
| 552 SendKeyEvent(ui::VKEY_RIGHT, false, false, true, false); | 527 SendKeyEvent(ui::VKEY_RIGHT, false, false, true, false); |
| 553 SendKeyEvent(ui::VKEY_DELETE, false, true, true, false); | 528 SendKeyEvent(ui::VKEY_DELETE, false, true, true, false); |
| 554 #if defined(OS_WIN) | 529 #if defined(OS_WIN) |
| 555 EXPECT_STR_EQ(" two three four", textfield_->text()); | 530 EXPECT_STR_EQ(" two three four", textfield_->GetText()); |
| 556 #else | 531 #else |
| 557 EXPECT_STR_EQ(" two", textfield_->text()); | 532 EXPECT_STR_EQ(" two", textfield_->GetText()); |
| 558 #endif | 533 #endif |
| 559 } | 534 } |
| 560 | 535 |
| 561 TEST_F(NativeTextfieldViewsTest, PasswordTest) { | 536 TEST_F(TextfieldTest, PasswordTest) { |
| 562 InitTextfield(Textfield::STYLE_OBSCURED); | 537 InitTextfield(Textfield::STYLE_OBSCURED); |
| 563 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); | 538 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); |
| 564 EXPECT_TRUE(textfield_->enabled()); | 539 EXPECT_TRUE(textfield_->enabled()); |
| 565 EXPECT_TRUE(textfield_->focusable()); | 540 EXPECT_TRUE(textfield_->focusable()); |
| 566 | 541 |
| 567 last_contents_.clear(); | 542 last_contents_.clear(); |
| 568 textfield_->SetText(ASCIIToUTF16("password")); | 543 textfield_->SetText(ASCIIToUTF16("password")); |
| 569 // Ensure text() and the callback returns the actual text instead of "*". | 544 // Ensure GetText() and the callback returns the actual text instead of "*". |
| 570 EXPECT_STR_EQ("password", textfield_->text()); | 545 EXPECT_STR_EQ("password", textfield_->GetText()); |
| 571 EXPECT_TRUE(last_contents_.empty()); | 546 EXPECT_TRUE(last_contents_.empty()); |
| 572 model_->SelectAll(false); | 547 model_->SelectAll(false); |
| 573 SetClipboardText("foo"); | 548 SetClipboardText("foo"); |
| 574 | 549 |
| 575 // Cut and copy should be disabled. | 550 // Cut and copy should be disabled. |
| 576 EXPECT_FALSE(textfield_view_->IsCommandIdEnabled(IDS_APP_CUT)); | 551 EXPECT_FALSE(textfield_->IsCommandIdEnabled(IDS_APP_CUT)); |
| 577 textfield_view_->ExecuteCommand(IDS_APP_CUT, 0); | 552 textfield_->ExecuteCommand(IDS_APP_CUT, 0); |
| 578 SendKeyEvent(ui::VKEY_X, false, true); | 553 SendKeyEvent(ui::VKEY_X, false, true); |
| 579 EXPECT_FALSE(textfield_view_->IsCommandIdEnabled(IDS_APP_COPY)); | 554 EXPECT_FALSE(textfield_->IsCommandIdEnabled(IDS_APP_COPY)); |
| 580 textfield_view_->ExecuteCommand(IDS_APP_COPY, 0); | 555 textfield_->ExecuteCommand(IDS_APP_COPY, 0); |
| 581 SendKeyEvent(ui::VKEY_C, false, true); | 556 SendKeyEvent(ui::VKEY_C, false, true); |
| 582 SendKeyEvent(ui::VKEY_INSERT, false, true); | 557 SendKeyEvent(ui::VKEY_INSERT, false, true); |
| 583 EXPECT_STR_EQ("foo", base::string16(GetClipboardText())); | 558 EXPECT_STR_EQ("foo", base::string16(GetClipboardText())); |
| 584 EXPECT_STR_EQ("password", textfield_->text()); | 559 EXPECT_STR_EQ("password", textfield_->GetText()); |
| 585 // [Shift]+[Delete] should just delete without copying text to the clipboard. | 560 // [Shift]+[Delete] should just delete without copying text to the clipboard. |
| 586 textfield_->SelectAll(false); | 561 textfield_->SelectAll(false); |
| 587 SendKeyEvent(ui::VKEY_DELETE, true, false); | 562 SendKeyEvent(ui::VKEY_DELETE, true, false); |
| 588 | 563 |
| 589 // Paste should work normally. | 564 // Paste should work normally. |
| 590 EXPECT_TRUE(textfield_view_->IsCommandIdEnabled(IDS_APP_PASTE)); | 565 EXPECT_TRUE(textfield_->IsCommandIdEnabled(IDS_APP_PASTE)); |
| 591 textfield_view_->ExecuteCommand(IDS_APP_PASTE, 0); | 566 textfield_->ExecuteCommand(IDS_APP_PASTE, 0); |
| 592 SendKeyEvent(ui::VKEY_V, false, true); | 567 SendKeyEvent(ui::VKEY_V, false, true); |
| 593 SendKeyEvent(ui::VKEY_INSERT, true, false); | 568 SendKeyEvent(ui::VKEY_INSERT, true, false); |
| 594 EXPECT_STR_EQ("foo", base::string16(GetClipboardText())); | 569 EXPECT_STR_EQ("foo", base::string16(GetClipboardText())); |
| 595 EXPECT_STR_EQ("foofoofoo", textfield_->text()); | 570 EXPECT_STR_EQ("foofoofoo", textfield_->GetText()); |
| 596 } | 571 } |
| 597 | 572 |
| 598 TEST_F(NativeTextfieldViewsTest, InputTypeSetsObscured) { | 573 TEST_F(TextfieldTest, InputTypeSetsObscured) { |
| 599 InitTextfield(Textfield::STYLE_DEFAULT); | 574 InitTextfield(Textfield::STYLE_DEFAULT); |
| 600 | 575 |
| 601 // Defaults to TEXT | 576 // Defaults to TEXT |
| 602 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); | 577 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); |
| 603 | 578 |
| 604 // Setting to TEXT_INPUT_TYPE_PASSWORD also sets obscured state of textfield. | 579 // Setting to TEXT_INPUT_TYPE_PASSWORD also sets obscured state of textfield. |
| 605 textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); | 580 textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); |
| 606 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); | 581 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); |
| 607 EXPECT_TRUE(textfield_->IsObscured()); | 582 EXPECT_TRUE(textfield_->IsObscured()); |
| 608 } | 583 } |
| 609 | 584 |
| 610 TEST_F(NativeTextfieldViewsTest, ObscuredSetsInputType) { | 585 TEST_F(TextfieldTest, ObscuredSetsInputType) { |
| 611 InitTextfield(Textfield::STYLE_DEFAULT); | 586 InitTextfield(Textfield::STYLE_DEFAULT); |
| 612 | 587 |
| 613 // Defaults to TEXT | 588 // Defaults to TEXT |
| 614 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); | 589 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); |
| 615 | 590 |
| 616 textfield_->SetObscured(true); | 591 textfield_->SetObscured(true); |
| 617 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); | 592 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, GetTextInputType()); |
| 618 | 593 |
| 619 textfield_->SetObscured(false); | 594 textfield_->SetObscured(false); |
| 620 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); | 595 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); |
| 621 } | 596 } |
| 622 | 597 |
| 623 TEST_F(NativeTextfieldViewsTest, TextInputType) { | 598 TEST_F(TextfieldTest, TextInputType) { |
| 624 InitTextfield(Textfield::STYLE_DEFAULT); | 599 InitTextfield(Textfield::STYLE_DEFAULT); |
| 625 | 600 |
| 626 // Defaults to TEXT | 601 // Defaults to TEXT |
| 627 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); | 602 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, GetTextInputType()); |
| 628 | 603 |
| 629 // And can be set. | 604 // And can be set. |
| 630 textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_URL); | 605 textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_URL); |
| 631 EXPECT_EQ(ui::TEXT_INPUT_TYPE_URL, GetTextInputType()); | 606 EXPECT_EQ(ui::TEXT_INPUT_TYPE_URL, GetTextInputType()); |
| 632 | 607 |
| 633 // Readonly textfields have type NONE | 608 // Readonly textfields have type NONE |
| 634 textfield_->SetReadOnly(true); | 609 textfield_->SetReadOnly(true); |
| 635 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, GetTextInputType()); | 610 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, GetTextInputType()); |
| 636 | 611 |
| 637 textfield_->SetReadOnly(false); | 612 textfield_->SetReadOnly(false); |
| 638 EXPECT_EQ(ui::TEXT_INPUT_TYPE_URL, GetTextInputType()); | 613 EXPECT_EQ(ui::TEXT_INPUT_TYPE_URL, GetTextInputType()); |
| 639 | 614 |
| 640 // As do disabled textfields | 615 // As do disabled textfields |
| 641 textfield_->SetEnabled(false); | 616 textfield_->SetEnabled(false); |
| 642 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, GetTextInputType()); | 617 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, GetTextInputType()); |
| 643 } | 618 } |
| 644 | 619 |
| 645 TEST_F(NativeTextfieldViewsTest, OnKeyPressReturnValueTest) { | 620 TEST_F(TextfieldTest, OnKeyPressReturnValueTest) { |
| 646 InitTextfield(Textfield::STYLE_DEFAULT); | 621 InitTextfield(Textfield::STYLE_DEFAULT); |
| 647 | 622 |
| 648 // Character keys will be handled by input method. | 623 // Character keys will be handled by input method. |
| 649 SendKeyEvent(ui::VKEY_A); | 624 SendKeyEvent(ui::VKEY_A); |
| 650 EXPECT_TRUE(textfield_->key_received()); | 625 EXPECT_TRUE(textfield_->key_received()); |
| 651 EXPECT_FALSE(textfield_->key_handled()); | 626 EXPECT_FALSE(textfield_->key_handled()); |
| 652 textfield_->clear(); | 627 textfield_->clear(); |
| 653 | 628 |
| 654 // Home will be handled. | 629 // Home will be handled. |
| 655 SendKeyEvent(ui::VKEY_HOME); | 630 SendKeyEvent(ui::VKEY_HOME); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 EXPECT_TRUE(textfield_->key_handled()); | 673 EXPECT_TRUE(textfield_->key_handled()); |
| 699 textfield_->clear(); | 674 textfield_->clear(); |
| 700 | 675 |
| 701 // Now left key should not be handled. | 676 // Now left key should not be handled. |
| 702 SendKeyEvent(ui::VKEY_LEFT); | 677 SendKeyEvent(ui::VKEY_LEFT); |
| 703 EXPECT_TRUE(textfield_->key_received()); | 678 EXPECT_TRUE(textfield_->key_received()); |
| 704 EXPECT_FALSE(textfield_->key_handled()); | 679 EXPECT_FALSE(textfield_->key_handled()); |
| 705 textfield_->clear(); | 680 textfield_->clear(); |
| 706 } | 681 } |
| 707 | 682 |
| 708 TEST_F(NativeTextfieldViewsTest, CursorMovement) { | 683 TEST_F(TextfieldTest, CursorMovement) { |
| 709 InitTextfield(Textfield::STYLE_DEFAULT); | 684 InitTextfield(Textfield::STYLE_DEFAULT); |
| 710 | 685 |
| 711 // Test with trailing whitespace. | 686 // Test with trailing whitespace. |
| 712 textfield_->SetText(ASCIIToUTF16("one two hre ")); | 687 textfield_->SetText(ASCIIToUTF16("one two hre ")); |
| 713 | 688 |
| 714 // Send the cursor at the end. | 689 // Send the cursor at the end. |
| 715 SendKeyEvent(ui::VKEY_END); | 690 SendKeyEvent(ui::VKEY_END); |
| 716 | 691 |
| 717 // Ctrl+Left should move the cursor just before the last word. | 692 // Ctrl+Left should move the cursor just before the last word. |
| 718 SendKeyEvent(ui::VKEY_LEFT, false, true); | 693 SendKeyEvent(ui::VKEY_LEFT, false, true); |
| 719 SendKeyEvent(ui::VKEY_T); | 694 SendKeyEvent(ui::VKEY_T); |
| 720 EXPECT_STR_EQ("one two thre ", textfield_->text()); | 695 EXPECT_STR_EQ("one two thre ", textfield_->GetText()); |
| 721 EXPECT_STR_EQ("one two thre ", last_contents_); | 696 EXPECT_STR_EQ("one two thre ", last_contents_); |
| 722 | 697 |
| 723 // Ctrl+Right should move the cursor to the end of the last word. | 698 // Ctrl+Right should move the cursor to the end of the last word. |
| 724 SendKeyEvent(ui::VKEY_RIGHT, false, true); | 699 SendKeyEvent(ui::VKEY_RIGHT, false, true); |
| 725 SendKeyEvent(ui::VKEY_E); | 700 SendKeyEvent(ui::VKEY_E); |
| 726 EXPECT_STR_EQ("one two three ", textfield_->text()); | 701 EXPECT_STR_EQ("one two three ", textfield_->GetText()); |
| 727 EXPECT_STR_EQ("one two three ", last_contents_); | 702 EXPECT_STR_EQ("one two three ", last_contents_); |
| 728 | 703 |
| 729 // Ctrl+Right again should move the cursor to the end. | 704 // Ctrl+Right again should move the cursor to the end. |
| 730 SendKeyEvent(ui::VKEY_RIGHT, false, true); | 705 SendKeyEvent(ui::VKEY_RIGHT, false, true); |
| 731 SendKeyEvent(ui::VKEY_BACK); | 706 SendKeyEvent(ui::VKEY_BACK); |
| 732 EXPECT_STR_EQ("one two three", textfield_->text()); | 707 EXPECT_STR_EQ("one two three", textfield_->GetText()); |
| 733 EXPECT_STR_EQ("one two three", last_contents_); | 708 EXPECT_STR_EQ("one two three", last_contents_); |
| 734 | 709 |
| 735 // Test with leading whitespace. | 710 // Test with leading whitespace. |
| 736 textfield_->SetText(ASCIIToUTF16(" ne two")); | 711 textfield_->SetText(ASCIIToUTF16(" ne two")); |
| 737 | 712 |
| 738 // Send the cursor at the beginning. | 713 // Send the cursor at the beginning. |
| 739 SendKeyEvent(ui::VKEY_HOME); | 714 SendKeyEvent(ui::VKEY_HOME); |
| 740 | 715 |
| 741 // Ctrl+Right, then Ctrl+Left should move the cursor to the beginning of the | 716 // Ctrl+Right, then Ctrl+Left should move the cursor to the beginning of the |
| 742 // first word. | 717 // first word. |
| 743 SendKeyEvent(ui::VKEY_RIGHT, false, true); | 718 SendKeyEvent(ui::VKEY_RIGHT, false, true); |
| 744 SendKeyEvent(ui::VKEY_LEFT, false, true); | 719 SendKeyEvent(ui::VKEY_LEFT, false, true); |
| 745 SendKeyEvent(ui::VKEY_O); | 720 SendKeyEvent(ui::VKEY_O); |
| 746 EXPECT_STR_EQ(" one two", textfield_->text()); | 721 EXPECT_STR_EQ(" one two", textfield_->GetText()); |
| 747 EXPECT_STR_EQ(" one two", last_contents_); | 722 EXPECT_STR_EQ(" one two", last_contents_); |
| 748 | 723 |
| 749 // Ctrl+Left to move the cursor to the beginning of the first word. | 724 // Ctrl+Left to move the cursor to the beginning of the first word. |
| 750 SendKeyEvent(ui::VKEY_LEFT, false, true); | 725 SendKeyEvent(ui::VKEY_LEFT, false, true); |
| 751 // Ctrl+Left again should move the cursor back to the very beginning. | 726 // Ctrl+Left again should move the cursor back to the very beginning. |
| 752 SendKeyEvent(ui::VKEY_LEFT, false, true); | 727 SendKeyEvent(ui::VKEY_LEFT, false, true); |
| 753 SendKeyEvent(ui::VKEY_DELETE); | 728 SendKeyEvent(ui::VKEY_DELETE); |
| 754 EXPECT_STR_EQ("one two", textfield_->text()); | 729 EXPECT_STR_EQ("one two", textfield_->GetText()); |
| 755 EXPECT_STR_EQ("one two", last_contents_); | 730 EXPECT_STR_EQ("one two", last_contents_); |
| 756 } | 731 } |
| 757 | 732 |
| 758 TEST_F(NativeTextfieldViewsTest, FocusTraversalTest) { | 733 TEST_F(TextfieldTest, FocusTraversalTest) { |
| 759 InitTextfields(Textfield::STYLE_DEFAULT, 3); | 734 InitTextfields(Textfield::STYLE_DEFAULT, 3); |
| 760 textfield_->RequestFocus(); | 735 textfield_->RequestFocus(); |
| 761 | 736 |
| 762 EXPECT_EQ(1, GetFocusedView()->id()); | 737 EXPECT_EQ(1, GetFocusedView()->id()); |
| 763 widget_->GetFocusManager()->AdvanceFocus(false); | 738 widget_->GetFocusManager()->AdvanceFocus(false); |
| 764 EXPECT_EQ(2, GetFocusedView()->id()); | 739 EXPECT_EQ(2, GetFocusedView()->id()); |
| 765 widget_->GetFocusManager()->AdvanceFocus(false); | 740 widget_->GetFocusManager()->AdvanceFocus(false); |
| 766 EXPECT_EQ(3, GetFocusedView()->id()); | 741 EXPECT_EQ(3, GetFocusedView()->id()); |
| 767 // Cycle back to the first textfield. | 742 // Cycle back to the first textfield. |
| 768 widget_->GetFocusManager()->AdvanceFocus(false); | 743 widget_->GetFocusManager()->AdvanceFocus(false); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 780 | 755 |
| 781 // Request focus should still work. | 756 // Request focus should still work. |
| 782 textfield_->RequestFocus(); | 757 textfield_->RequestFocus(); |
| 783 EXPECT_EQ(1, GetFocusedView()->id()); | 758 EXPECT_EQ(1, GetFocusedView()->id()); |
| 784 | 759 |
| 785 // Test if clicking on textfield view sets the focus to textfield_. | 760 // Test if clicking on textfield view sets the focus to textfield_. |
| 786 widget_->GetFocusManager()->AdvanceFocus(true); | 761 widget_->GetFocusManager()->AdvanceFocus(true); |
| 787 EXPECT_EQ(3, GetFocusedView()->id()); | 762 EXPECT_EQ(3, GetFocusedView()->id()); |
| 788 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 763 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
| 789 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 764 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 790 textfield_view_->OnMousePressed(click); | 765 textfield_->OnMousePressed(click); |
| 791 EXPECT_EQ(1, GetFocusedView()->id()); | 766 EXPECT_EQ(1, GetFocusedView()->id()); |
| 792 } | 767 } |
| 793 | 768 |
| 794 TEST_F(NativeTextfieldViewsTest, ContextMenuDisplayTest) { | 769 TEST_F(TextfieldTest, ContextMenuDisplayTest) { |
| 795 InitTextfield(Textfield::STYLE_DEFAULT); | 770 InitTextfield(Textfield::STYLE_DEFAULT); |
| 796 EXPECT_TRUE(textfield_->context_menu_controller()); | 771 EXPECT_TRUE(textfield_->context_menu_controller()); |
| 797 textfield_->SetText(ASCIIToUTF16("hello world")); | 772 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 798 ui::Clipboard::GetForCurrentThread()->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE); | 773 ui::Clipboard::GetForCurrentThread()->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE); |
| 799 textfield_view_->ClearEditHistory(); | 774 textfield_->ClearEditHistory(); |
| 800 EXPECT_TRUE(GetContextMenuModel()); | 775 EXPECT_TRUE(GetContextMenuModel()); |
| 801 VerifyTextfieldContextMenuContents(false, false, GetContextMenuModel()); | 776 VerifyTextfieldContextMenuContents(false, false, GetContextMenuModel()); |
| 802 | 777 |
| 803 textfield_->SelectAll(false); | 778 textfield_->SelectAll(false); |
| 804 VerifyTextfieldContextMenuContents(true, false, GetContextMenuModel()); | 779 VerifyTextfieldContextMenuContents(true, false, GetContextMenuModel()); |
| 805 | 780 |
| 806 SendKeyEvent(ui::VKEY_T); | 781 SendKeyEvent(ui::VKEY_T); |
| 807 VerifyTextfieldContextMenuContents(false, true, GetContextMenuModel()); | 782 VerifyTextfieldContextMenuContents(false, true, GetContextMenuModel()); |
| 808 | 783 |
| 809 textfield_->SelectAll(false); | 784 textfield_->SelectAll(false); |
| 810 VerifyTextfieldContextMenuContents(true, true, GetContextMenuModel()); | 785 VerifyTextfieldContextMenuContents(true, true, GetContextMenuModel()); |
| 811 | 786 |
| 812 // Exercise the "paste enabled?" check in the verifier. | 787 // Exercise the "paste enabled?" check in the verifier. |
| 813 SetClipboardText("Test"); | 788 SetClipboardText("Test"); |
| 814 VerifyTextfieldContextMenuContents(true, true, GetContextMenuModel()); | 789 VerifyTextfieldContextMenuContents(true, true, GetContextMenuModel()); |
| 815 } | 790 } |
| 816 | 791 |
| 817 TEST_F(NativeTextfieldViewsTest, DoubleAndTripleClickTest) { | 792 TEST_F(TextfieldTest, DoubleAndTripleClickTest) { |
| 818 InitTextfield(Textfield::STYLE_DEFAULT); | 793 InitTextfield(Textfield::STYLE_DEFAULT); |
| 819 textfield_->SetText(ASCIIToUTF16("hello world")); | 794 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 820 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 795 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
| 821 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 796 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 822 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 797 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 823 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 798 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 824 ui::MouseEvent double_click( | 799 ui::MouseEvent double_click( |
| 825 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 800 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), |
| 826 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_DOUBLE_CLICK, | 801 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_IS_DOUBLE_CLICK, |
| 827 ui::EF_LEFT_MOUSE_BUTTON); | 802 ui::EF_LEFT_MOUSE_BUTTON); |
| 828 | 803 |
| 829 // Test for double click. | 804 // Test for double click. |
| 830 textfield_view_->OnMousePressed(click); | 805 textfield_->OnMousePressed(click); |
| 831 textfield_view_->OnMouseReleased(release); | 806 textfield_->OnMouseReleased(release); |
| 832 EXPECT_TRUE(textfield_->GetSelectedText().empty()); | 807 EXPECT_TRUE(textfield_->GetSelectedText().empty()); |
| 833 textfield_view_->OnMousePressed(double_click); | 808 textfield_->OnMousePressed(double_click); |
| 834 textfield_view_->OnMouseReleased(release); | 809 textfield_->OnMouseReleased(release); |
| 835 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); | 810 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); |
| 836 | 811 |
| 837 // Test for triple click. | 812 // Test for triple click. |
| 838 textfield_view_->OnMousePressed(click); | 813 textfield_->OnMousePressed(click); |
| 839 textfield_view_->OnMouseReleased(release); | 814 textfield_->OnMouseReleased(release); |
| 840 EXPECT_STR_EQ("hello world", textfield_->GetSelectedText()); | 815 EXPECT_STR_EQ("hello world", textfield_->GetSelectedText()); |
| 841 | 816 |
| 842 // Another click should reset back to double click. | 817 // Another click should reset back to double click. |
| 843 textfield_view_->OnMousePressed(click); | 818 textfield_->OnMousePressed(click); |
| 844 textfield_view_->OnMouseReleased(release); | 819 textfield_->OnMouseReleased(release); |
| 845 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); | 820 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); |
| 846 } | 821 } |
| 847 | 822 |
| 848 TEST_F(NativeTextfieldViewsTest, DragToSelect) { | 823 TEST_F(TextfieldTest, DragToSelect) { |
| 849 InitTextfield(Textfield::STYLE_DEFAULT); | 824 InitTextfield(Textfield::STYLE_DEFAULT); |
| 850 textfield_->SetText(ASCIIToUTF16("hello world")); | 825 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 851 const int kStart = GetCursorPositionX(5); | 826 const int kStart = GetCursorPositionX(5); |
| 852 const int kEnd = 500; | 827 const int kEnd = 500; |
| 853 gfx::Point start_point(kStart, 0); | 828 gfx::Point start_point(kStart, 0); |
| 854 gfx::Point end_point(kEnd, 0); | 829 gfx::Point end_point(kEnd, 0); |
| 855 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, start_point, start_point, | 830 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, start_point, start_point, |
| 856 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 831 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 857 ui::MouseEvent click_b(ui::ET_MOUSE_PRESSED, end_point, end_point, | 832 ui::MouseEvent click_b(ui::ET_MOUSE_PRESSED, end_point, end_point, |
| 858 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 833 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 859 ui::MouseEvent drag_left(ui::ET_MOUSE_DRAGGED, gfx::Point(), gfx::Point(), | 834 ui::MouseEvent drag_left(ui::ET_MOUSE_DRAGGED, gfx::Point(), gfx::Point(), |
| 860 ui::EF_LEFT_MOUSE_BUTTON, 0); | 835 ui::EF_LEFT_MOUSE_BUTTON, 0); |
| 861 ui::MouseEvent drag_right(ui::ET_MOUSE_DRAGGED, end_point, end_point, | 836 ui::MouseEvent drag_right(ui::ET_MOUSE_DRAGGED, end_point, end_point, |
| 862 ui::EF_LEFT_MOUSE_BUTTON, 0); | 837 ui::EF_LEFT_MOUSE_BUTTON, 0); |
| 863 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, end_point, end_point, | 838 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, end_point, end_point, |
| 864 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 839 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 865 textfield_view_->OnMousePressed(click_a); | 840 textfield_->OnMousePressed(click_a); |
| 866 EXPECT_TRUE(textfield_->GetSelectedText().empty()); | 841 EXPECT_TRUE(textfield_->GetSelectedText().empty()); |
| 867 // Check that dragging left selects the beginning of the string. | 842 // Check that dragging left selects the beginning of the string. |
| 868 textfield_view_->OnMouseDragged(drag_left); | 843 textfield_->OnMouseDragged(drag_left); |
| 869 base::string16 text_left = textfield_->GetSelectedText(); | 844 base::string16 text_left = textfield_->GetSelectedText(); |
| 870 EXPECT_STR_EQ("hello", text_left); | 845 EXPECT_STR_EQ("hello", text_left); |
| 871 // Check that dragging right selects the rest of the string. | 846 // Check that dragging right selects the rest of the string. |
| 872 textfield_view_->OnMouseDragged(drag_right); | 847 textfield_->OnMouseDragged(drag_right); |
| 873 base::string16 text_right = textfield_->GetSelectedText(); | 848 base::string16 text_right = textfield_->GetSelectedText(); |
| 874 EXPECT_STR_EQ(" world", text_right); | 849 EXPECT_STR_EQ(" world", text_right); |
| 875 // Check that releasing in the same location does not alter the selection. | 850 // Check that releasing in the same location does not alter the selection. |
| 876 textfield_view_->OnMouseReleased(release); | 851 textfield_->OnMouseReleased(release); |
| 877 EXPECT_EQ(text_right, textfield_->GetSelectedText()); | 852 EXPECT_EQ(text_right, textfield_->GetSelectedText()); |
| 878 // Check that dragging from beyond the text length works too. | 853 // Check that dragging from beyond the text length works too. |
| 879 textfield_view_->OnMousePressed(click_b); | 854 textfield_->OnMousePressed(click_b); |
| 880 textfield_view_->OnMouseDragged(drag_left); | 855 textfield_->OnMouseDragged(drag_left); |
| 881 textfield_view_->OnMouseReleased(release); | 856 textfield_->OnMouseReleased(release); |
| 882 EXPECT_EQ(textfield_->text(), textfield_->GetSelectedText()); | 857 EXPECT_EQ(textfield_->GetText(), textfield_->GetSelectedText()); |
| 883 } | 858 } |
| 884 | 859 |
| 885 #if defined(OS_WIN) | 860 #if defined(OS_WIN) |
| 886 TEST_F(NativeTextfieldViewsTest, DragAndDrop_AcceptDrop) { | 861 TEST_F(TextfieldTest, DragAndDrop_AcceptDrop) { |
| 887 InitTextfield(Textfield::STYLE_DEFAULT); | 862 InitTextfield(Textfield::STYLE_DEFAULT); |
| 888 textfield_->SetText(ASCIIToUTF16("hello world")); | 863 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 889 | 864 |
| 890 ui::OSExchangeData data; | 865 ui::OSExchangeData data; |
| 891 base::string16 string(ASCIIToUTF16("string ")); | 866 base::string16 string(ASCIIToUTF16("string ")); |
| 892 data.SetString(string); | 867 data.SetString(string); |
| 893 int formats = 0; | 868 int formats = 0; |
| 894 std::set<OSExchangeData::CustomFormat> custom_formats; | 869 std::set<OSExchangeData::CustomFormat> custom_formats; |
| 895 | 870 |
| 896 // Ensure that disabled textfields do not accept drops. | 871 // Ensure that disabled textfields do not accept drops. |
| 897 textfield_->SetEnabled(false); | 872 textfield_->SetEnabled(false); |
| 898 EXPECT_FALSE(textfield_view_->GetDropFormats(&formats, &custom_formats)); | 873 EXPECT_FALSE(textfield_->GetDropFormats(&formats, &custom_formats)); |
| 899 EXPECT_EQ(0, formats); | 874 EXPECT_EQ(0, formats); |
| 900 EXPECT_TRUE(custom_formats.empty()); | 875 EXPECT_TRUE(custom_formats.empty()); |
| 901 EXPECT_FALSE(textfield_view_->CanDrop(data)); | 876 EXPECT_FALSE(textfield_->CanDrop(data)); |
| 902 textfield_->SetEnabled(true); | 877 textfield_->SetEnabled(true); |
| 903 | 878 |
| 904 // Ensure that read-only textfields do not accept drops. | 879 // Ensure that read-only textfields do not accept drops. |
| 905 textfield_->SetReadOnly(true); | 880 textfield_->SetReadOnly(true); |
| 906 EXPECT_FALSE(textfield_view_->GetDropFormats(&formats, &custom_formats)); | 881 EXPECT_FALSE(textfield_->GetDropFormats(&formats, &custom_formats)); |
| 907 EXPECT_EQ(0, formats); | 882 EXPECT_EQ(0, formats); |
| 908 EXPECT_TRUE(custom_formats.empty()); | 883 EXPECT_TRUE(custom_formats.empty()); |
| 909 EXPECT_FALSE(textfield_view_->CanDrop(data)); | 884 EXPECT_FALSE(textfield_->CanDrop(data)); |
| 910 textfield_->SetReadOnly(false); | 885 textfield_->SetReadOnly(false); |
| 911 | 886 |
| 912 // Ensure that enabled and editable textfields do accept drops. | 887 // Ensure that enabled and editable textfields do accept drops. |
| 913 EXPECT_TRUE(textfield_view_->GetDropFormats(&formats, &custom_formats)); | 888 EXPECT_TRUE(textfield_->GetDropFormats(&formats, &custom_formats)); |
| 914 EXPECT_EQ(ui::OSExchangeData::STRING, formats); | 889 EXPECT_EQ(ui::OSExchangeData::STRING, formats); |
| 915 EXPECT_TRUE(custom_formats.empty()); | 890 EXPECT_TRUE(custom_formats.empty()); |
| 916 EXPECT_TRUE(textfield_view_->CanDrop(data)); | 891 EXPECT_TRUE(textfield_->CanDrop(data)); |
| 917 gfx::Point drop_point(GetCursorPositionX(6), 0); | 892 gfx::Point drop_point(GetCursorPositionX(6), 0); |
| 918 ui::DropTargetEvent drop(data, drop_point, drop_point, | 893 ui::DropTargetEvent drop(data, drop_point, drop_point, |
| 919 ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_MOVE); | 894 ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_MOVE); |
| 920 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_MOVE, | 895 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_MOVE, |
| 921 textfield_view_->OnDragUpdated(drop)); | 896 textfield_->OnDragUpdated(drop)); |
| 922 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, textfield_view_->OnPerformDrop(drop)); | 897 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, textfield_->OnPerformDrop(drop)); |
| 923 EXPECT_STR_EQ("hello string world", textfield_->text()); | 898 EXPECT_STR_EQ("hello string world", textfield_->GetText()); |
| 924 | 899 |
| 925 // Ensure that textfields do not accept non-OSExchangeData::STRING types. | 900 // Ensure that textfields do not accept non-OSExchangeData::STRING types. |
| 926 ui::OSExchangeData bad_data; | 901 ui::OSExchangeData bad_data; |
| 927 bad_data.SetFilename(base::FilePath(FILE_PATH_LITERAL("x"))); | 902 bad_data.SetFilename(base::FilePath(FILE_PATH_LITERAL("x"))); |
| 928 #if defined(OS_WIN) | 903 #if defined(OS_WIN) |
| 929 ui::OSExchangeData::CustomFormat fmt = ui::Clipboard::GetBitmapFormatType(); | 904 ui::OSExchangeData::CustomFormat fmt = ui::Clipboard::GetBitmapFormatType(); |
| 930 bad_data.SetPickledData(fmt, Pickle()); | 905 bad_data.SetPickledData(fmt, Pickle()); |
| 931 bad_data.SetFileContents(base::FilePath(L"x"), "x"); | 906 bad_data.SetFileContents(base::FilePath(L"x"), "x"); |
| 932 bad_data.SetHtml(base::string16(ASCIIToUTF16("x")), GURL("x.org")); | 907 bad_data.SetHtml(base::string16(ASCIIToUTF16("x")), GURL("x.org")); |
| 933 ui::OSExchangeData::DownloadFileInfo download(base::FilePath(), NULL); | 908 ui::OSExchangeData::DownloadFileInfo download(base::FilePath(), NULL); |
| 934 bad_data.SetDownloadFileInfo(download); | 909 bad_data.SetDownloadFileInfo(download); |
| 935 #endif | 910 #endif |
| 936 EXPECT_FALSE(textfield_view_->CanDrop(bad_data)); | 911 EXPECT_FALSE(textfield_->CanDrop(bad_data)); |
| 937 } | 912 } |
| 938 #endif | 913 #endif |
| 939 | 914 |
| 940 TEST_F(NativeTextfieldViewsTest, DragAndDrop_InitiateDrag) { | 915 TEST_F(TextfieldTest, DragAndDrop_InitiateDrag) { |
| 941 InitTextfield(Textfield::STYLE_DEFAULT); | 916 InitTextfield(Textfield::STYLE_DEFAULT); |
| 942 textfield_->SetText(ASCIIToUTF16("hello string world")); | 917 textfield_->SetText(ASCIIToUTF16("hello string world")); |
| 943 | 918 |
| 944 // Ensure the textfield will provide selected text for drag data. | 919 // Ensure the textfield will provide selected text for drag data. |
| 945 base::string16 string; | 920 base::string16 string; |
| 946 ui::OSExchangeData data; | 921 ui::OSExchangeData data; |
| 947 const gfx::Range kStringRange(6, 12); | 922 const gfx::Range kStringRange(6, 12); |
| 948 textfield_->SelectRange(kStringRange); | 923 textfield_->SelectRange(kStringRange); |
| 949 const gfx::Point kStringPoint(GetCursorPositionX(9), 0); | 924 const gfx::Point kStringPoint(GetCursorPositionX(9), 0); |
| 950 textfield_view_->WriteDragDataForView(NULL, kStringPoint, &data); | 925 textfield_->WriteDragDataForView(NULL, kStringPoint, &data); |
| 951 EXPECT_TRUE(data.GetString(&string)); | 926 EXPECT_TRUE(data.GetString(&string)); |
| 952 EXPECT_EQ(textfield_->GetSelectedText(), string); | 927 EXPECT_EQ(textfield_->GetSelectedText(), string); |
| 953 | 928 |
| 954 // Ensure that disabled textfields do not support drag operations. | 929 // Ensure that disabled textfields do not support drag operations. |
| 955 textfield_->SetEnabled(false); | 930 textfield_->SetEnabled(false); |
| 956 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, | 931 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, |
| 957 textfield_view_->GetDragOperationsForView(NULL, kStringPoint)); | 932 textfield_->GetDragOperationsForView(NULL, kStringPoint)); |
| 958 textfield_->SetEnabled(true); | 933 textfield_->SetEnabled(true); |
| 959 // Ensure that textfields without selections do not support drag operations. | 934 // Ensure that textfields without selections do not support drag operations. |
| 960 textfield_->ClearSelection(); | 935 textfield_->ClearSelection(); |
| 961 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, | 936 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, |
| 962 textfield_view_->GetDragOperationsForView(NULL, kStringPoint)); | 937 textfield_->GetDragOperationsForView(NULL, kStringPoint)); |
| 963 textfield_->SelectRange(kStringRange); | 938 textfield_->SelectRange(kStringRange); |
| 964 // Ensure that password textfields do not support drag operations. | 939 // Ensure that password textfields do not support drag operations. |
| 965 textfield_->SetObscured(true); | 940 textfield_->SetObscured(true); |
| 966 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, | 941 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, |
| 967 textfield_view_->GetDragOperationsForView(NULL, kStringPoint)); | 942 textfield_->GetDragOperationsForView(NULL, kStringPoint)); |
| 968 textfield_->SetObscured(false); | 943 textfield_->SetObscured(false); |
| 969 // Ensure that textfields only initiate drag operations inside the selection. | 944 // Ensure that textfields only initiate drag operations inside the selection. |
| 970 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, kStringPoint, kStringPoint, | 945 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, kStringPoint, kStringPoint, |
| 971 ui::EF_LEFT_MOUSE_BUTTON, | 946 ui::EF_LEFT_MOUSE_BUTTON, |
| 972 ui::EF_LEFT_MOUSE_BUTTON); | 947 ui::EF_LEFT_MOUSE_BUTTON); |
| 973 textfield_view_->OnMousePressed(press_event); | 948 textfield_->OnMousePressed(press_event); |
| 974 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, | 949 EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, |
| 975 textfield_view_->GetDragOperationsForView(NULL, gfx::Point())); | 950 textfield_->GetDragOperationsForView(NULL, gfx::Point())); |
| 976 EXPECT_FALSE(textfield_view_->CanStartDragForView(NULL, gfx::Point(), | 951 EXPECT_FALSE(textfield_->CanStartDragForView(NULL, gfx::Point(), |
| 977 gfx::Point())); | 952 gfx::Point())); |
| 978 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, | 953 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, |
| 979 textfield_view_->GetDragOperationsForView(NULL, kStringPoint)); | 954 textfield_->GetDragOperationsForView(NULL, kStringPoint)); |
| 980 EXPECT_TRUE(textfield_view_->CanStartDragForView(NULL, kStringPoint, | 955 EXPECT_TRUE(textfield_->CanStartDragForView(NULL, kStringPoint, |
| 981 gfx::Point())); | 956 gfx::Point())); |
| 982 // Ensure that textfields support local moves. | 957 // Ensure that textfields support local moves. |
| 983 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, | 958 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, |
| 984 textfield_view_->GetDragOperationsForView(textfield_view_, kStringPoint)); | 959 textfield_->GetDragOperationsForView(textfield_, kStringPoint)); |
| 985 } | 960 } |
| 986 | 961 |
| 987 TEST_F(NativeTextfieldViewsTest, DragAndDrop_ToTheRight) { | 962 TEST_F(TextfieldTest, DragAndDrop_ToTheRight) { |
| 988 InitTextfield(Textfield::STYLE_DEFAULT); | 963 InitTextfield(Textfield::STYLE_DEFAULT); |
| 989 textfield_->SetText(ASCIIToUTF16("hello world")); | 964 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 990 | 965 |
| 991 base::string16 string; | 966 base::string16 string; |
| 992 ui::OSExchangeData data; | 967 ui::OSExchangeData data; |
| 993 int formats = 0; | 968 int formats = 0; |
| 994 int operations = 0; | 969 int operations = 0; |
| 995 std::set<OSExchangeData::CustomFormat> custom_formats; | 970 std::set<OSExchangeData::CustomFormat> custom_formats; |
| 996 | 971 |
| 997 // Start dragging "ello". | 972 // Start dragging "ello". |
| 998 textfield_->SelectRange(gfx::Range(1, 5)); | 973 textfield_->SelectRange(gfx::Range(1, 5)); |
| 999 gfx::Point point(GetCursorPositionX(3), 0); | 974 gfx::Point point(GetCursorPositionX(3), 0); |
| 1000 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, point, point, | 975 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, point, point, |
| 1001 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 976 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 1002 textfield_view_->OnMousePressed(click_a); | 977 textfield_->OnMousePressed(click_a); |
| 1003 EXPECT_TRUE(textfield_view_->CanStartDragForView(textfield_view_, | 978 EXPECT_TRUE(textfield_->CanStartDragForView(textfield_, click_a.location(), |
| 1004 click_a.location(), gfx::Point())); | 979 gfx::Point())); |
| 1005 operations = textfield_view_->GetDragOperationsForView(textfield_view_, | 980 operations = textfield_->GetDragOperationsForView(textfield_, |
| 1006 click_a.location()); | 981 click_a.location()); |
| 1007 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, | 982 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, |
| 1008 operations); | 983 operations); |
| 1009 textfield_view_->WriteDragDataForView(NULL, click_a.location(), &data); | 984 textfield_->WriteDragDataForView(NULL, click_a.location(), &data); |
| 1010 EXPECT_TRUE(data.GetString(&string)); | 985 EXPECT_TRUE(data.GetString(&string)); |
| 1011 EXPECT_EQ(textfield_->GetSelectedText(), string); | 986 EXPECT_EQ(textfield_->GetSelectedText(), string); |
| 1012 EXPECT_TRUE(textfield_view_->GetDropFormats(&formats, &custom_formats)); | 987 EXPECT_TRUE(textfield_->GetDropFormats(&formats, &custom_formats)); |
| 1013 EXPECT_EQ(ui::OSExchangeData::STRING, formats); | 988 EXPECT_EQ(ui::OSExchangeData::STRING, formats); |
| 1014 EXPECT_TRUE(custom_formats.empty()); | 989 EXPECT_TRUE(custom_formats.empty()); |
| 1015 | 990 |
| 1016 // Drop "ello" after "w". | 991 // Drop "ello" after "w". |
| 1017 const gfx::Point kDropPoint(GetCursorPositionX(7), 0); | 992 const gfx::Point kDropPoint(GetCursorPositionX(7), 0); |
| 1018 EXPECT_TRUE(textfield_view_->CanDrop(data)); | 993 EXPECT_TRUE(textfield_->CanDrop(data)); |
| 1019 ui::DropTargetEvent drop_a(data, kDropPoint, kDropPoint, operations); | 994 ui::DropTargetEvent drop_a(data, kDropPoint, kDropPoint, operations); |
| 1020 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, | 995 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop_a)); |
| 1021 textfield_view_->OnDragUpdated(drop_a)); | 996 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnPerformDrop(drop_a)); |
| 1022 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, | 997 EXPECT_STR_EQ("h welloorld", textfield_->GetText()); |
| 1023 textfield_view_->OnPerformDrop(drop_a)); | 998 textfield_->OnDragDone(); |
| 1024 EXPECT_STR_EQ("h welloorld", textfield_->text()); | |
| 1025 textfield_view_->OnDragDone(); | |
| 1026 | 999 |
| 1027 // Undo/Redo the drag&drop change. | 1000 // Undo/Redo the drag&drop change. |
| 1028 SendKeyEvent(ui::VKEY_Z, false, true); | 1001 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1029 EXPECT_STR_EQ("hello world", textfield_->text()); | 1002 EXPECT_STR_EQ("hello world", textfield_->GetText()); |
| 1030 SendKeyEvent(ui::VKEY_Z, false, true); | 1003 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1031 EXPECT_STR_EQ("", textfield_->text()); | 1004 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1032 SendKeyEvent(ui::VKEY_Z, false, true); | 1005 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1033 EXPECT_STR_EQ("", textfield_->text()); | 1006 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1034 SendKeyEvent(ui::VKEY_Y, false, true); | 1007 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1035 EXPECT_STR_EQ("hello world", textfield_->text()); | 1008 EXPECT_STR_EQ("hello world", textfield_->GetText()); |
| 1036 SendKeyEvent(ui::VKEY_Y, false, true); | 1009 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1037 EXPECT_STR_EQ("h welloorld", textfield_->text()); | 1010 EXPECT_STR_EQ("h welloorld", textfield_->GetText()); |
| 1038 SendKeyEvent(ui::VKEY_Y, false, true); | 1011 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1039 EXPECT_STR_EQ("h welloorld", textfield_->text()); | 1012 EXPECT_STR_EQ("h welloorld", textfield_->GetText()); |
| 1040 } | 1013 } |
| 1041 | 1014 |
| 1042 TEST_F(NativeTextfieldViewsTest, DragAndDrop_ToTheLeft) { | 1015 TEST_F(TextfieldTest, DragAndDrop_ToTheLeft) { |
| 1043 InitTextfield(Textfield::STYLE_DEFAULT); | 1016 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1044 textfield_->SetText(ASCIIToUTF16("hello world")); | 1017 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 1045 | 1018 |
| 1046 base::string16 string; | 1019 base::string16 string; |
| 1047 ui::OSExchangeData data; | 1020 ui::OSExchangeData data; |
| 1048 int formats = 0; | 1021 int formats = 0; |
| 1049 int operations = 0; | 1022 int operations = 0; |
| 1050 std::set<OSExchangeData::CustomFormat> custom_formats; | 1023 std::set<OSExchangeData::CustomFormat> custom_formats; |
| 1051 | 1024 |
| 1052 // Start dragging " worl". | 1025 // Start dragging " worl". |
| 1053 textfield_->SelectRange(gfx::Range(5, 10)); | 1026 textfield_->SelectRange(gfx::Range(5, 10)); |
| 1054 gfx::Point point(GetCursorPositionX(7), 0); | 1027 gfx::Point point(GetCursorPositionX(7), 0); |
| 1055 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, point, point, | 1028 ui::MouseEvent click_a(ui::ET_MOUSE_PRESSED, point, point, |
| 1056 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 1029 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 1057 textfield_view_->OnMousePressed(click_a); | 1030 textfield_->OnMousePressed(click_a); |
| 1058 EXPECT_TRUE(textfield_view_->CanStartDragForView(textfield_view_, | 1031 EXPECT_TRUE(textfield_->CanStartDragForView(textfield_, click_a.location(), |
| 1059 click_a.location(), gfx::Point())); | 1032 gfx::Point())); |
| 1060 operations = textfield_view_->GetDragOperationsForView(textfield_view_, | 1033 operations = textfield_->GetDragOperationsForView(textfield_, |
| 1061 click_a.location()); | 1034 click_a.location()); |
| 1062 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, | 1035 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY, |
| 1063 operations); | 1036 operations); |
| 1064 textfield_view_->WriteDragDataForView(NULL, click_a.location(), &data); | 1037 textfield_->WriteDragDataForView(NULL, click_a.location(), &data); |
| 1065 EXPECT_TRUE(data.GetString(&string)); | 1038 EXPECT_TRUE(data.GetString(&string)); |
| 1066 EXPECT_EQ(textfield_->GetSelectedText(), string); | 1039 EXPECT_EQ(textfield_->GetSelectedText(), string); |
| 1067 EXPECT_TRUE(textfield_view_->GetDropFormats(&formats, &custom_formats)); | 1040 EXPECT_TRUE(textfield_->GetDropFormats(&formats, &custom_formats)); |
| 1068 EXPECT_EQ(ui::OSExchangeData::STRING, formats); | 1041 EXPECT_EQ(ui::OSExchangeData::STRING, formats); |
| 1069 EXPECT_TRUE(custom_formats.empty()); | 1042 EXPECT_TRUE(custom_formats.empty()); |
| 1070 | 1043 |
| 1071 // Drop " worl" after "h". | 1044 // Drop " worl" after "h". |
| 1072 EXPECT_TRUE(textfield_view_->CanDrop(data)); | 1045 EXPECT_TRUE(textfield_->CanDrop(data)); |
| 1073 gfx::Point drop_point(GetCursorPositionX(1), 0); | 1046 gfx::Point drop_point(GetCursorPositionX(1), 0); |
| 1074 ui::DropTargetEvent drop_a(data, drop_point, drop_point, operations); | 1047 ui::DropTargetEvent drop_a(data, drop_point, drop_point, operations); |
| 1075 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, | 1048 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop_a)); |
| 1076 textfield_view_->OnDragUpdated(drop_a)); | 1049 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnPerformDrop(drop_a)); |
| 1077 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, | 1050 EXPECT_STR_EQ("h worlellod", textfield_->GetText()); |
| 1078 textfield_view_->OnPerformDrop(drop_a)); | 1051 textfield_->OnDragDone(); |
| 1079 EXPECT_STR_EQ("h worlellod", textfield_->text()); | |
| 1080 textfield_view_->OnDragDone(); | |
| 1081 | 1052 |
| 1082 // Undo/Redo the drag&drop change. | 1053 // Undo/Redo the drag&drop change. |
| 1083 SendKeyEvent(ui::VKEY_Z, false, true); | 1054 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1084 EXPECT_STR_EQ("hello world", textfield_->text()); | 1055 EXPECT_STR_EQ("hello world", textfield_->GetText()); |
| 1085 SendKeyEvent(ui::VKEY_Z, false, true); | 1056 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1086 EXPECT_STR_EQ("", textfield_->text()); | 1057 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1087 SendKeyEvent(ui::VKEY_Z, false, true); | 1058 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1088 EXPECT_STR_EQ("", textfield_->text()); | 1059 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1089 SendKeyEvent(ui::VKEY_Y, false, true); | 1060 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1090 EXPECT_STR_EQ("hello world", textfield_->text()); | 1061 EXPECT_STR_EQ("hello world", textfield_->GetText()); |
| 1091 SendKeyEvent(ui::VKEY_Y, false, true); | 1062 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1092 EXPECT_STR_EQ("h worlellod", textfield_->text()); | 1063 EXPECT_STR_EQ("h worlellod", textfield_->GetText()); |
| 1093 SendKeyEvent(ui::VKEY_Y, false, true); | 1064 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1094 EXPECT_STR_EQ("h worlellod", textfield_->text()); | 1065 EXPECT_STR_EQ("h worlellod", textfield_->GetText()); |
| 1095 } | 1066 } |
| 1096 | 1067 |
| 1097 TEST_F(NativeTextfieldViewsTest, DragAndDrop_Canceled) { | 1068 TEST_F(TextfieldTest, DragAndDrop_Canceled) { |
| 1098 InitTextfield(Textfield::STYLE_DEFAULT); | 1069 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1099 textfield_->SetText(ASCIIToUTF16("hello world")); | 1070 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 1100 | 1071 |
| 1101 // Start dragging "worl". | 1072 // Start dragging "worl". |
| 1102 textfield_->SelectRange(gfx::Range(6, 10)); | 1073 textfield_->SelectRange(gfx::Range(6, 10)); |
| 1103 gfx::Point point(GetCursorPositionX(8), 0); | 1074 gfx::Point point(GetCursorPositionX(8), 0); |
| 1104 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, point, point, | 1075 ui::MouseEvent click(ui::ET_MOUSE_PRESSED, point, point, |
| 1105 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 1076 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 1106 textfield_view_->OnMousePressed(click); | 1077 textfield_->OnMousePressed(click); |
| 1107 ui::OSExchangeData data; | 1078 ui::OSExchangeData data; |
| 1108 textfield_view_->WriteDragDataForView(NULL, click.location(), &data); | 1079 textfield_->WriteDragDataForView(NULL, click.location(), &data); |
| 1109 EXPECT_TRUE(textfield_view_->CanDrop(data)); | 1080 EXPECT_TRUE(textfield_->CanDrop(data)); |
| 1110 // Drag the text over somewhere valid, outside the current selection. | 1081 // Drag the text over somewhere valid, outside the current selection. |
| 1111 gfx::Point drop_point(GetCursorPositionX(2), 0); | 1082 gfx::Point drop_point(GetCursorPositionX(2), 0); |
| 1112 ui::DropTargetEvent drop(data, drop_point, drop_point, | 1083 ui::DropTargetEvent drop(data, drop_point, drop_point, |
| 1113 ui::DragDropTypes::DRAG_MOVE); | 1084 ui::DragDropTypes::DRAG_MOVE); |
| 1114 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_view_->OnDragUpdated(drop)); | 1085 EXPECT_EQ(ui::DragDropTypes::DRAG_MOVE, textfield_->OnDragUpdated(drop)); |
| 1115 // "Cancel" the drag, via move and release over the selection, and OnDragDone. | 1086 // "Cancel" the drag, via move and release over the selection, and OnDragDone. |
| 1116 gfx::Point drag_point(GetCursorPositionX(9), 0); | 1087 gfx::Point drag_point(GetCursorPositionX(9), 0); |
| 1117 ui::MouseEvent drag(ui::ET_MOUSE_DRAGGED, drag_point, drag_point, | 1088 ui::MouseEvent drag(ui::ET_MOUSE_DRAGGED, drag_point, drag_point, |
| 1118 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1089 ui::EF_LEFT_MOUSE_BUTTON, 0); |
| 1119 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, drag_point, drag_point, | 1090 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, drag_point, drag_point, |
| 1120 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); | 1091 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); |
| 1121 textfield_view_->OnMouseDragged(drag); | 1092 textfield_->OnMouseDragged(drag); |
| 1122 textfield_view_->OnMouseReleased(release); | 1093 textfield_->OnMouseReleased(release); |
| 1123 textfield_view_->OnDragDone(); | 1094 textfield_->OnDragDone(); |
| 1124 EXPECT_EQ(ASCIIToUTF16("hello world"), textfield_->text()); | 1095 EXPECT_EQ(ASCIIToUTF16("hello world"), textfield_->GetText()); |
| 1125 } | 1096 } |
| 1126 | 1097 |
| 1127 TEST_F(NativeTextfieldViewsTest, ReadOnlyTest) { | 1098 TEST_F(TextfieldTest, ReadOnlyTest) { |
| 1128 InitTextfield(Textfield::STYLE_DEFAULT); | 1099 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1129 textfield_->SetText(ASCIIToUTF16("read only")); | 1100 textfield_->SetText(ASCIIToUTF16("read only")); |
| 1130 textfield_->SetReadOnly(true); | 1101 textfield_->SetReadOnly(true); |
| 1131 EXPECT_TRUE(textfield_->enabled()); | 1102 EXPECT_TRUE(textfield_->enabled()); |
| 1132 EXPECT_TRUE(textfield_->focusable()); | 1103 EXPECT_TRUE(textfield_->focusable()); |
| 1133 | 1104 |
| 1134 SendKeyEvent(ui::VKEY_HOME); | 1105 SendKeyEvent(ui::VKEY_HOME); |
| 1135 EXPECT_EQ(0U, textfield_->GetCursorPosition()); | 1106 EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
| 1136 SendKeyEvent(ui::VKEY_END); | 1107 SendKeyEvent(ui::VKEY_END); |
| 1137 EXPECT_EQ(9U, textfield_->GetCursorPosition()); | 1108 EXPECT_EQ(9U, textfield_->GetCursorPosition()); |
| 1138 | 1109 |
| 1139 SendKeyEvent(ui::VKEY_LEFT, false, false); | 1110 SendKeyEvent(ui::VKEY_LEFT, false, false); |
| 1140 EXPECT_EQ(8U, textfield_->GetCursorPosition()); | 1111 EXPECT_EQ(8U, textfield_->GetCursorPosition()); |
| 1141 SendKeyEvent(ui::VKEY_LEFT, false, true); | 1112 SendKeyEvent(ui::VKEY_LEFT, false, true); |
| 1142 EXPECT_EQ(5U, textfield_->GetCursorPosition()); | 1113 EXPECT_EQ(5U, textfield_->GetCursorPosition()); |
| 1143 SendKeyEvent(ui::VKEY_LEFT, true, true); | 1114 SendKeyEvent(ui::VKEY_LEFT, true, true); |
| 1144 EXPECT_EQ(0U, textfield_->GetCursorPosition()); | 1115 EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
| 1145 EXPECT_STR_EQ("read ", textfield_->GetSelectedText()); | 1116 EXPECT_STR_EQ("read ", textfield_->GetSelectedText()); |
| 1146 textfield_->SelectAll(false); | 1117 textfield_->SelectAll(false); |
| 1147 EXPECT_STR_EQ("read only", textfield_->GetSelectedText()); | 1118 EXPECT_STR_EQ("read only", textfield_->GetSelectedText()); |
| 1148 | 1119 |
| 1149 // Cut should be disabled. | 1120 // Cut should be disabled. |
| 1150 SetClipboardText("Test"); | 1121 SetClipboardText("Test"); |
| 1151 EXPECT_FALSE(textfield_view_->IsCommandIdEnabled(IDS_APP_CUT)); | 1122 EXPECT_FALSE(textfield_->IsCommandIdEnabled(IDS_APP_CUT)); |
| 1152 textfield_view_->ExecuteCommand(IDS_APP_CUT, 0); | 1123 textfield_->ExecuteCommand(IDS_APP_CUT, 0); |
| 1153 SendKeyEvent(ui::VKEY_X, false, true); | 1124 SendKeyEvent(ui::VKEY_X, false, true); |
| 1154 SendKeyEvent(ui::VKEY_DELETE, true, false); | 1125 SendKeyEvent(ui::VKEY_DELETE, true, false); |
| 1155 EXPECT_STR_EQ("Test", base::string16(GetClipboardText())); | 1126 EXPECT_STR_EQ("Test", base::string16(GetClipboardText())); |
| 1156 EXPECT_STR_EQ("read only", textfield_->text()); | 1127 EXPECT_STR_EQ("read only", textfield_->GetText()); |
| 1157 | 1128 |
| 1158 // Paste should be disabled. | 1129 // Paste should be disabled. |
| 1159 EXPECT_FALSE(textfield_view_->IsCommandIdEnabled(IDS_APP_PASTE)); | 1130 EXPECT_FALSE(textfield_->IsCommandIdEnabled(IDS_APP_PASTE)); |
| 1160 textfield_view_->ExecuteCommand(IDS_APP_PASTE, 0); | 1131 textfield_->ExecuteCommand(IDS_APP_PASTE, 0); |
| 1161 SendKeyEvent(ui::VKEY_V, false, true); | 1132 SendKeyEvent(ui::VKEY_V, false, true); |
| 1162 SendKeyEvent(ui::VKEY_INSERT, true, false); | 1133 SendKeyEvent(ui::VKEY_INSERT, true, false); |
| 1163 EXPECT_STR_EQ("read only", textfield_->text()); | 1134 EXPECT_STR_EQ("read only", textfield_->GetText()); |
| 1164 | 1135 |
| 1165 // Copy should work normally. | 1136 // Copy should work normally. |
| 1166 SetClipboardText("Test"); | 1137 SetClipboardText("Test"); |
| 1167 EXPECT_TRUE(textfield_view_->IsCommandIdEnabled(IDS_APP_COPY)); | 1138 EXPECT_TRUE(textfield_->IsCommandIdEnabled(IDS_APP_COPY)); |
| 1168 textfield_view_->ExecuteCommand(IDS_APP_COPY, 0); | 1139 textfield_->ExecuteCommand(IDS_APP_COPY, 0); |
| 1169 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); | 1140 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); |
| 1170 SetClipboardText("Test"); | 1141 SetClipboardText("Test"); |
| 1171 SendKeyEvent(ui::VKEY_C, false, true); | 1142 SendKeyEvent(ui::VKEY_C, false, true); |
| 1172 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); | 1143 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); |
| 1173 SetClipboardText("Test"); | 1144 SetClipboardText("Test"); |
| 1174 SendKeyEvent(ui::VKEY_INSERT, false, true); | 1145 SendKeyEvent(ui::VKEY_INSERT, false, true); |
| 1175 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); | 1146 EXPECT_STR_EQ("read only", base::string16(GetClipboardText())); |
| 1176 | 1147 |
| 1177 // SetText should work even in read only mode. | 1148 // SetText should work even in read only mode. |
| 1178 textfield_->SetText(ASCIIToUTF16(" four five six ")); | 1149 textfield_->SetText(ASCIIToUTF16(" four five six ")); |
| 1179 EXPECT_STR_EQ(" four five six ", textfield_->text()); | 1150 EXPECT_STR_EQ(" four five six ", textfield_->GetText()); |
| 1180 | 1151 |
| 1181 textfield_->SelectAll(false); | 1152 textfield_->SelectAll(false); |
| 1182 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); | 1153 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); |
| 1183 | 1154 |
| 1184 // Text field is unmodifiable and selection shouldn't change. | 1155 // Text field is unmodifiable and selection shouldn't change. |
| 1185 SendKeyEvent(ui::VKEY_DELETE); | 1156 SendKeyEvent(ui::VKEY_DELETE); |
| 1186 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); | 1157 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); |
| 1187 SendKeyEvent(ui::VKEY_BACK); | 1158 SendKeyEvent(ui::VKEY_BACK); |
| 1188 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); | 1159 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); |
| 1189 SendKeyEvent(ui::VKEY_T); | 1160 SendKeyEvent(ui::VKEY_T); |
| 1190 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); | 1161 EXPECT_STR_EQ(" four five six ", textfield_->GetSelectedText()); |
| 1191 } | 1162 } |
| 1192 | 1163 |
| 1193 TEST_F(NativeTextfieldViewsTest, TextInputClientTest) { | 1164 TEST_F(TextfieldTest, TextInputClientTest) { |
| 1194 InitTextfield(Textfield::STYLE_DEFAULT); | 1165 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1195 ui::TextInputClient* client = textfield_->GetTextInputClient(); | 1166 ui::TextInputClient* client = textfield_->GetTextInputClient(); |
| 1196 EXPECT_TRUE(client); | 1167 EXPECT_TRUE(client); |
| 1197 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, client->GetTextInputType()); | 1168 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, client->GetTextInputType()); |
| 1198 | 1169 |
| 1199 textfield_->SetText(ASCIIToUTF16("0123456789")); | 1170 textfield_->SetText(ASCIIToUTF16("0123456789")); |
| 1200 gfx::Range range; | 1171 gfx::Range range; |
| 1201 EXPECT_TRUE(client->GetTextRange(&range)); | 1172 EXPECT_TRUE(client->GetTextRange(&range)); |
| 1202 EXPECT_EQ(0U, range.start()); | 1173 EXPECT_EQ(0U, range.start()); |
| 1203 EXPECT_EQ(10U, range.end()); | 1174 EXPECT_EQ(10U, range.end()); |
| 1204 | 1175 |
| 1205 EXPECT_TRUE(client->SetSelectionRange(gfx::Range(1, 4))); | 1176 EXPECT_TRUE(client->SetSelectionRange(gfx::Range(1, 4))); |
| 1206 EXPECT_TRUE(client->GetSelectionRange(&range)); | 1177 EXPECT_TRUE(client->GetSelectionRange(&range)); |
| 1207 EXPECT_EQ(gfx::Range(1, 4), range); | 1178 EXPECT_EQ(gfx::Range(1, 4), range); |
| 1208 | 1179 |
| 1209 // This code can't be compiled because of a bug in base::Callback. | 1180 // This code can't be compiled because of a bug in base::Callback. |
| 1210 #if 0 | 1181 #if 0 |
| 1211 GetTextHelper helper; | 1182 GetTextHelper helper; |
| 1212 base::Callback<void(base::string16)> callback = | 1183 base::Callback<void(base::string16)> callback = |
| 1213 base::Bind(&GetTextHelper::set_text, base::Unretained(&helper)); | 1184 base::Bind(&GetTextHelper::set_text, base::Unretained(&helper)); |
| 1214 | 1185 |
| 1215 EXPECT_TRUE(client->GetTextFromRange(range, callback)); | 1186 EXPECT_TRUE(client->GetTextFromRange(range, callback)); |
| 1216 EXPECT_STR_EQ("123", helper.text()); | 1187 EXPECT_STR_EQ("123", helper.text()); |
| 1217 #endif | 1188 #endif |
| 1218 | 1189 |
| 1219 EXPECT_TRUE(client->DeleteRange(range)); | 1190 EXPECT_TRUE(client->DeleteRange(range)); |
| 1220 EXPECT_STR_EQ("0456789", textfield_->text()); | 1191 EXPECT_STR_EQ("0456789", textfield_->GetText()); |
| 1221 | 1192 |
| 1222 ui::CompositionText composition; | 1193 ui::CompositionText composition; |
| 1223 composition.text = UTF8ToUTF16("321"); | 1194 composition.text = UTF8ToUTF16("321"); |
| 1224 // Set composition through input method. | 1195 // Set composition through input method. |
| 1225 input_method_->Clear(); | 1196 input_method_->Clear(); |
| 1226 input_method_->SetCompositionTextForNextKey(composition); | 1197 input_method_->SetCompositionTextForNextKey(composition); |
| 1227 textfield_->clear(); | 1198 textfield_->clear(); |
| 1228 | 1199 |
| 1229 on_before_user_action_ = on_after_user_action_ = 0; | 1200 on_before_user_action_ = on_after_user_action_ = 0; |
| 1230 SendKeyEvent(ui::VKEY_A); | 1201 SendKeyEvent(ui::VKEY_A); |
| 1231 EXPECT_TRUE(textfield_->key_received()); | 1202 EXPECT_TRUE(textfield_->key_received()); |
| 1232 EXPECT_FALSE(textfield_->key_handled()); | 1203 EXPECT_FALSE(textfield_->key_handled()); |
| 1233 EXPECT_TRUE(client->HasCompositionText()); | 1204 EXPECT_TRUE(client->HasCompositionText()); |
| 1234 EXPECT_TRUE(client->GetCompositionTextRange(&range)); | 1205 EXPECT_TRUE(client->GetCompositionTextRange(&range)); |
| 1235 EXPECT_STR_EQ("0321456789", textfield_->text()); | 1206 EXPECT_STR_EQ("0321456789", textfield_->GetText()); |
| 1236 EXPECT_EQ(gfx::Range(1, 4), range); | 1207 EXPECT_EQ(gfx::Range(1, 4), range); |
| 1237 EXPECT_EQ(2, on_before_user_action_); | 1208 EXPECT_EQ(2, on_before_user_action_); |
| 1238 EXPECT_EQ(2, on_after_user_action_); | 1209 EXPECT_EQ(2, on_after_user_action_); |
| 1239 | 1210 |
| 1240 input_method_->SetResultTextForNextKey(UTF8ToUTF16("123")); | 1211 input_method_->SetResultTextForNextKey(UTF8ToUTF16("123")); |
| 1241 on_before_user_action_ = on_after_user_action_ = 0; | 1212 on_before_user_action_ = on_after_user_action_ = 0; |
| 1242 textfield_->clear(); | 1213 textfield_->clear(); |
| 1243 SendKeyEvent(ui::VKEY_A); | 1214 SendKeyEvent(ui::VKEY_A); |
| 1244 EXPECT_TRUE(textfield_->key_received()); | 1215 EXPECT_TRUE(textfield_->key_received()); |
| 1245 EXPECT_FALSE(textfield_->key_handled()); | 1216 EXPECT_FALSE(textfield_->key_handled()); |
| 1246 EXPECT_FALSE(client->HasCompositionText()); | 1217 EXPECT_FALSE(client->HasCompositionText()); |
| 1247 EXPECT_FALSE(input_method_->cancel_composition_called()); | 1218 EXPECT_FALSE(input_method_->cancel_composition_called()); |
| 1248 EXPECT_STR_EQ("0123456789", textfield_->text()); | 1219 EXPECT_STR_EQ("0123456789", textfield_->GetText()); |
| 1249 EXPECT_EQ(2, on_before_user_action_); | 1220 EXPECT_EQ(2, on_before_user_action_); |
| 1250 EXPECT_EQ(2, on_after_user_action_); | 1221 EXPECT_EQ(2, on_after_user_action_); |
| 1251 | 1222 |
| 1252 input_method_->Clear(); | 1223 input_method_->Clear(); |
| 1253 input_method_->SetCompositionTextForNextKey(composition); | 1224 input_method_->SetCompositionTextForNextKey(composition); |
| 1254 textfield_->clear(); | 1225 textfield_->clear(); |
| 1255 SendKeyEvent(ui::VKEY_A); | 1226 SendKeyEvent(ui::VKEY_A); |
| 1256 EXPECT_TRUE(client->HasCompositionText()); | 1227 EXPECT_TRUE(client->HasCompositionText()); |
| 1257 EXPECT_STR_EQ("0123321456789", textfield_->text()); | 1228 EXPECT_STR_EQ("0123321456789", textfield_->GetText()); |
| 1258 | 1229 |
| 1259 on_before_user_action_ = on_after_user_action_ = 0; | 1230 on_before_user_action_ = on_after_user_action_ = 0; |
| 1260 textfield_->clear(); | 1231 textfield_->clear(); |
| 1261 SendKeyEvent(ui::VKEY_RIGHT); | 1232 SendKeyEvent(ui::VKEY_RIGHT); |
| 1262 EXPECT_FALSE(client->HasCompositionText()); | 1233 EXPECT_FALSE(client->HasCompositionText()); |
| 1263 EXPECT_TRUE(input_method_->cancel_composition_called()); | 1234 EXPECT_TRUE(input_method_->cancel_composition_called()); |
| 1264 EXPECT_TRUE(textfield_->key_received()); | 1235 EXPECT_TRUE(textfield_->key_received()); |
| 1265 EXPECT_TRUE(textfield_->key_handled()); | 1236 EXPECT_TRUE(textfield_->key_handled()); |
| 1266 EXPECT_STR_EQ("0123321456789", textfield_->text()); | 1237 EXPECT_STR_EQ("0123321456789", textfield_->GetText()); |
| 1267 EXPECT_EQ(8U, textfield_->GetCursorPosition()); | 1238 EXPECT_EQ(8U, textfield_->GetCursorPosition()); |
| 1268 EXPECT_EQ(1, on_before_user_action_); | 1239 EXPECT_EQ(1, on_before_user_action_); |
| 1269 EXPECT_EQ(1, on_after_user_action_); | 1240 EXPECT_EQ(1, on_after_user_action_); |
| 1270 | 1241 |
| 1271 textfield_->clear(); | 1242 textfield_->clear(); |
| 1272 textfield_->SetText(ASCIIToUTF16("0123456789")); | 1243 textfield_->SetText(ASCIIToUTF16("0123456789")); |
| 1273 EXPECT_TRUE(client->SetSelectionRange(gfx::Range(5, 5))); | 1244 EXPECT_TRUE(client->SetSelectionRange(gfx::Range(5, 5))); |
| 1274 client->ExtendSelectionAndDelete(4, 2); | 1245 client->ExtendSelectionAndDelete(4, 2); |
| 1275 EXPECT_STR_EQ("0789", textfield_->text()); | 1246 EXPECT_STR_EQ("0789", textfield_->GetText()); |
| 1276 | 1247 |
| 1277 // On{Before,After}UserAction should be called by whatever user action | 1248 // On{Before,After}UserAction should be called by whatever user action |
| 1278 // triggers clearing or setting a selection if appropriate. | 1249 // triggers clearing or setting a selection if appropriate. |
| 1279 on_before_user_action_ = on_after_user_action_ = 0; | 1250 on_before_user_action_ = on_after_user_action_ = 0; |
| 1280 textfield_->clear(); | 1251 textfield_->clear(); |
| 1281 textfield_->ClearSelection(); | 1252 textfield_->ClearSelection(); |
| 1282 textfield_->SelectAll(false); | 1253 textfield_->SelectAll(false); |
| 1283 EXPECT_EQ(0, on_before_user_action_); | 1254 EXPECT_EQ(0, on_before_user_action_); |
| 1284 EXPECT_EQ(0, on_after_user_action_); | 1255 EXPECT_EQ(0, on_after_user_action_); |
| 1285 | 1256 |
| 1286 input_method_->Clear(); | 1257 input_method_->Clear(); |
| 1287 textfield_->SetReadOnly(true); | 1258 textfield_->SetReadOnly(true); |
| 1288 EXPECT_TRUE(input_method_->text_input_type_changed()); | 1259 EXPECT_TRUE(input_method_->text_input_type_changed()); |
| 1289 EXPECT_FALSE(textfield_->GetTextInputClient()); | 1260 EXPECT_FALSE(textfield_->GetTextInputClient()); |
| 1290 | 1261 |
| 1291 textfield_->SetReadOnly(false); | 1262 textfield_->SetReadOnly(false); |
| 1292 input_method_->Clear(); | 1263 input_method_->Clear(); |
| 1293 textfield_->SetObscured(true); | 1264 textfield_->SetObscured(true); |
| 1294 EXPECT_TRUE(input_method_->text_input_type_changed()); | 1265 EXPECT_TRUE(input_method_->text_input_type_changed()); |
| 1295 EXPECT_TRUE(textfield_->GetTextInputClient()); | 1266 EXPECT_TRUE(textfield_->GetTextInputClient()); |
| 1296 } | 1267 } |
| 1297 | 1268 |
| 1298 TEST_F(NativeTextfieldViewsTest, UndoRedoTest) { | 1269 TEST_F(TextfieldTest, UndoRedoTest) { |
| 1299 InitTextfield(Textfield::STYLE_DEFAULT); | 1270 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1300 SendKeyEvent(ui::VKEY_A); | 1271 SendKeyEvent(ui::VKEY_A); |
| 1301 EXPECT_STR_EQ("a", textfield_->text()); | 1272 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1302 SendKeyEvent(ui::VKEY_Z, false, true); | 1273 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1303 EXPECT_STR_EQ("", textfield_->text()); | 1274 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1304 SendKeyEvent(ui::VKEY_Z, false, true); | 1275 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1305 EXPECT_STR_EQ("", textfield_->text()); | 1276 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1306 SendKeyEvent(ui::VKEY_Y, false, true); | 1277 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1307 EXPECT_STR_EQ("a", textfield_->text()); | 1278 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1308 SendKeyEvent(ui::VKEY_Y, false, true); | 1279 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1309 EXPECT_STR_EQ("a", textfield_->text()); | 1280 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1310 | 1281 |
| 1311 // AppendText | 1282 // AppendText |
| 1312 textfield_->AppendText(ASCIIToUTF16("b")); | 1283 textfield_->AppendText(ASCIIToUTF16("b")); |
| 1313 last_contents_.clear(); // AppendText doesn't call ContentsChanged. | 1284 last_contents_.clear(); // AppendText doesn't call ContentsChanged. |
| 1314 EXPECT_STR_EQ("ab", textfield_->text()); | 1285 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1315 SendKeyEvent(ui::VKEY_Z, false, true); | 1286 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1316 EXPECT_STR_EQ("a", textfield_->text()); | 1287 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1317 SendKeyEvent(ui::VKEY_Y, false, true); | 1288 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1318 EXPECT_STR_EQ("ab", textfield_->text()); | 1289 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1319 | 1290 |
| 1320 // SetText | 1291 // SetText |
| 1321 SendKeyEvent(ui::VKEY_C); | 1292 SendKeyEvent(ui::VKEY_C); |
| 1322 // Undo'ing append moves the cursor to the end for now. | 1293 // Undo'ing append moves the cursor to the end for now. |
| 1323 // no-op SetText won't add new edit. See TextfieldViewsModel::SetText | 1294 // no-op SetText won't add new edit. See TextfieldViewsModel::SetText |
| 1324 // description. | 1295 // description. |
| 1325 EXPECT_STR_EQ("abc", textfield_->text()); | 1296 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1326 textfield_->SetText(ASCIIToUTF16("abc")); | 1297 textfield_->SetText(ASCIIToUTF16("abc")); |
| 1327 EXPECT_STR_EQ("abc", textfield_->text()); | 1298 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1328 SendKeyEvent(ui::VKEY_Z, false, true); | 1299 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1329 EXPECT_STR_EQ("ab", textfield_->text()); | 1300 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1330 SendKeyEvent(ui::VKEY_Y, false, true); | 1301 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1331 EXPECT_STR_EQ("abc", textfield_->text()); | 1302 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1332 SendKeyEvent(ui::VKEY_Y, false, true); | 1303 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1333 EXPECT_STR_EQ("abc", textfield_->text()); | 1304 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1334 textfield_->SetText(ASCIIToUTF16("123")); | 1305 textfield_->SetText(ASCIIToUTF16("123")); |
| 1335 textfield_->SetText(ASCIIToUTF16("123")); | 1306 textfield_->SetText(ASCIIToUTF16("123")); |
| 1336 EXPECT_STR_EQ("123", textfield_->text()); | 1307 EXPECT_STR_EQ("123", textfield_->GetText()); |
| 1337 SendKeyEvent(ui::VKEY_END, false, false); | 1308 SendKeyEvent(ui::VKEY_END, false, false); |
| 1338 SendKeyEvent(ui::VKEY_4, false, false); | 1309 SendKeyEvent(ui::VKEY_4, false, false); |
| 1339 EXPECT_STR_EQ("1234", textfield_->text()); | 1310 EXPECT_STR_EQ("1234", textfield_->GetText()); |
| 1340 last_contents_.clear(); | 1311 last_contents_.clear(); |
| 1341 SendKeyEvent(ui::VKEY_Z, false, true); | 1312 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1342 EXPECT_STR_EQ("123", textfield_->text()); | 1313 EXPECT_STR_EQ("123", textfield_->GetText()); |
| 1343 SendKeyEvent(ui::VKEY_Z, false, true); | 1314 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1344 // the insert edit "c" and set edit "123" are merged to single edit, | 1315 // the insert edit "c" and set edit "123" are merged to single edit, |
| 1345 // so text becomes "ab" after undo. | 1316 // so text becomes "ab" after undo. |
| 1346 EXPECT_STR_EQ("ab", textfield_->text()); | 1317 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1347 SendKeyEvent(ui::VKEY_Z, false, true); | 1318 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1348 EXPECT_STR_EQ("a", textfield_->text()); | 1319 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1349 SendKeyEvent(ui::VKEY_Y, false, true); | 1320 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1350 EXPECT_STR_EQ("ab", textfield_->text()); | 1321 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1351 SendKeyEvent(ui::VKEY_Y, false, true); | 1322 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1352 EXPECT_STR_EQ("123", textfield_->text()); | 1323 EXPECT_STR_EQ("123", textfield_->GetText()); |
| 1353 SendKeyEvent(ui::VKEY_Y, false, true); | 1324 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1354 EXPECT_STR_EQ("1234", textfield_->text()); | 1325 EXPECT_STR_EQ("1234", textfield_->GetText()); |
| 1355 | 1326 |
| 1356 // Undoing to the same text shouldn't call ContentsChanged. | 1327 // Undoing to the same text shouldn't call ContentsChanged. |
| 1357 SendKeyEvent(ui::VKEY_A, false, true); // select all | 1328 SendKeyEvent(ui::VKEY_A, false, true); // select all |
| 1358 SendKeyEvent(ui::VKEY_A); | 1329 SendKeyEvent(ui::VKEY_A); |
| 1359 EXPECT_STR_EQ("a", textfield_->text()); | 1330 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1360 SendKeyEvent(ui::VKEY_B); | 1331 SendKeyEvent(ui::VKEY_B); |
| 1361 SendKeyEvent(ui::VKEY_C); | 1332 SendKeyEvent(ui::VKEY_C); |
| 1362 EXPECT_STR_EQ("abc", textfield_->text()); | 1333 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1363 SendKeyEvent(ui::VKEY_Z, false, true); | 1334 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1364 EXPECT_STR_EQ("1234", textfield_->text()); | 1335 EXPECT_STR_EQ("1234", textfield_->GetText()); |
| 1365 SendKeyEvent(ui::VKEY_Y, false, true); | 1336 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1366 EXPECT_STR_EQ("abc", textfield_->text()); | 1337 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1367 | 1338 |
| 1368 // Delete/Backspace | 1339 // Delete/Backspace |
| 1369 SendKeyEvent(ui::VKEY_BACK); | 1340 SendKeyEvent(ui::VKEY_BACK); |
| 1370 EXPECT_STR_EQ("ab", textfield_->text()); | 1341 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1371 SendKeyEvent(ui::VKEY_HOME); | 1342 SendKeyEvent(ui::VKEY_HOME); |
| 1372 SendKeyEvent(ui::VKEY_DELETE); | 1343 SendKeyEvent(ui::VKEY_DELETE); |
| 1373 EXPECT_STR_EQ("b", textfield_->text()); | 1344 EXPECT_STR_EQ("b", textfield_->GetText()); |
| 1374 SendKeyEvent(ui::VKEY_A, false, true); | 1345 SendKeyEvent(ui::VKEY_A, false, true); |
| 1375 SendKeyEvent(ui::VKEY_DELETE); | 1346 SendKeyEvent(ui::VKEY_DELETE); |
| 1376 EXPECT_STR_EQ("", textfield_->text()); | 1347 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1377 SendKeyEvent(ui::VKEY_Z, false, true); | 1348 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1378 EXPECT_STR_EQ("b", textfield_->text()); | 1349 EXPECT_STR_EQ("b", textfield_->GetText()); |
| 1379 SendKeyEvent(ui::VKEY_Z, false, true); | 1350 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1380 EXPECT_STR_EQ("ab", textfield_->text()); | 1351 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1381 SendKeyEvent(ui::VKEY_Z, false, true); | 1352 SendKeyEvent(ui::VKEY_Z, false, true); |
| 1382 EXPECT_STR_EQ("abc", textfield_->text()); | 1353 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1383 SendKeyEvent(ui::VKEY_Y, false, true); | 1354 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1384 EXPECT_STR_EQ("ab", textfield_->text()); | 1355 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1385 SendKeyEvent(ui::VKEY_Y, false, true); | 1356 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1386 EXPECT_STR_EQ("b", textfield_->text()); | 1357 EXPECT_STR_EQ("b", textfield_->GetText()); |
| 1387 SendKeyEvent(ui::VKEY_Y, false, true); | 1358 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1388 EXPECT_STR_EQ("", textfield_->text()); | 1359 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1389 SendKeyEvent(ui::VKEY_Y, false, true); | 1360 SendKeyEvent(ui::VKEY_Y, false, true); |
| 1390 EXPECT_STR_EQ("", textfield_->text()); | 1361 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1391 } | 1362 } |
| 1392 | 1363 |
| 1393 TEST_F(NativeTextfieldViewsTest, CutCopyPaste) { | 1364 TEST_F(TextfieldTest, CutCopyPaste) { |
| 1394 InitTextfield(Textfield::STYLE_DEFAULT); | 1365 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1395 | 1366 |
| 1396 // Ensure IDS_APP_CUT cuts. | 1367 // Ensure IDS_APP_CUT cuts. |
| 1397 textfield_->SetText(ASCIIToUTF16("123")); | 1368 textfield_->SetText(ASCIIToUTF16("123")); |
| 1398 textfield_->SelectAll(false); | 1369 textfield_->SelectAll(false); |
| 1399 EXPECT_TRUE(textfield_view_->IsCommandIdEnabled(IDS_APP_CUT)); | 1370 EXPECT_TRUE(textfield_->IsCommandIdEnabled(IDS_APP_CUT)); |
| 1400 textfield_view_->ExecuteCommand(IDS_APP_CUT, 0); | 1371 textfield_->ExecuteCommand(IDS_APP_CUT, 0); |
| 1401 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); | 1372 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); |
| 1402 EXPECT_STR_EQ("", textfield_->text()); | 1373 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1403 | 1374 |
| 1404 // Ensure [Ctrl]+[x] cuts and [Ctrl]+[Alt][x] does nothing. | 1375 // Ensure [Ctrl]+[x] cuts and [Ctrl]+[Alt][x] does nothing. |
| 1405 textfield_->SetText(ASCIIToUTF16("456")); | 1376 textfield_->SetText(ASCIIToUTF16("456")); |
| 1406 textfield_->SelectAll(false); | 1377 textfield_->SelectAll(false); |
| 1407 SendKeyEvent(ui::VKEY_X, true, false, true, false); | 1378 SendKeyEvent(ui::VKEY_X, true, false, true, false); |
| 1408 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); | 1379 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); |
| 1409 EXPECT_STR_EQ("456", textfield_->text()); | 1380 EXPECT_STR_EQ("456", textfield_->GetText()); |
| 1410 SendKeyEvent(ui::VKEY_X, false, true); | 1381 SendKeyEvent(ui::VKEY_X, false, true); |
| 1411 EXPECT_STR_EQ("456", base::string16(GetClipboardText())); | 1382 EXPECT_STR_EQ("456", base::string16(GetClipboardText())); |
| 1412 EXPECT_STR_EQ("", textfield_->text()); | 1383 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1413 | 1384 |
| 1414 // Ensure [Shift]+[Delete] cuts. | 1385 // Ensure [Shift]+[Delete] cuts. |
| 1415 textfield_->SetText(ASCIIToUTF16("123")); | 1386 textfield_->SetText(ASCIIToUTF16("123")); |
| 1416 textfield_->SelectAll(false); | 1387 textfield_->SelectAll(false); |
| 1417 SendKeyEvent(ui::VKEY_DELETE, true, false); | 1388 SendKeyEvent(ui::VKEY_DELETE, true, false); |
| 1418 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); | 1389 EXPECT_STR_EQ("123", base::string16(GetClipboardText())); |
| 1419 EXPECT_STR_EQ("", textfield_->text()); | 1390 EXPECT_STR_EQ("", textfield_->GetText()); |
| 1420 | 1391 |
| 1421 // Ensure IDS_APP_COPY copies. | 1392 // Ensure IDS_APP_COPY copies. |
| 1422 textfield_->SetText(ASCIIToUTF16("789")); | 1393 textfield_->SetText(ASCIIToUTF16("789")); |
| 1423 textfield_->SelectAll(false); | 1394 textfield_->SelectAll(false); |
| 1424 EXPECT_TRUE(textfield_view_->IsCommandIdEnabled(IDS_APP_COPY)); | 1395 EXPECT_TRUE(textfield_->IsCommandIdEnabled(IDS_APP_COPY)); |
| 1425 textfield_view_->ExecuteCommand(IDS_APP_COPY, 0); | 1396 textfield_->ExecuteCommand(IDS_APP_COPY, 0); |
| 1426 EXPECT_STR_EQ("789", base::string16(GetClipboardText())); | 1397 EXPECT_STR_EQ("789", base::string16(GetClipboardText())); |
| 1427 | 1398 |
| 1428 // Ensure [Ctrl]+[c] copies and [Ctrl]+[Alt][c] does nothing. | 1399 // Ensure [Ctrl]+[c] copies and [Ctrl]+[Alt][c] does nothing. |
| 1429 textfield_->SetText(ASCIIToUTF16("012")); | 1400 textfield_->SetText(ASCIIToUTF16("012")); |
| 1430 textfield_->SelectAll(false); | 1401 textfield_->SelectAll(false); |
| 1431 SendKeyEvent(ui::VKEY_C, true, false, true, false); | 1402 SendKeyEvent(ui::VKEY_C, true, false, true, false); |
| 1432 EXPECT_STR_EQ("789", base::string16(GetClipboardText())); | 1403 EXPECT_STR_EQ("789", base::string16(GetClipboardText())); |
| 1433 SendKeyEvent(ui::VKEY_C, false, true); | 1404 SendKeyEvent(ui::VKEY_C, false, true); |
| 1434 EXPECT_STR_EQ("012", base::string16(GetClipboardText())); | 1405 EXPECT_STR_EQ("012", base::string16(GetClipboardText())); |
| 1435 | 1406 |
| 1436 // Ensure [Ctrl]+[Insert] copies. | 1407 // Ensure [Ctrl]+[Insert] copies. |
| 1437 textfield_->SetText(ASCIIToUTF16("345")); | 1408 textfield_->SetText(ASCIIToUTF16("345")); |
| 1438 textfield_->SelectAll(false); | 1409 textfield_->SelectAll(false); |
| 1439 SendKeyEvent(ui::VKEY_INSERT, false, true); | 1410 SendKeyEvent(ui::VKEY_INSERT, false, true); |
| 1440 EXPECT_STR_EQ("345", base::string16(GetClipboardText())); | 1411 EXPECT_STR_EQ("345", base::string16(GetClipboardText())); |
| 1441 EXPECT_STR_EQ("345", textfield_->text()); | 1412 EXPECT_STR_EQ("345", textfield_->GetText()); |
| 1442 | 1413 |
| 1443 // Ensure IDS_APP_PASTE, [Ctrl]+[V], and [Shift]+[Insert] pastes; | 1414 // Ensure IDS_APP_PASTE, [Ctrl]+[V], and [Shift]+[Insert] pastes; |
| 1444 // also ensure that [Ctrl]+[Alt]+[V] does nothing. | 1415 // also ensure that [Ctrl]+[Alt]+[V] does nothing. |
| 1445 SetClipboardText("abc"); | 1416 SetClipboardText("abc"); |
| 1446 textfield_->SetText(base::string16()); | 1417 textfield_->SetText(base::string16()); |
| 1447 EXPECT_TRUE(textfield_view_->IsCommandIdEnabled(IDS_APP_PASTE)); | 1418 EXPECT_TRUE(textfield_->IsCommandIdEnabled(IDS_APP_PASTE)); |
| 1448 textfield_view_->ExecuteCommand(IDS_APP_PASTE, 0); | 1419 textfield_->ExecuteCommand(IDS_APP_PASTE, 0); |
| 1449 EXPECT_STR_EQ("abc", textfield_->text()); | 1420 EXPECT_STR_EQ("abc", textfield_->GetText()); |
| 1450 SendKeyEvent(ui::VKEY_V, false, true); | 1421 SendKeyEvent(ui::VKEY_V, false, true); |
| 1451 EXPECT_STR_EQ("abcabc", textfield_->text()); | 1422 EXPECT_STR_EQ("abcabc", textfield_->GetText()); |
| 1452 SendKeyEvent(ui::VKEY_INSERT, true, false); | 1423 SendKeyEvent(ui::VKEY_INSERT, true, false); |
| 1453 EXPECT_STR_EQ("abcabcabc", textfield_->text()); | 1424 EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); |
| 1454 SendKeyEvent(ui::VKEY_V, true, false, true, false); | 1425 SendKeyEvent(ui::VKEY_V, true, false, true, false); |
| 1455 EXPECT_STR_EQ("abcabcabc", textfield_->text()); | 1426 EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); |
| 1456 | 1427 |
| 1457 // Ensure [Ctrl]+[Shift]+[Insert] is a no-op. | 1428 // Ensure [Ctrl]+[Shift]+[Insert] is a no-op. |
| 1458 textfield_->SelectAll(false); | 1429 textfield_->SelectAll(false); |
| 1459 SendKeyEvent(ui::VKEY_INSERT, true, true); | 1430 SendKeyEvent(ui::VKEY_INSERT, true, true); |
| 1460 EXPECT_STR_EQ("abc", base::string16(GetClipboardText())); | 1431 EXPECT_STR_EQ("abc", base::string16(GetClipboardText())); |
| 1461 EXPECT_STR_EQ("abcabcabc", textfield_->text()); | 1432 EXPECT_STR_EQ("abcabcabc", textfield_->GetText()); |
| 1462 } | 1433 } |
| 1463 | 1434 |
| 1464 TEST_F(NativeTextfieldViewsTest, OvertypeMode) { | 1435 TEST_F(TextfieldTest, OvertypeMode) { |
| 1465 InitTextfield(Textfield::STYLE_DEFAULT); | 1436 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1466 // Overtype mode should be disabled (no-op [Insert]). | 1437 // Overtype mode should be disabled (no-op [Insert]). |
| 1467 textfield_->SetText(ASCIIToUTF16("2")); | 1438 textfield_->SetText(ASCIIToUTF16("2")); |
| 1468 SendKeyEvent(ui::VKEY_HOME); | 1439 SendKeyEvent(ui::VKEY_HOME); |
| 1469 SendKeyEvent(ui::VKEY_INSERT); | 1440 SendKeyEvent(ui::VKEY_INSERT); |
| 1470 SendKeyEvent(ui::VKEY_1, false, false); | 1441 SendKeyEvent(ui::VKEY_1, false, false); |
| 1471 EXPECT_STR_EQ("12", textfield_->text()); | 1442 EXPECT_STR_EQ("12", textfield_->GetText()); |
| 1472 } | 1443 } |
| 1473 | 1444 |
| 1474 TEST_F(NativeTextfieldViewsTest, TextCursorDisplayTest) { | 1445 TEST_F(TextfieldTest, TextCursorDisplayTest) { |
| 1475 InitTextfield(Textfield::STYLE_DEFAULT); | 1446 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1476 // LTR-RTL string in LTR context. | 1447 // LTR-RTL string in LTR context. |
| 1477 SendKeyEvent('a'); | 1448 SendKeyEvent('a'); |
| 1478 EXPECT_STR_EQ("a", textfield_->text()); | 1449 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1479 int x = GetCursorBounds().x(); | 1450 int x = GetCursorBounds().x(); |
| 1480 int prev_x = x; | 1451 int prev_x = x; |
| 1481 | 1452 |
| 1482 SendKeyEvent('b'); | 1453 SendKeyEvent('b'); |
| 1483 EXPECT_STR_EQ("ab", textfield_->text()); | 1454 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1484 x = GetCursorBounds().x(); | 1455 x = GetCursorBounds().x(); |
| 1485 EXPECT_LT(prev_x, x); | 1456 EXPECT_LT(prev_x, x); |
| 1486 prev_x = x; | 1457 prev_x = x; |
| 1487 | 1458 |
| 1488 SendKeyEvent(0x05E1); | 1459 SendKeyEvent(0x05E1); |
| 1489 EXPECT_EQ(WideToUTF16(L"ab\x05E1"), textfield_->text()); | 1460 EXPECT_EQ(WideToUTF16(L"ab\x05E1"), textfield_->GetText()); |
| 1490 x = GetCursorBounds().x(); | 1461 x = GetCursorBounds().x(); |
| 1491 EXPECT_EQ(prev_x, x); | 1462 EXPECT_EQ(prev_x, x); |
| 1492 | 1463 |
| 1493 SendKeyEvent(0x05E2); | 1464 SendKeyEvent(0x05E2); |
| 1494 EXPECT_EQ(WideToUTF16(L"ab\x05E1\x5E2"), textfield_->text()); | 1465 EXPECT_EQ(WideToUTF16(L"ab\x05E1\x5E2"), textfield_->GetText()); |
| 1495 x = GetCursorBounds().x(); | 1466 x = GetCursorBounds().x(); |
| 1496 EXPECT_EQ(prev_x, x); | 1467 EXPECT_EQ(prev_x, x); |
| 1497 | 1468 |
| 1498 // Clear text. | 1469 // Clear text. |
| 1499 SendKeyEvent(ui::VKEY_A, false, true); | 1470 SendKeyEvent(ui::VKEY_A, false, true); |
| 1500 SendKeyEvent('\n'); | 1471 SendKeyEvent('\n'); |
| 1501 | 1472 |
| 1502 // RTL-LTR string in LTR context. | 1473 // RTL-LTR string in LTR context. |
| 1503 SendKeyEvent(0x05E1); | 1474 SendKeyEvent(0x05E1); |
| 1504 EXPECT_EQ(WideToUTF16(L"\x05E1"), textfield_->text()); | 1475 EXPECT_EQ(WideToUTF16(L"\x05E1"), textfield_->GetText()); |
| 1505 x = GetCursorBounds().x(); | 1476 x = GetCursorBounds().x(); |
| 1506 EXPECT_EQ(GetDisplayRect().x(), x); | 1477 EXPECT_EQ(GetDisplayRect().x(), x); |
| 1507 prev_x = x; | 1478 prev_x = x; |
| 1508 | 1479 |
| 1509 SendKeyEvent(0x05E2); | 1480 SendKeyEvent(0x05E2); |
| 1510 EXPECT_EQ(WideToUTF16(L"\x05E1\x05E2"), textfield_->text()); | 1481 EXPECT_EQ(WideToUTF16(L"\x05E1\x05E2"), textfield_->GetText()); |
| 1511 x = GetCursorBounds().x(); | 1482 x = GetCursorBounds().x(); |
| 1512 EXPECT_EQ(prev_x, x); | 1483 EXPECT_EQ(prev_x, x); |
| 1513 | 1484 |
| 1514 SendKeyEvent('a'); | 1485 SendKeyEvent('a'); |
| 1515 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"a"), textfield_->text()); | 1486 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"a"), textfield_->GetText()); |
| 1516 x = GetCursorBounds().x(); | 1487 x = GetCursorBounds().x(); |
| 1517 EXPECT_LT(prev_x, x); | 1488 EXPECT_LT(prev_x, x); |
| 1518 prev_x = x; | 1489 prev_x = x; |
| 1519 | 1490 |
| 1520 SendKeyEvent('b'); | 1491 SendKeyEvent('b'); |
| 1521 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"ab"), textfield_->text()); | 1492 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"ab"), textfield_->GetText()); |
| 1522 x = GetCursorBounds().x(); | 1493 x = GetCursorBounds().x(); |
| 1523 EXPECT_LT(prev_x, x); | 1494 EXPECT_LT(prev_x, x); |
| 1524 } | 1495 } |
| 1525 | 1496 |
| 1526 TEST_F(NativeTextfieldViewsTest, TextCursorDisplayInRTLTest) { | 1497 TEST_F(TextfieldTest, TextCursorDisplayInRTLTest) { |
| 1527 std::string locale = l10n_util::GetApplicationLocale(""); | 1498 std::string locale = l10n_util::GetApplicationLocale(""); |
| 1528 base::i18n::SetICUDefaultLocale("he"); | 1499 base::i18n::SetICUDefaultLocale("he"); |
| 1529 | 1500 |
| 1530 InitTextfield(Textfield::STYLE_DEFAULT); | 1501 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1531 // LTR-RTL string in RTL context. | 1502 // LTR-RTL string in RTL context. |
| 1532 SendKeyEvent('a'); | 1503 SendKeyEvent('a'); |
| 1533 EXPECT_STR_EQ("a", textfield_->text()); | 1504 EXPECT_STR_EQ("a", textfield_->GetText()); |
| 1534 int x = GetCursorBounds().x(); | 1505 int x = GetCursorBounds().x(); |
| 1535 EXPECT_EQ(GetDisplayRect().right() - 1, x); | 1506 EXPECT_EQ(GetDisplayRect().right() - 1, x); |
| 1536 int prev_x = x; | 1507 int prev_x = x; |
| 1537 | 1508 |
| 1538 SendKeyEvent('b'); | 1509 SendKeyEvent('b'); |
| 1539 EXPECT_STR_EQ("ab", textfield_->text()); | 1510 EXPECT_STR_EQ("ab", textfield_->GetText()); |
| 1540 x = GetCursorBounds().x(); | 1511 x = GetCursorBounds().x(); |
| 1541 EXPECT_EQ(prev_x, x); | 1512 EXPECT_EQ(prev_x, x); |
| 1542 | 1513 |
| 1543 SendKeyEvent(0x05E1); | 1514 SendKeyEvent(0x05E1); |
| 1544 EXPECT_EQ(WideToUTF16(L"ab\x05E1"), textfield_->text()); | 1515 EXPECT_EQ(WideToUTF16(L"ab\x05E1"), textfield_->GetText()); |
| 1545 x = GetCursorBounds().x(); | 1516 x = GetCursorBounds().x(); |
| 1546 EXPECT_GT(prev_x, x); | 1517 EXPECT_GT(prev_x, x); |
| 1547 prev_x = x; | 1518 prev_x = x; |
| 1548 | 1519 |
| 1549 SendKeyEvent(0x05E2); | 1520 SendKeyEvent(0x05E2); |
| 1550 EXPECT_EQ(WideToUTF16(L"ab\x05E1\x5E2"), textfield_->text()); | 1521 EXPECT_EQ(WideToUTF16(L"ab\x05E1\x5E2"), textfield_->GetText()); |
| 1551 x = GetCursorBounds().x(); | 1522 x = GetCursorBounds().x(); |
| 1552 EXPECT_GT(prev_x, x); | 1523 EXPECT_GT(prev_x, x); |
| 1553 | 1524 |
| 1554 SendKeyEvent(ui::VKEY_A, false, true); | 1525 SendKeyEvent(ui::VKEY_A, false, true); |
| 1555 SendKeyEvent('\n'); | 1526 SendKeyEvent('\n'); |
| 1556 | 1527 |
| 1557 // RTL-LTR string in RTL context. | 1528 // RTL-LTR string in RTL context. |
| 1558 SendKeyEvent(0x05E1); | 1529 SendKeyEvent(0x05E1); |
| 1559 EXPECT_EQ(WideToUTF16(L"\x05E1"), textfield_->text()); | 1530 EXPECT_EQ(WideToUTF16(L"\x05E1"), textfield_->GetText()); |
| 1560 x = GetCursorBounds().x(); | 1531 x = GetCursorBounds().x(); |
| 1561 prev_x = x; | 1532 prev_x = x; |
| 1562 | 1533 |
| 1563 SendKeyEvent(0x05E2); | 1534 SendKeyEvent(0x05E2); |
| 1564 EXPECT_EQ(WideToUTF16(L"\x05E1\x05E2"), textfield_->text()); | 1535 EXPECT_EQ(WideToUTF16(L"\x05E1\x05E2"), textfield_->GetText()); |
| 1565 x = GetCursorBounds().x(); | 1536 x = GetCursorBounds().x(); |
| 1566 EXPECT_GT(prev_x, x); | 1537 EXPECT_GT(prev_x, x); |
| 1567 prev_x = x; | 1538 prev_x = x; |
| 1568 | 1539 |
| 1569 SendKeyEvent('a'); | 1540 SendKeyEvent('a'); |
| 1570 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"a"), textfield_->text()); | 1541 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"a"), textfield_->GetText()); |
| 1571 x = GetCursorBounds().x(); | 1542 x = GetCursorBounds().x(); |
| 1572 EXPECT_EQ(prev_x, x); | 1543 EXPECT_EQ(prev_x, x); |
| 1573 prev_x = x; | 1544 prev_x = x; |
| 1574 | 1545 |
| 1575 SendKeyEvent('b'); | 1546 SendKeyEvent('b'); |
| 1576 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"ab"), textfield_->text()); | 1547 EXPECT_EQ(WideToUTF16(L"\x05E1\x5E2" L"ab"), textfield_->GetText()); |
| 1577 x = GetCursorBounds().x(); | 1548 x = GetCursorBounds().x(); |
| 1578 EXPECT_EQ(prev_x, x); | 1549 EXPECT_EQ(prev_x, x); |
| 1579 | 1550 |
| 1580 // Reset locale. | 1551 // Reset locale. |
| 1581 base::i18n::SetICUDefaultLocale(locale); | 1552 base::i18n::SetICUDefaultLocale(locale); |
| 1582 } | 1553 } |
| 1583 | 1554 |
| 1584 TEST_F(NativeTextfieldViewsTest, HitInsideTextAreaTest) { | 1555 TEST_F(TextfieldTest, HitInsideTextAreaTest) { |
| 1585 InitTextfield(Textfield::STYLE_DEFAULT); | 1556 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1586 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); | 1557 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); |
| 1587 std::vector<gfx::Rect> cursor_bounds; | 1558 std::vector<gfx::Rect> cursor_bounds; |
| 1588 | 1559 |
| 1589 // Save each cursor bound. | 1560 // Save each cursor bound. |
| 1590 gfx::SelectionModel sel(0, gfx::CURSOR_FORWARD); | 1561 gfx::SelectionModel sel(0, gfx::CURSOR_FORWARD); |
| 1591 cursor_bounds.push_back(GetCursorBounds(sel)); | 1562 cursor_bounds.push_back(GetCursorBounds(sel)); |
| 1592 | 1563 |
| 1593 sel = gfx::SelectionModel(1, gfx::CURSOR_BACKWARD); | 1564 sel = gfx::SelectionModel(1, gfx::CURSOR_BACKWARD); |
| 1594 gfx::Rect bound = GetCursorBounds(sel); | 1565 gfx::Rect bound = GetCursorBounds(sel); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1629 // for the test to run if using sleep(). | 1600 // for the test to run if using sleep(). |
| 1630 NonClientMouseClick(); | 1601 NonClientMouseClick(); |
| 1631 | 1602 |
| 1632 MouseClick(cursor_bounds[i + 1], - (half_width / 2)); | 1603 MouseClick(cursor_bounds[i + 1], - (half_width / 2)); |
| 1633 EXPECT_EQ(cursor_pos_expected[index++], textfield_->GetCursorPosition()); | 1604 EXPECT_EQ(cursor_pos_expected[index++], textfield_->GetCursorPosition()); |
| 1634 | 1605 |
| 1635 NonClientMouseClick(); | 1606 NonClientMouseClick(); |
| 1636 } | 1607 } |
| 1637 } | 1608 } |
| 1638 | 1609 |
| 1639 TEST_F(NativeTextfieldViewsTest, HitOutsideTextAreaTest) { | 1610 TEST_F(TextfieldTest, HitOutsideTextAreaTest) { |
| 1640 InitTextfield(Textfield::STYLE_DEFAULT); | 1611 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1641 | 1612 |
| 1642 // LTR-RTL string in LTR context. | 1613 // LTR-RTL string in LTR context. |
| 1643 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); | 1614 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); |
| 1644 | 1615 |
| 1645 SendKeyEvent(ui::VKEY_HOME); | 1616 SendKeyEvent(ui::VKEY_HOME); |
| 1646 gfx::Rect bound = GetCursorBounds(); | 1617 gfx::Rect bound = GetCursorBounds(); |
| 1647 MouseClick(bound, -10); | 1618 MouseClick(bound, -10); |
| 1648 EXPECT_EQ(bound, GetCursorBounds()); | 1619 EXPECT_EQ(bound, GetCursorBounds()); |
| 1649 | 1620 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1661 bound = GetCursorBounds(); | 1632 bound = GetCursorBounds(); |
| 1662 MouseClick(bound, 10); | 1633 MouseClick(bound, 10); |
| 1663 EXPECT_EQ(bound, GetCursorBounds()); | 1634 EXPECT_EQ(bound, GetCursorBounds()); |
| 1664 | 1635 |
| 1665 SendKeyEvent(ui::VKEY_END); | 1636 SendKeyEvent(ui::VKEY_END); |
| 1666 bound = GetCursorBounds(); | 1637 bound = GetCursorBounds(); |
| 1667 MouseClick(bound, -10); | 1638 MouseClick(bound, -10); |
| 1668 EXPECT_EQ(bound, GetCursorBounds()); | 1639 EXPECT_EQ(bound, GetCursorBounds()); |
| 1669 } | 1640 } |
| 1670 | 1641 |
| 1671 TEST_F(NativeTextfieldViewsTest, HitOutsideTextAreaInRTLTest) { | 1642 TEST_F(TextfieldTest, HitOutsideTextAreaInRTLTest) { |
| 1672 std::string locale = l10n_util::GetApplicationLocale(""); | 1643 std::string locale = l10n_util::GetApplicationLocale(""); |
| 1673 base::i18n::SetICUDefaultLocale("he"); | 1644 base::i18n::SetICUDefaultLocale("he"); |
| 1674 | 1645 |
| 1675 InitTextfield(Textfield::STYLE_DEFAULT); | 1646 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1676 | 1647 |
| 1677 // RTL-LTR string in RTL context. | 1648 // RTL-LTR string in RTL context. |
| 1678 textfield_->SetText(WideToUTF16(L"\x05E1\x5E2" L"ab")); | 1649 textfield_->SetText(WideToUTF16(L"\x05E1\x5E2" L"ab")); |
| 1679 SendKeyEvent(ui::VKEY_HOME); | 1650 SendKeyEvent(ui::VKEY_HOME); |
| 1680 gfx::Rect bound = GetCursorBounds(); | 1651 gfx::Rect bound = GetCursorBounds(); |
| 1681 MouseClick(bound, 10); | 1652 MouseClick(bound, 10); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1697 | 1668 |
| 1698 SendKeyEvent(ui::VKEY_END); | 1669 SendKeyEvent(ui::VKEY_END); |
| 1699 bound = GetCursorBounds(); | 1670 bound = GetCursorBounds(); |
| 1700 MouseClick(bound, 10); | 1671 MouseClick(bound, 10); |
| 1701 EXPECT_EQ(bound, GetCursorBounds()); | 1672 EXPECT_EQ(bound, GetCursorBounds()); |
| 1702 | 1673 |
| 1703 // Reset locale. | 1674 // Reset locale. |
| 1704 base::i18n::SetICUDefaultLocale(locale); | 1675 base::i18n::SetICUDefaultLocale(locale); |
| 1705 } | 1676 } |
| 1706 | 1677 |
| 1707 TEST_F(NativeTextfieldViewsTest, OverflowTest) { | 1678 TEST_F(TextfieldTest, OverflowTest) { |
| 1708 InitTextfield(Textfield::STYLE_DEFAULT); | 1679 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1709 | 1680 |
| 1710 base::string16 str; | 1681 base::string16 str; |
| 1711 for (int i = 0; i < 500; ++i) | 1682 for (int i = 0; i < 500; ++i) |
| 1712 SendKeyEvent('a'); | 1683 SendKeyEvent('a'); |
| 1713 SendKeyEvent(kHebrewLetterSamekh); | 1684 SendKeyEvent(kHebrewLetterSamekh); |
| 1714 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); | 1685 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); |
| 1715 | 1686 |
| 1716 // Test mouse pointing. | 1687 // Test mouse pointing. |
| 1717 MouseClick(GetCursorBounds(), -1); | 1688 MouseClick(GetCursorBounds(), -1); |
| 1718 EXPECT_EQ(500U, textfield_->GetCursorPosition()); | 1689 EXPECT_EQ(500U, textfield_->GetCursorPosition()); |
| 1719 | 1690 |
| 1720 // Clear text. | 1691 // Clear text. |
| 1721 SendKeyEvent(ui::VKEY_A, false, true); | 1692 SendKeyEvent(ui::VKEY_A, false, true); |
| 1722 SendKeyEvent('\n'); | 1693 SendKeyEvent('\n'); |
| 1723 | 1694 |
| 1724 for (int i = 0; i < 500; ++i) | 1695 for (int i = 0; i < 500; ++i) |
| 1725 SendKeyEvent(kHebrewLetterSamekh); | 1696 SendKeyEvent(kHebrewLetterSamekh); |
| 1726 SendKeyEvent('a'); | 1697 SendKeyEvent('a'); |
| 1727 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); | 1698 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); |
| 1728 | 1699 |
| 1729 MouseClick(GetCursorBounds(), -1); | 1700 MouseClick(GetCursorBounds(), -1); |
| 1730 EXPECT_EQ(501U, textfield_->GetCursorPosition()); | 1701 EXPECT_EQ(501U, textfield_->GetCursorPosition()); |
| 1731 } | 1702 } |
| 1732 | 1703 |
| 1733 TEST_F(NativeTextfieldViewsTest, OverflowInRTLTest) { | 1704 TEST_F(TextfieldTest, OverflowInRTLTest) { |
| 1734 std::string locale = l10n_util::GetApplicationLocale(""); | 1705 std::string locale = l10n_util::GetApplicationLocale(""); |
| 1735 base::i18n::SetICUDefaultLocale("he"); | 1706 base::i18n::SetICUDefaultLocale("he"); |
| 1736 | 1707 |
| 1737 InitTextfield(Textfield::STYLE_DEFAULT); | 1708 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1738 | 1709 |
| 1739 base::string16 str; | 1710 base::string16 str; |
| 1740 for (int i = 0; i < 500; ++i) | 1711 for (int i = 0; i < 500; ++i) |
| 1741 SendKeyEvent('a'); | 1712 SendKeyEvent('a'); |
| 1742 SendKeyEvent(kHebrewLetterSamekh); | 1713 SendKeyEvent(kHebrewLetterSamekh); |
| 1743 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); | 1714 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1754 SendKeyEvent('a'); | 1725 SendKeyEvent('a'); |
| 1755 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); | 1726 EXPECT_TRUE(GetDisplayRect().Contains(GetCursorBounds())); |
| 1756 | 1727 |
| 1757 MouseClick(GetCursorBounds(), 1); | 1728 MouseClick(GetCursorBounds(), 1); |
| 1758 EXPECT_EQ(500U, textfield_->GetCursorPosition()); | 1729 EXPECT_EQ(500U, textfield_->GetCursorPosition()); |
| 1759 | 1730 |
| 1760 // Reset locale. | 1731 // Reset locale. |
| 1761 base::i18n::SetICUDefaultLocale(locale); | 1732 base::i18n::SetICUDefaultLocale(locale); |
| 1762 } | 1733 } |
| 1763 | 1734 |
| 1764 TEST_F(NativeTextfieldViewsTest, GetCompositionCharacterBoundsTest) { | 1735 TEST_F(TextfieldTest, GetCompositionCharacterBoundsTest) { |
| 1765 InitTextfield(Textfield::STYLE_DEFAULT); | 1736 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1766 | 1737 |
| 1767 base::string16 str; | 1738 base::string16 str; |
| 1768 const uint32 char_count = 10UL; | 1739 const uint32 char_count = 10UL; |
| 1769 ui::CompositionText composition; | 1740 ui::CompositionText composition; |
| 1770 composition.text = UTF8ToUTF16("0123456789"); | 1741 composition.text = UTF8ToUTF16("0123456789"); |
| 1771 ui::TextInputClient* client = textfield_->GetTextInputClient(); | 1742 ui::TextInputClient* client = textfield_->GetTextInputClient(); |
| 1772 | 1743 |
| 1773 // Return false if there is no composition text. | 1744 // Return false if there is no composition text. |
| 1774 gfx::Rect rect; | 1745 gfx::Rect rect; |
| 1775 EXPECT_FALSE(client->GetCompositionCharacterBounds(0, &rect)); | 1746 EXPECT_FALSE(client->GetCompositionCharacterBounds(0, &rect)); |
| 1776 | 1747 |
| 1777 // Get each character boundary by cursor. | 1748 // Get each character boundary by cursor. |
| 1778 gfx::Rect char_rect_in_screen_coord[char_count]; | 1749 gfx::Rect char_rect_in_screen_coord[char_count]; |
| 1779 gfx::Rect prev_cursor = GetCursorBounds(); | 1750 gfx::Rect prev_cursor = GetCursorBounds(); |
| 1780 for (uint32 i = 0; i < char_count; ++i) { | 1751 for (uint32 i = 0; i < char_count; ++i) { |
| 1781 composition.selection = gfx::Range(0, i+1); | 1752 composition.selection = gfx::Range(0, i+1); |
| 1782 client->SetCompositionText(composition); | 1753 client->SetCompositionText(composition); |
| 1783 EXPECT_TRUE(client->HasCompositionText()) << " i=" << i; | 1754 EXPECT_TRUE(client->HasCompositionText()) << " i=" << i; |
| 1784 gfx::Rect cursor_bounds = GetCursorBounds(); | 1755 gfx::Rect cursor_bounds = GetCursorBounds(); |
| 1785 gfx::Point top_left(prev_cursor.x(), prev_cursor.y()); | 1756 gfx::Point top_left(prev_cursor.x(), prev_cursor.y()); |
| 1786 gfx::Point bottom_right(cursor_bounds.x(), prev_cursor.bottom()); | 1757 gfx::Point bottom_right(cursor_bounds.x(), prev_cursor.bottom()); |
| 1787 views::View::ConvertPointToScreen(textfield_view_, &top_left); | 1758 views::View::ConvertPointToScreen(textfield_, &top_left); |
| 1788 views::View::ConvertPointToScreen(textfield_view_, &bottom_right); | 1759 views::View::ConvertPointToScreen(textfield_, &bottom_right); |
| 1789 char_rect_in_screen_coord[i].set_origin(top_left); | 1760 char_rect_in_screen_coord[i].set_origin(top_left); |
| 1790 char_rect_in_screen_coord[i].set_width(bottom_right.x() - top_left.x()); | 1761 char_rect_in_screen_coord[i].set_width(bottom_right.x() - top_left.x()); |
| 1791 char_rect_in_screen_coord[i].set_height(bottom_right.y() - top_left.y()); | 1762 char_rect_in_screen_coord[i].set_height(bottom_right.y() - top_left.y()); |
| 1792 prev_cursor = cursor_bounds; | 1763 prev_cursor = cursor_bounds; |
| 1793 } | 1764 } |
| 1794 | 1765 |
| 1795 for (uint32 i = 0; i < char_count; ++i) { | 1766 for (uint32 i = 0; i < char_count; ++i) { |
| 1796 gfx::Rect actual_rect; | 1767 gfx::Rect actual_rect; |
| 1797 EXPECT_TRUE(client->GetCompositionCharacterBounds(i, &actual_rect)) | 1768 EXPECT_TRUE(client->GetCompositionCharacterBounds(i, &actual_rect)) |
| 1798 << " i=" << i; | 1769 << " i=" << i; |
| 1799 EXPECT_EQ(char_rect_in_screen_coord[i], actual_rect) << " i=" << i; | 1770 EXPECT_EQ(char_rect_in_screen_coord[i], actual_rect) << " i=" << i; |
| 1800 } | 1771 } |
| 1801 | 1772 |
| 1802 // Return false if the index is out of range. | 1773 // Return false if the index is out of range. |
| 1803 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count, &rect)); | 1774 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count, &rect)); |
| 1804 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count + 1, &rect)); | 1775 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count + 1, &rect)); |
| 1805 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count + 100, &rect)); | 1776 EXPECT_FALSE(client->GetCompositionCharacterBounds(char_count + 100, &rect)); |
| 1806 } | 1777 } |
| 1807 | 1778 |
| 1808 TEST_F(NativeTextfieldViewsTest, GetCompositionCharacterBounds_ComplexText) { | 1779 TEST_F(TextfieldTest, GetCompositionCharacterBounds_ComplexText) { |
| 1809 InitTextfield(Textfield::STYLE_DEFAULT); | 1780 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1810 | 1781 |
| 1811 const base::char16 kUtf16Chars[] = { | 1782 const base::char16 kUtf16Chars[] = { |
| 1812 // U+0020 SPACE | 1783 // U+0020 SPACE |
| 1813 0x0020, | 1784 0x0020, |
| 1814 // U+1F408 (CAT) as surrogate pair | 1785 // U+1F408 (CAT) as surrogate pair |
| 1815 0xd83d, 0xdc08, | 1786 0xd83d, 0xdc08, |
| 1816 // U+5642 as Ideographic Variation Sequences | 1787 // U+5642 as Ideographic Variation Sequences |
| 1817 0x5642, 0xDB40, 0xDD00, | 1788 0x5642, 0xDB40, 0xDD00, |
| 1818 // U+260E (BLACK TELEPHONE) as Emoji Variation Sequences | 1789 // U+260E (BLACK TELEPHONE) as Emoji Variation Sequences |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1835 | 1806 |
| 1836 // Here we might expect the following results but it actually depends on how | 1807 // Here we might expect the following results but it actually depends on how |
| 1837 // Uniscribe or HarfBuzz treats them with given font. | 1808 // Uniscribe or HarfBuzz treats them with given font. |
| 1838 // - rects[1] == rects[2] | 1809 // - rects[1] == rects[2] |
| 1839 // - rects[3] == rects[4] == rects[5] | 1810 // - rects[3] == rects[4] == rects[5] |
| 1840 // - rects[6] == rects[7] | 1811 // - rects[6] == rects[7] |
| 1841 } | 1812 } |
| 1842 | 1813 |
| 1843 // The word we select by double clicking should remain selected regardless of | 1814 // The word we select by double clicking should remain selected regardless of |
| 1844 // where we drag the mouse afterwards without releasing the left button. | 1815 // where we drag the mouse afterwards without releasing the left button. |
| 1845 TEST_F(NativeTextfieldViewsTest, KeepInitiallySelectedWord) { | 1816 TEST_F(TextfieldTest, KeepInitiallySelectedWord) { |
| 1846 InitTextfield(Textfield::STYLE_DEFAULT); | 1817 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1847 | 1818 |
| 1848 textfield_->SetText(ASCIIToUTF16("abc def ghi")); | 1819 textfield_->SetText(ASCIIToUTF16("abc def ghi")); |
| 1849 | 1820 |
| 1850 textfield_->SelectRange(gfx::Range(5, 5)); | 1821 textfield_->SelectRange(gfx::Range(5, 5)); |
| 1851 const gfx::Rect middle_cursor = GetCursorBounds(); | 1822 const gfx::Rect middle_cursor = GetCursorBounds(); |
| 1852 textfield_->SelectRange(gfx::Range(0, 0)); | 1823 textfield_->SelectRange(gfx::Range(0, 0)); |
| 1853 const gfx::Point beginning = GetCursorBounds().origin(); | 1824 const gfx::Point beginning = GetCursorBounds().origin(); |
| 1854 | 1825 |
| 1855 // Double click, but do not release the left button. | 1826 // Double click, but do not release the left button. |
| 1856 MouseClick(middle_cursor, 0); | 1827 MouseClick(middle_cursor, 0); |
| 1857 const gfx::Point middle(middle_cursor.x(), | 1828 const gfx::Point middle(middle_cursor.x(), |
| 1858 middle_cursor.y() + middle_cursor.height() / 2); | 1829 middle_cursor.y() + middle_cursor.height() / 2); |
| 1859 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, middle, middle, | 1830 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, middle, middle, |
| 1860 ui::EF_LEFT_MOUSE_BUTTON, | 1831 ui::EF_LEFT_MOUSE_BUTTON, |
| 1861 ui::EF_LEFT_MOUSE_BUTTON); | 1832 ui::EF_LEFT_MOUSE_BUTTON); |
| 1862 textfield_view_->OnMousePressed(press_event); | 1833 textfield_->OnMousePressed(press_event); |
| 1863 EXPECT_EQ(gfx::Range(4, 7), textfield_->GetSelectedRange()); | 1834 EXPECT_EQ(gfx::Range(4, 7), textfield_->GetSelectedRange()); |
| 1864 | 1835 |
| 1865 // Drag the mouse to the beginning of the textfield. | 1836 // Drag the mouse to the beginning of the textfield. |
| 1866 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, beginning, beginning, | 1837 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, beginning, beginning, |
| 1867 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1838 ui::EF_LEFT_MOUSE_BUTTON, 0); |
| 1868 textfield_view_->OnMouseDragged(drag_event); | 1839 textfield_->OnMouseDragged(drag_event); |
| 1869 EXPECT_EQ(gfx::Range(7, 0), textfield_->GetSelectedRange()); | 1840 EXPECT_EQ(gfx::Range(7, 0), textfield_->GetSelectedRange()); |
| 1870 } | 1841 } |
| 1871 | 1842 |
| 1872 // Touch selection and draggin currently only works for chromeos. | 1843 // Touch selection and dragging currently only works for chromeos. |
| 1873 #if defined(OS_CHROMEOS) | 1844 #if defined(OS_CHROMEOS) |
| 1874 TEST_F(NativeTextfieldViewsTest, TouchSelectionAndDraggingTest) { | 1845 TEST_F(TextfieldTest, TouchSelectionAndDraggingTest) { |
| 1875 InitTextfield(Textfield::STYLE_DEFAULT); | 1846 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1876 textfield_->SetText(ASCIIToUTF16("hello world")); | 1847 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 1877 EXPECT_FALSE(GetTouchSelectionController()); | 1848 EXPECT_FALSE(GetTouchSelectionController()); |
| 1878 const int eventX = GetCursorPositionX(2); | 1849 const int x = GetCursorPositionX(2); |
| 1879 const int eventY = 0; | 1850 GestureEventForTest tap(ui::ET_GESTURE_TAP, x, 0, 1.0f, 0.0f); |
| 1851 GestureEventForTest tap_down(ui::ET_GESTURE_TAP_DOWN, x, 0, 0.0f, 0.0f); |
| 1852 GestureEventForTest long_press(ui::ET_GESTURE_LONG_PRESS, x, 0, 0.0f, 0.0f); |
| 1880 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); | 1853 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); |
| 1881 | 1854 |
| 1882 // Tapping on the textfield should turn on the TouchSelectionController. | 1855 // Tapping on the textfield should turn on the TouchSelectionController. |
| 1883 GestureEventForTest tap(ui::ET_GESTURE_TAP, eventX, eventY, 1.0f, 0.0f); | 1856 textfield_->OnGestureEvent(&tap); |
| 1884 textfield_view_->OnGestureEvent(&tap); | |
| 1885 EXPECT_TRUE(GetTouchSelectionController()); | 1857 EXPECT_TRUE(GetTouchSelectionController()); |
| 1886 | 1858 |
| 1887 // Un-focusing the textfield should reset the TouchSelectionController | 1859 // Un-focusing the textfield should reset the TouchSelectionController |
| 1888 textfield_view_->GetFocusManager()->ClearFocus(); | 1860 textfield_->GetFocusManager()->ClearFocus(); |
| 1889 EXPECT_FALSE(GetTouchSelectionController()); | 1861 EXPECT_FALSE(GetTouchSelectionController()); |
| 1890 | 1862 |
| 1891 // With touch editing enabled, long press should not show context menu. | 1863 // With touch editing enabled, long press should not show context menu. |
| 1892 // Instead, select word and invoke TouchSelectionController. | 1864 // Instead, select word and invoke TouchSelectionController. |
| 1893 GestureEventForTest tap_down(ui::ET_GESTURE_TAP_DOWN, eventX, eventY, 0.0f, | 1865 textfield_->OnGestureEvent(&tap_down); |
| 1894 0.0f); | 1866 textfield_->OnGestureEvent(&long_press); |
| 1895 textfield_view_->OnGestureEvent(&tap_down); | |
| 1896 GestureEventForTest long_press(ui::ET_GESTURE_LONG_PRESS, eventX, eventY, | |
| 1897 0.0f, 0.0f); | |
| 1898 textfield_view_->OnGestureEvent(&long_press); | |
| 1899 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); | 1867 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); |
| 1900 EXPECT_TRUE(GetTouchSelectionController()); | 1868 EXPECT_TRUE(GetTouchSelectionController()); |
| 1901 | 1869 |
| 1902 // Long pressing again in the selecting region should not do anything since | 1870 // With touch drag drop enabled, long pressing in the selected region should |
| 1903 // touch drag drop is not yet enabled. | 1871 // start a drag and remove TouchSelectionController. |
| 1904 textfield_view_->OnGestureEvent(&tap_down); | 1872 ASSERT_TRUE(switches::IsTouchDragDropEnabled()); |
| 1905 textfield_view_->OnGestureEvent(&long_press); | 1873 textfield_->OnGestureEvent(&tap_down); |
| 1874 textfield_->OnGestureEvent(&long_press); |
| 1875 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); |
| 1876 EXPECT_FALSE(GetTouchSelectionController()); |
| 1877 |
| 1878 // After disabling touch drag drop, long pressing again in the selection |
| 1879 // region should not do anything. |
| 1880 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 1881 switches::kDisableTouchDragDrop); |
| 1882 ASSERT_FALSE(switches::IsTouchDragDropEnabled()); |
| 1883 textfield_->OnGestureEvent(&tap_down); |
| 1884 textfield_->OnGestureEvent(&long_press); |
| 1906 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); | 1885 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); |
| 1907 EXPECT_TRUE(GetTouchSelectionController()); | 1886 EXPECT_TRUE(GetTouchSelectionController()); |
| 1908 EXPECT_TRUE(long_press.handled()); | 1887 EXPECT_TRUE(long_press.handled()); |
| 1909 | |
| 1910 // After enabling touch drag drop, long pressing in the selected region should | |
| 1911 // start a drag and remove TouchSelectionController. | |
| 1912 CommandLine::ForCurrentProcess()->AppendSwitch( | |
| 1913 switches::kEnableTouchDragDrop); | |
| 1914 textfield_view_->OnGestureEvent(&tap_down); | |
| 1915 | |
| 1916 // Create a new long press event since the previous one is not marked handled. | |
| 1917 GestureEventForTest long_press2(ui::ET_GESTURE_LONG_PRESS, eventX, eventY, | |
| 1918 0.0f, 0.0f); | |
| 1919 textfield_view_->OnGestureEvent(&long_press2); | |
| 1920 EXPECT_STR_EQ("hello", textfield_->GetSelectedText()); | |
| 1921 EXPECT_FALSE(GetTouchSelectionController()); | |
| 1922 } | 1888 } |
| 1923 | 1889 |
| 1924 TEST_F(NativeTextfieldViewsTest, TouchScrubbingSelection) { | 1890 TEST_F(TextfieldTest, TouchScrubbingSelection) { |
| 1925 InitTextfield(Textfield::STYLE_DEFAULT); | 1891 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1926 textfield_->SetText(ASCIIToUTF16("hello world")); | 1892 textfield_->SetText(ASCIIToUTF16("hello world")); |
| 1927 EXPECT_FALSE(GetTouchSelectionController()); | 1893 EXPECT_FALSE(GetTouchSelectionController()); |
| 1928 | 1894 |
| 1929 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); | 1895 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing); |
| 1930 | 1896 |
| 1931 // Simulate touch-scrubbing. | 1897 // Simulate touch-scrubbing. |
| 1932 int scrubbing_start = GetCursorPositionX(1); | 1898 int scrubbing_start = GetCursorPositionX(1); |
| 1933 int scrubbing_end = GetCursorPositionX(6); | 1899 int scrubbing_end = GetCursorPositionX(6); |
| 1934 | 1900 |
| 1935 GestureEventForTest tap_down(ui::ET_GESTURE_TAP_DOWN, scrubbing_start, 0, | 1901 GestureEventForTest tap_down(ui::ET_GESTURE_TAP_DOWN, scrubbing_start, 0, |
| 1936 0.0f, 0.0f); | 1902 0.0f, 0.0f); |
| 1937 textfield_view_->OnGestureEvent(&tap_down); | 1903 textfield_->OnGestureEvent(&tap_down); |
| 1938 | 1904 |
| 1939 GestureEventForTest tap_cancel(ui::ET_GESTURE_TAP_CANCEL, scrubbing_start, 0, | 1905 GestureEventForTest tap_cancel(ui::ET_GESTURE_TAP_CANCEL, scrubbing_start, 0, |
| 1940 0.0f, 0.0f); | 1906 0.0f, 0.0f); |
| 1941 textfield_view_->OnGestureEvent(&tap_cancel); | 1907 textfield_->OnGestureEvent(&tap_cancel); |
| 1942 | 1908 |
| 1943 GestureEventForTest scroll_begin(ui::ET_GESTURE_SCROLL_BEGIN, scrubbing_start, | 1909 GestureEventForTest scroll_begin(ui::ET_GESTURE_SCROLL_BEGIN, scrubbing_start, |
| 1944 0, 0.0f, 0.0f); | 1910 0, 0.0f, 0.0f); |
| 1945 textfield_view_->OnGestureEvent(&scroll_begin); | 1911 textfield_->OnGestureEvent(&scroll_begin); |
| 1946 | 1912 |
| 1947 GestureEventForTest scroll_update(ui::ET_GESTURE_SCROLL_UPDATE, scrubbing_end, | 1913 GestureEventForTest scroll_update(ui::ET_GESTURE_SCROLL_UPDATE, scrubbing_end, |
| 1948 0, scrubbing_end - scrubbing_start, 0.0f); | 1914 0, scrubbing_end - scrubbing_start, 0.0f); |
| 1949 textfield_view_->OnGestureEvent(&scroll_update); | 1915 textfield_->OnGestureEvent(&scroll_update); |
| 1950 | 1916 |
| 1951 GestureEventForTest scroll_end(ui::ET_GESTURE_SCROLL_END, scrubbing_end, 0, | 1917 GestureEventForTest scroll_end(ui::ET_GESTURE_SCROLL_END, scrubbing_end, 0, |
| 1952 0.0f, 0.0f); | 1918 0.0f, 0.0f); |
| 1953 textfield_view_->OnGestureEvent(&scroll_end); | 1919 textfield_->OnGestureEvent(&scroll_end); |
| 1954 | 1920 |
| 1955 GestureEventForTest end(ui::ET_GESTURE_END, scrubbing_end, 0, 0.0f, 0.0f); | 1921 GestureEventForTest end(ui::ET_GESTURE_END, scrubbing_end, 0, 0.0f, 0.0f); |
| 1956 textfield_view_->OnGestureEvent(&end); | 1922 textfield_->OnGestureEvent(&end); |
| 1957 | 1923 |
| 1958 // In the end, part of text should have been selected and handles should have | 1924 // In the end, part of text should have been selected and handles should have |
| 1959 // appeared. | 1925 // appeared. |
| 1960 EXPECT_STR_EQ("ello ", textfield_->GetSelectedText()); | 1926 EXPECT_STR_EQ("ello ", textfield_->GetSelectedText()); |
| 1961 EXPECT_TRUE(GetTouchSelectionController()); | 1927 EXPECT_TRUE(GetTouchSelectionController()); |
| 1962 } | 1928 } |
| 1963 #endif | 1929 #endif |
| 1964 | 1930 |
| 1965 // Long_Press gesture in NativeTextfieldViews can initiate a drag and drop now. | 1931 // Long_Press gesture in Textfield can initiate a drag and drop now. |
| 1966 TEST_F(NativeTextfieldViewsTest, TestLongPressInitiatesDragDrop) { | 1932 TEST_F(TextfieldTest, TestLongPressInitiatesDragDrop) { |
| 1967 InitTextfield(Textfield::STYLE_DEFAULT); | 1933 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1968 textfield_->SetText(ASCIIToUTF16("Hello string world")); | 1934 textfield_->SetText(ASCIIToUTF16("Hello string world")); |
| 1969 | 1935 |
| 1970 // Ensure the textfield will provide selected text for drag data. | 1936 // Ensure the textfield will provide selected text for drag data. |
| 1971 textfield_->SelectRange(gfx::Range(6, 12)); | 1937 textfield_->SelectRange(gfx::Range(6, 12)); |
| 1972 const gfx::Point kStringPoint(GetCursorPositionX(9), 0); | 1938 const gfx::Point kStringPoint(GetCursorPositionX(9), 0); |
| 1973 | 1939 |
| 1974 // Enable touch-drag-drop to make long press effective. | 1940 // Enable touch-drag-drop to make long press effective. |
| 1975 CommandLine::ForCurrentProcess()->AppendSwitch( | 1941 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 1976 switches::kEnableTouchDragDrop); | 1942 switches::kEnableTouchDragDrop); |
| 1977 | 1943 |
| 1978 // Create a long press event in the selected region should start a drag. | 1944 // Create a long press event in the selected region should start a drag. |
| 1979 GestureEventForTest long_press(ui::ET_GESTURE_LONG_PRESS, kStringPoint.x(), | 1945 GestureEventForTest long_press(ui::ET_GESTURE_LONG_PRESS, kStringPoint.x(), |
| 1980 kStringPoint.y(), 0.0f, 0.0f); | 1946 kStringPoint.y(), 0.0f, 0.0f); |
| 1981 textfield_view_->OnGestureEvent(&long_press); | 1947 textfield_->OnGestureEvent(&long_press); |
| 1982 EXPECT_TRUE(textfield_view_->CanStartDragForView(NULL, | 1948 EXPECT_TRUE(textfield_->CanStartDragForView(NULL, kStringPoint, |
| 1983 kStringPoint, kStringPoint)); | 1949 kStringPoint)); |
| 1984 } | 1950 } |
| 1985 | 1951 |
| 1986 TEST_F(NativeTextfieldViewsTest, GetTextfieldBaseline_FontFallbackTest) { | 1952 TEST_F(TextfieldTest, GetTextfieldBaseline_FontFallbackTest) { |
| 1987 InitTextfield(Textfield::STYLE_DEFAULT); | 1953 InitTextfield(Textfield::STYLE_DEFAULT); |
| 1988 textfield_->SetText(UTF8ToUTF16("abc")); | 1954 textfield_->SetText(UTF8ToUTF16("abc")); |
| 1989 const int old_baseline = textfield_->GetBaseline(); | 1955 const int old_baseline = textfield_->GetBaseline(); |
| 1990 | 1956 |
| 1991 // Set text which may fall back to a font which has taller baseline than | 1957 // Set text which may fall back to a font which has taller baseline than |
| 1992 // the default font. | 1958 // the default font. |
| 1993 textfield_->SetText(UTF8ToUTF16("\xE0\xB9\x91")); | 1959 textfield_->SetText(UTF8ToUTF16("\xE0\xB9\x91")); |
| 1994 const int new_baseline = textfield_->GetBaseline(); | 1960 const int new_baseline = textfield_->GetBaseline(); |
| 1995 | 1961 |
| 1996 // Regardless of the text, the baseline must be the same. | 1962 // Regardless of the text, the baseline must be the same. |
| 1997 EXPECT_EQ(new_baseline, old_baseline); | 1963 EXPECT_EQ(new_baseline, old_baseline); |
| 1998 } | 1964 } |
| 1999 | 1965 |
| 2000 } // namespace views | 1966 } // namespace views |
| OLD | NEW |