| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <stdio.h> | 5 #include <stdio.h> |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/string16.h" | 8 #include "base/string16.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "chrome/browser/search_engines/template_url_model.h" | 23 #include "chrome/browser/search_engines/template_url_model.h" |
| 24 #include "chrome/browser/tab_contents/tab_contents.h" | 24 #include "chrome/browser/tab_contents/tab_contents.h" |
| 25 #include "chrome/browser/ui/browser.h" | 25 #include "chrome/browser/ui/browser.h" |
| 26 #include "chrome/browser/ui/omnibox/location_bar.h" | 26 #include "chrome/browser/ui/omnibox/location_bar.h" |
| 27 #include "chrome/common/chrome_paths.h" | 27 #include "chrome/common/chrome_paths.h" |
| 28 #include "chrome/common/notification_service.h" | 28 #include "chrome/common/notification_service.h" |
| 29 #include "chrome/common/url_constants.h" | 29 #include "chrome/common/url_constants.h" |
| 30 #include "chrome/test/in_process_browser_test.h" | 30 #include "chrome/test/in_process_browser_test.h" |
| 31 #include "chrome/test/ui_test_utils.h" | 31 #include "chrome/test/ui_test_utils.h" |
| 32 #include "net/base/mock_host_resolver.h" | 32 #include "net/base/mock_host_resolver.h" |
| 33 #include "ui/base/events.h" |
| 33 #include "ui/base/keycodes/keyboard_codes.h" | 34 #include "ui/base/keycodes/keyboard_codes.h" |
| 34 #include "views/events/event.h" | |
| 35 | 35 |
| 36 #if defined(OS_LINUX) | 36 #if defined(OS_LINUX) |
| 37 #include <gdk/gdk.h> | 37 #include <gdk/gdk.h> |
| 38 #include <gtk/gtk.h> | 38 #include <gtk/gtk.h> |
| 39 #endif | 39 #endif |
| 40 | 40 |
| 41 #if defined(TOOLKIT_VIEWS) | 41 #if defined(TOOLKIT_VIEWS) |
| 42 #include "views/controls/textfield/native_textfield_views.h" | 42 #include "views/controls/textfield/native_textfield_views.h" |
| 43 #include "views/events/event.h" |
| 43 #endif | 44 #endif |
| 44 | 45 |
| 45 using base::Time; | 46 using base::Time; |
| 46 using base::TimeDelta; | 47 using base::TimeDelta; |
| 47 | 48 |
| 48 namespace { | 49 namespace { |
| 49 | 50 |
| 50 const char kSearchKeyword[] = "foo"; | 51 const char kSearchKeyword[] = "foo"; |
| 51 const wchar_t kSearchKeywordKeys[] = { | 52 const wchar_t kSearchKeywordKeys[] = { |
| 52 ui::VKEY_F, ui::VKEY_O, ui::VKEY_O, 0 | 53 ui::VKEY_F, ui::VKEY_O, ui::VKEY_O, 0 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 | 125 |
| 125 // Stores the given text to clipboard. | 126 // Stores the given text to clipboard. |
| 126 void SetClipboardText(const char* text) { | 127 void SetClipboardText(const char* text) { |
| 127 GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); | 128 GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); |
| 128 DCHECK(clipboard); | 129 DCHECK(clipboard); |
| 129 | 130 |
| 130 gtk_clipboard_set_text(clipboard, text, -1); | 131 gtk_clipboard_set_text(clipboard, text, -1); |
| 131 } | 132 } |
| 132 #endif | 133 #endif |
| 133 | 134 |
| 135 #if defined(OS_MACOSX) |
| 136 const int kCtrlOrCmdMask = ui::EF_COMMAND_DOWN; |
| 137 #else |
| 138 const int kCtrlOrCmdMask = ui::EF_CONTROL_DOWN; |
| 139 #endif |
| 140 |
| 134 } // namespace | 141 } // namespace |
| 135 | 142 |
| 136 class AutocompleteEditViewTest : public InProcessBrowserTest, | 143 class AutocompleteEditViewTest : public InProcessBrowserTest, |
| 137 public NotificationObserver { | 144 public NotificationObserver { |
| 138 protected: | 145 protected: |
| 139 AutocompleteEditViewTest() { | 146 AutocompleteEditViewTest() { |
| 140 set_show_window(true); | 147 set_show_window(true); |
| 141 } | 148 } |
| 142 | 149 |
| 143 virtual void SetUpOnMainThread() { | 150 virtual void SetUpOnMainThread() { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 162 *edit_view = loc_bar->location_entry(); | 169 *edit_view = loc_bar->location_entry(); |
| 163 ASSERT_TRUE(*edit_view); | 170 ASSERT_TRUE(*edit_view); |
| 164 } | 171 } |
| 165 | 172 |
| 166 void GetAutocompleteEditView(AutocompleteEditView** edit_view) { | 173 void GetAutocompleteEditView(AutocompleteEditView** edit_view) { |
| 167 GetAutocompleteEditViewForBrowser(browser(), edit_view); | 174 GetAutocompleteEditViewForBrowser(browser(), edit_view); |
| 168 } | 175 } |
| 169 | 176 |
| 170 static void SendKeyForBrowser(const Browser* browser, | 177 static void SendKeyForBrowser(const Browser* browser, |
| 171 ui::KeyboardCode key, | 178 ui::KeyboardCode key, |
| 172 bool control, | 179 int modifiers) { |
| 173 bool shift, | |
| 174 bool alt) { | |
| 175 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 180 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
| 176 browser, key, control, shift, alt, false /* command */)); | 181 browser, key, |
| 182 (modifiers & ui::EF_CONTROL_DOWN) != 0, |
| 183 (modifiers & ui::EF_SHIFT_DOWN) != 0, |
| 184 (modifiers & ui::EF_ALT_DOWN) != 0, |
| 185 (modifiers & ui::EF_COMMAND_DOWN) != 0)); |
| 177 } | 186 } |
| 178 | 187 |
| 179 void SendKey(ui::KeyboardCode key, bool control, bool shift, bool alt) { | 188 void SendKey(ui::KeyboardCode key, int modifiers) { |
| 180 SendKeyForBrowser(browser(), key, control, shift, alt); | 189 SendKeyForBrowser(browser(), key, modifiers); |
| 181 } | 190 } |
| 182 | 191 |
| 183 void SendKeySequence(const wchar_t* keys) { | 192 void SendKeySequence(const wchar_t* keys) { |
| 184 for (; *keys; ++keys) | 193 for (; *keys; ++keys) |
| 185 ASSERT_NO_FATAL_FAILURE(SendKey(static_cast<ui::KeyboardCode>(*keys), | 194 ASSERT_NO_FATAL_FAILURE(SendKey(static_cast<ui::KeyboardCode>(*keys), 0)); |
| 186 false, false, false)); | 195 } |
| 196 |
| 197 bool SendKeyAndWait(const Browser* browser, |
| 198 ui::KeyboardCode key, |
| 199 int modifiers, |
| 200 NotificationType type, |
| 201 const NotificationSource& source) WARN_UNUSED_RESULT { |
| 202 return ui_test_utils::SendKeyPressAndWait( |
| 203 browser, key, |
| 204 (modifiers & ui::EF_CONTROL_DOWN) != 0, |
| 205 (modifiers & ui::EF_SHIFT_DOWN) != 0, |
| 206 (modifiers & ui::EF_ALT_DOWN) != 0, |
| 207 (modifiers & ui::EF_COMMAND_DOWN) != 0, |
| 208 type, source); |
| 187 } | 209 } |
| 188 | 210 |
| 189 void WaitForTabOpenOrCloseForBrowser(const Browser* browser, | 211 void WaitForTabOpenOrCloseForBrowser(const Browser* browser, |
| 190 int expected_tab_count) { | 212 int expected_tab_count) { |
| 191 int tab_count = browser->tab_count(); | 213 int tab_count = browser->tab_count(); |
| 192 if (tab_count == expected_tab_count) | 214 if (tab_count == expected_tab_count) |
| 193 return; | 215 return; |
| 194 | 216 |
| 195 NotificationRegistrar registrar; | 217 NotificationRegistrar registrar; |
| 196 registrar.Add(this, | 218 registrar.Add(this, |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 AutocompleteEditView* edit_view = NULL; | 361 AutocompleteEditView* edit_view = NULL; |
| 340 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 362 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 341 | 363 |
| 342 int tab_count = browser()->tab_count(); | 364 int tab_count = browser()->tab_count(); |
| 343 | 365 |
| 344 // Create a new Tab. | 366 // Create a new Tab. |
| 345 browser()->NewTab(); | 367 browser()->NewTab(); |
| 346 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); | 368 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); |
| 347 | 369 |
| 348 // Select the first Tab. | 370 // Select the first Tab. |
| 349 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_1, true, false, false)); | 371 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_1, kCtrlOrCmdMask)); |
| 350 ASSERT_EQ(0, browser()->selected_index()); | 372 ASSERT_EQ(0, browser()->selected_index()); |
| 351 | 373 |
| 352 browser()->FocusLocationBar(); | 374 browser()->FocusLocationBar(); |
| 353 | 375 |
| 354 // Select the second Tab. | 376 // Select the second Tab. |
| 355 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_2, true, false, false)); | 377 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_2, kCtrlOrCmdMask)); |
| 356 ASSERT_EQ(1, browser()->selected_index()); | 378 ASSERT_EQ(1, browser()->selected_index()); |
| 357 | 379 |
| 358 browser()->FocusLocationBar(); | 380 browser()->FocusLocationBar(); |
| 359 | 381 |
| 360 // Try ctrl-w to close a Tab. | 382 // Try ctrl-w to close a Tab. |
| 361 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_W, true, false, false)); | 383 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_W, kCtrlOrCmdMask)); |
| 362 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count)); | 384 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count)); |
| 363 | 385 |
| 364 // Try ctrl-l to focus location bar. | 386 // Try ctrl-l to focus location bar. |
| 365 edit_view->SetUserText(ASCIIToUTF16("Hello world")); | 387 edit_view->SetUserText(ASCIIToUTF16("Hello world")); |
| 366 EXPECT_FALSE(edit_view->IsSelectAll()); | 388 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 367 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_L, true, false, false)); | 389 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_L, kCtrlOrCmdMask)); |
| 368 EXPECT_TRUE(edit_view->IsSelectAll()); | 390 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 369 | 391 |
| 370 // Try editing the location bar text. | 392 // Try editing the location bar text. |
| 371 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RIGHT, false, false, false)); | 393 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RIGHT, 0)); |
| 372 EXPECT_FALSE(edit_view->IsSelectAll()); | 394 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 373 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_S, false, false, false)); | 395 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_S, 0)); |
| 374 EXPECT_EQ(ASCIIToUTF16("Hello worlds"), edit_view->GetText()); | 396 EXPECT_EQ(ASCIIToUTF16("Hello worlds"), edit_view->GetText()); |
| 375 | 397 |
| 376 // Try ctrl-x to cut text. | 398 // Try ctrl-x to cut text. |
| 377 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, true, true, false)); | 399 #if defined(OS_MACOSX) |
| 400 // Mac uses alt-left/right to select a word. |
| 401 ASSERT_NO_FATAL_FAILURE( |
| 402 SendKey(ui::VKEY_LEFT, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN)); |
| 403 #else |
| 404 ASSERT_NO_FATAL_FAILURE( |
| 405 SendKey(ui::VKEY_LEFT, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)); |
| 406 #endif |
| 378 EXPECT_FALSE(edit_view->IsSelectAll()); | 407 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 379 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_X, true, false, false)); | 408 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_X, kCtrlOrCmdMask)); |
| 380 EXPECT_EQ(ASCIIToUTF16("Hello "), edit_view->GetText()); | 409 EXPECT_EQ(ASCIIToUTF16("Hello "), edit_view->GetText()); |
| 381 | 410 |
| 382 #if !defined(OS_CHROMEOS) | 411 #if !defined(OS_CHROMEOS) && !defined(OS_MACOSX) |
| 383 // Try alt-f4 to close the browser. | 412 // Try alt-f4 to close the browser. |
| 384 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | 413 ASSERT_TRUE(SendKeyAndWait( |
| 385 browser(), ui::VKEY_F4, false, false, true, false, | 414 browser(), ui::VKEY_F4, ui::EF_ALT_DOWN, |
| 386 NotificationType::BROWSER_CLOSED, Source<Browser>(browser()))); | 415 NotificationType::BROWSER_CLOSED, Source<Browser>(browser()))); |
| 387 #endif | 416 #endif |
| 388 } | 417 } |
| 389 | 418 |
| 390 void PopupAcceleratorsTest() { | 419 void PopupAcceleratorsTest() { |
| 391 // Create a popup. | 420 // Create a popup. |
| 392 Browser* popup = CreateBrowserForPopup(browser()->profile()); | 421 Browser* popup = CreateBrowserForPopup(browser()->profile()); |
| 422 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(popup)); |
| 393 AutocompleteEditView* edit_view = NULL; | 423 AutocompleteEditView* edit_view = NULL; |
| 394 ASSERT_NO_FATAL_FAILURE( | 424 ASSERT_NO_FATAL_FAILURE( |
| 395 GetAutocompleteEditViewForBrowser(popup, &edit_view)); | 425 GetAutocompleteEditViewForBrowser(popup, &edit_view)); |
| 396 popup->FocusLocationBar(); | 426 popup->FocusLocationBar(); |
| 397 EXPECT_TRUE(edit_view->IsSelectAll()); | 427 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 398 | 428 |
| 429 #if !defined(OS_MACOSX) |
| 399 // Try ctrl-w to close the popup. | 430 // Try ctrl-w to close the popup. |
| 400 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | 431 // This piece of code doesn't work on Mac, because the Browser object won't |
| 401 popup, ui::VKEY_W, true, false, false, false, | 432 // be destroyed before finishing the current message loop iteration, thus |
| 433 // No BROWSER_CLOSED notification will be sent. |
| 434 ASSERT_TRUE(SendKeyAndWait( |
| 435 popup, ui::VKEY_W, ui::EF_CONTROL_DOWN, |
| 402 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); | 436 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); |
| 403 | 437 |
| 404 // Create another popup. | 438 // Create another popup. |
| 405 popup = CreateBrowserForPopup(browser()->profile()); | 439 popup = CreateBrowserForPopup(browser()->profile()); |
| 440 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(popup)); |
| 406 ASSERT_NO_FATAL_FAILURE( | 441 ASSERT_NO_FATAL_FAILURE( |
| 407 GetAutocompleteEditViewForBrowser(popup, &edit_view)); | 442 GetAutocompleteEditViewForBrowser(popup, &edit_view)); |
| 443 #endif |
| 408 | 444 |
| 409 // Set the edit text to "Hello world". | 445 // Set the edit text to "Hello world". |
| 410 edit_view->SetUserText(ASCIIToUTF16("Hello world")); | 446 edit_view->SetUserText(ASCIIToUTF16("Hello world")); |
| 411 EXPECT_FALSE(edit_view->IsSelectAll()); | |
| 412 popup->FocusLocationBar(); | 447 popup->FocusLocationBar(); |
| 413 EXPECT_TRUE(edit_view->IsSelectAll()); | 448 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 414 | 449 |
| 415 // Try editing the location bar text -- should be disallowed. | 450 // Try editing the location bar text -- should be disallowed. |
| 416 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_RIGHT, false, | 451 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_S, 0)); |
| 417 false, false)); | |
| 418 EXPECT_FALSE(edit_view->IsSelectAll()); | |
| 419 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_S, false, false, | |
| 420 false)); | |
| 421 EXPECT_EQ(ASCIIToUTF16("Hello world"), edit_view->GetText()); | 452 EXPECT_EQ(ASCIIToUTF16("Hello world"), edit_view->GetText()); |
| 453 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 422 | 454 |
| 423 // Try ctrl-x to cut text -- should be disallowed. | 455 ASSERT_NO_FATAL_FAILURE( |
| 424 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_LEFT, true, true, | 456 SendKeyForBrowser(popup, ui::VKEY_X, kCtrlOrCmdMask)); |
| 425 false)); | |
| 426 EXPECT_FALSE(edit_view->IsSelectAll()); | |
| 427 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_X, true, false, | |
| 428 false)); | |
| 429 EXPECT_EQ(ASCIIToUTF16("Hello world"), edit_view->GetText()); | 457 EXPECT_EQ(ASCIIToUTF16("Hello world"), edit_view->GetText()); |
| 458 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 430 | 459 |
| 431 #if !defined(OS_CHROMEOS) | 460 #if !defined(OS_CHROMEOS) && !defined(OS_MACOSX) |
| 432 // Try alt-f4 to close the popup. | 461 // Try alt-f4 to close the popup. |
| 433 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | 462 ASSERT_TRUE(SendKeyAndWait( |
| 434 popup, ui::VKEY_F4, false, false, true, false, | 463 popup, ui::VKEY_F4, ui::EF_ALT_DOWN, |
| 435 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); | 464 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); |
| 436 #endif | 465 #endif |
| 437 } | 466 } |
| 438 | 467 |
| 439 void BackspaceInKeywordModeTest() { | 468 void BackspaceInKeywordModeTest() { |
| 440 AutocompleteEditView* edit_view = NULL; | 469 AutocompleteEditView* edit_view = NULL; |
| 441 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 470 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 442 | 471 |
| 443 // Trigger keyword hint mode. | 472 // Trigger keyword hint mode. |
| 444 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); | 473 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| 445 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 474 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 446 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 475 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 447 | 476 |
| 448 // Trigger keyword mode. | 477 // Trigger keyword mode. |
| 449 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 478 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 450 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 479 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 451 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 480 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 452 | 481 |
| 453 // Backspace without search text should bring back keyword hint mode. | 482 // Backspace without search text should bring back keyword hint mode. |
| 454 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 483 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 455 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 484 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 456 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 485 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 457 | 486 |
| 458 // Trigger keyword mode again. | 487 // Trigger keyword mode again. |
| 459 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 488 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 460 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 489 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 461 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 490 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 462 | 491 |
| 463 // Input something as search text. | 492 // Input something as search text. |
| 464 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | 493 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 465 | 494 |
| 466 // Should stay in keyword mode while deleting search text by pressing | 495 // Should stay in keyword mode while deleting search text by pressing |
| 467 // backspace. | 496 // backspace. |
| 468 for (size_t i = 0; i < arraysize(kSearchText) - 1; ++i) { | 497 for (size_t i = 0; i < arraysize(kSearchText) - 1; ++i) { |
| 469 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 498 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 470 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 499 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 471 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 500 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 472 } | 501 } |
| 473 | 502 |
| 474 // Input something as search text. | 503 // Input something as search text. |
| 475 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | 504 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 476 | 505 |
| 477 // Move cursor to the beginning of the search text. | 506 // Move cursor to the beginning of the search text. |
| 478 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, false, false, false)); | 507 #if defined(OS_MACOSX) |
| 508 // Home doesn't work on Mac trybot. |
| 509 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, ui::EF_CONTROL_DOWN)); |
| 510 #else |
| 511 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, 0)); |
| 512 #endif |
| 479 // Backspace at the beginning of the search text shall turn off | 513 // Backspace at the beginning of the search text shall turn off |
| 480 // the keyword mode. | 514 // the keyword mode. |
| 481 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 515 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 482 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 516 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 483 ASSERT_EQ(string16(), edit_view->model()->keyword()); | 517 ASSERT_EQ(string16(), edit_view->model()->keyword()); |
| 484 ASSERT_EQ(std::string(kSearchKeyword) + kSearchText, | 518 ASSERT_EQ(std::string(kSearchKeyword) + kSearchText, |
| 485 UTF16ToUTF8(edit_view->GetText())); | 519 UTF16ToUTF8(edit_view->GetText())); |
| 486 } | 520 } |
| 487 | 521 |
| 488 void EscapeTest() { | 522 void EscapeTest() { |
| 489 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIHistoryURL)); | 523 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIHistoryURL)); |
| 490 browser()->FocusLocationBar(); | 524 browser()->FocusLocationBar(); |
| 491 | 525 |
| 492 AutocompleteEditView* edit_view = NULL; | 526 AutocompleteEditView* edit_view = NULL; |
| 493 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 527 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 494 | 528 |
| 495 string16 old_text = edit_view->GetText(); | 529 string16 old_text = edit_view->GetText(); |
| 496 EXPECT_FALSE(old_text.empty()); | 530 EXPECT_FALSE(old_text.empty()); |
| 497 EXPECT_TRUE(edit_view->IsSelectAll()); | 531 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 498 | 532 |
| 499 // Delete all text in omnibox. | 533 // Delete all text in omnibox. |
| 500 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 534 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 501 EXPECT_TRUE(edit_view->GetText().empty()); | 535 EXPECT_TRUE(edit_view->GetText().empty()); |
| 502 | 536 |
| 503 // Escape shall revert the text in omnibox. | 537 // Escape shall revert the text in omnibox. |
| 504 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); | 538 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, 0)); |
| 505 EXPECT_EQ(old_text, edit_view->GetText()); | 539 EXPECT_EQ(old_text, edit_view->GetText()); |
| 506 EXPECT_TRUE(edit_view->IsSelectAll()); | 540 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 507 } | 541 } |
| 508 | 542 |
| 509 void DesiredTLDTest() { | 543 void DesiredTLDTest() { |
| 510 AutocompleteEditView* edit_view = NULL; | 544 AutocompleteEditView* edit_view = NULL; |
| 511 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 545 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 512 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | 546 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 513 ASSERT_TRUE(popup_model); | 547 ASSERT_TRUE(popup_model); |
| 514 | 548 |
| 515 // Test ctrl-Enter. | 549 // Test ctrl-Enter. |
| 516 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys)); | 550 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys)); |
| 517 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 551 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 518 ASSERT_TRUE(popup_model->IsOpen()); | 552 ASSERT_TRUE(popup_model->IsOpen()); |
| 519 // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall be | 553 // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall be |
| 520 // opened. | 554 // opened. |
| 521 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, true, false, false)); | 555 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, ui::EF_CONTROL_DOWN)); |
| 522 | 556 |
| 523 GURL url = browser()->GetSelectedTabContents()->GetURL(); | 557 GURL url = browser()->GetSelectedTabContents()->GetURL(); |
| 524 EXPECT_STREQ(kDesiredTLDHostname, url.host().c_str()); | 558 EXPECT_STREQ(kDesiredTLDHostname, url.host().c_str()); |
| 525 } | 559 } |
| 526 | 560 |
| 527 void AltEnterTest() { | 561 void AltEnterTest() { |
| 528 AutocompleteEditView* edit_view = NULL; | 562 AutocompleteEditView* edit_view = NULL; |
| 529 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 563 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 530 | 564 |
| 531 edit_view->SetUserText(ASCIIToUTF16(chrome::kChromeUIHistoryURL)); | 565 edit_view->SetUserText(ASCIIToUTF16(chrome::kChromeUIHistoryURL)); |
| 532 int tab_count = browser()->tab_count(); | 566 int tab_count = browser()->tab_count(); |
| 533 // alt-Enter opens a new tab. | 567 // alt-Enter opens a new tab. |
| 534 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, true)); | 568 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, ui::EF_ALT_DOWN)); |
| 535 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); | 569 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); |
| 536 } | 570 } |
| 537 | 571 |
| 538 void EnterToSearchTest() { | 572 void EnterToSearchTest() { |
| 539 AutocompleteEditView* edit_view = NULL; | 573 AutocompleteEditView* edit_view = NULL; |
| 540 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 574 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 541 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | 575 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 542 ASSERT_TRUE(popup_model); | 576 ASSERT_TRUE(popup_model); |
| 543 | 577 |
| 544 // Test Enter to search. | 578 // Test Enter to search. |
| 545 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | 579 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 546 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 580 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 547 ASSERT_TRUE(popup_model->IsOpen()); | 581 ASSERT_TRUE(popup_model->IsOpen()); |
| 548 | 582 |
| 549 // Check if the default match result is Search Primary Provider. | 583 // Check if the default match result is Search Primary Provider. |
| 550 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, | 584 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, |
| 551 popup_model->result().default_match()->type); | 585 popup_model->result().default_match()->type); |
| 552 | 586 |
| 553 // Open the default match. | 587 // Open the default match. |
| 554 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); | 588 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, 0)); |
| 555 GURL url = browser()->GetSelectedTabContents()->GetURL(); | 589 GURL url = browser()->GetSelectedTabContents()->GetURL(); |
| 556 EXPECT_STREQ(kSearchTextURL, url.spec().c_str()); | 590 EXPECT_STREQ(kSearchTextURL, url.spec().c_str()); |
| 557 | 591 |
| 558 // Test that entering a single character then Enter performs a search. | 592 // Test that entering a single character then Enter performs a search. |
| 559 browser()->FocusLocationBar(); | 593 browser()->FocusLocationBar(); |
| 560 EXPECT_TRUE(edit_view->IsSelectAll()); | 594 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 561 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchSingleCharKeys)); | 595 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchSingleCharKeys)); |
| 562 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 596 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 563 ASSERT_TRUE(popup_model->IsOpen()); | 597 ASSERT_TRUE(popup_model->IsOpen()); |
| 564 EXPECT_EQ(kSearchSingleChar, UTF16ToUTF8(edit_view->GetText())); | 598 EXPECT_EQ(kSearchSingleChar, UTF16ToUTF8(edit_view->GetText())); |
| 565 | 599 |
| 566 // Check if the default match result is Search Primary Provider. | 600 // Check if the default match result is Search Primary Provider. |
| 567 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, | 601 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, |
| 568 popup_model->result().default_match()->type); | 602 popup_model->result().default_match()->type); |
| 569 | 603 |
| 570 // Open the default match. | 604 // Open the default match. |
| 571 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); | 605 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, 0)); |
| 572 url = browser()->GetSelectedTabContents()->GetURL(); | 606 url = browser()->GetSelectedTabContents()->GetURL(); |
| 573 EXPECT_STREQ(kSearchSingleCharURL, url.spec().c_str()); | 607 EXPECT_STREQ(kSearchSingleCharURL, url.spec().c_str()); |
| 574 } | 608 } |
| 575 | 609 |
| 576 void EscapeToDefaultMatchTest() { | 610 void EscapeToDefaultMatchTest() { |
| 577 AutocompleteEditView* edit_view = NULL; | 611 AutocompleteEditView* edit_view = NULL; |
| 578 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 612 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 579 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | 613 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 580 ASSERT_TRUE(popup_model); | 614 ASSERT_TRUE(popup_model); |
| 581 | 615 |
| 582 // Input something to trigger inline autocomplete. | 616 // Input something to trigger inline autocomplete. |
| 583 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kInlineAutocompleteTextKeys)); | 617 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kInlineAutocompleteTextKeys)); |
| 584 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 618 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 585 ASSERT_TRUE(popup_model->IsOpen()); | 619 ASSERT_TRUE(popup_model->IsOpen()); |
| 586 | 620 |
| 587 string16 old_text = edit_view->GetText(); | 621 string16 old_text = edit_view->GetText(); |
| 588 | 622 |
| 589 // Make sure inline autocomplete is triggerred. | 623 // Make sure inline autocomplete is triggerred. |
| 590 EXPECT_GT(old_text.length(), arraysize(kInlineAutocompleteText) - 1); | 624 EXPECT_GT(old_text.length(), arraysize(kInlineAutocompleteText) - 1); |
| 591 | 625 |
| 592 size_t old_selected_line = popup_model->selected_line(); | 626 size_t old_selected_line = popup_model->selected_line(); |
| 593 EXPECT_EQ(0U, old_selected_line); | 627 EXPECT_EQ(0U, old_selected_line); |
| 594 | 628 |
| 595 // Move to another line with different text. | 629 // Move to another line with different text. |
| 596 size_t size = popup_model->result().size(); | 630 size_t size = popup_model->result().size(); |
| 597 while (popup_model->selected_line() < size - 1) { | 631 while (popup_model->selected_line() < size - 1) { |
| 598 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, false, false, false)); | 632 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, 0)); |
| 599 ASSERT_NE(old_selected_line, popup_model->selected_line()); | 633 ASSERT_NE(old_selected_line, popup_model->selected_line()); |
| 600 if (old_text != edit_view->GetText()) | 634 if (old_text != edit_view->GetText()) |
| 601 break; | 635 break; |
| 602 } | 636 } |
| 603 | 637 |
| 604 EXPECT_NE(old_text, edit_view->GetText()); | 638 EXPECT_NE(old_text, edit_view->GetText()); |
| 605 | 639 |
| 606 // Escape shall revert back to the default match item. | 640 // Escape shall revert back to the default match item. |
| 607 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); | 641 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, 0)); |
| 608 EXPECT_EQ(old_text, edit_view->GetText()); | 642 EXPECT_EQ(old_text, edit_view->GetText()); |
| 609 EXPECT_EQ(old_selected_line, popup_model->selected_line()); | 643 EXPECT_EQ(old_selected_line, popup_model->selected_line()); |
| 610 } | 644 } |
| 611 | 645 |
| 612 void BasicTextOperationsTest() { | 646 void BasicTextOperationsTest() { |
| 613 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); | 647 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
| 614 browser()->FocusLocationBar(); | 648 browser()->FocusLocationBar(); |
| 615 | 649 |
| 616 AutocompleteEditView* edit_view = NULL; | 650 AutocompleteEditView* edit_view = NULL; |
| 617 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 651 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 618 | 652 |
| 619 string16 old_text = edit_view->GetText(); | 653 string16 old_text = edit_view->GetText(); |
| 620 EXPECT_EQ(UTF8ToUTF16(chrome::kAboutBlankURL), old_text); | 654 EXPECT_EQ(UTF8ToUTF16(chrome::kAboutBlankURL), old_text); |
| 621 EXPECT_TRUE(edit_view->IsSelectAll()); | 655 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 622 | 656 |
| 623 string16::size_type start, end; | 657 string16::size_type start, end; |
| 624 edit_view->GetSelectionBounds(&start, &end); | 658 edit_view->GetSelectionBounds(&start, &end); |
| 625 EXPECT_EQ(0U, start); | 659 EXPECT_EQ(0U, start); |
| 626 EXPECT_EQ(old_text.size(), end); | 660 EXPECT_EQ(old_text.size(), end); |
| 627 | 661 |
| 628 // Move the cursor to the end. | 662 // Move the cursor to the end. |
| 629 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); | 663 #if defined(OS_MACOSX) |
| 664 // End doesn't work on Mac trybot. |
| 665 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_E, ui::EF_CONTROL_DOWN)); |
| 666 #else |
| 667 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, 0)); |
| 668 #endif |
| 630 EXPECT_FALSE(edit_view->IsSelectAll()); | 669 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 631 | 670 |
| 632 // Make sure the cursor is placed correctly. | 671 // Make sure the cursor is placed correctly. |
| 633 edit_view->GetSelectionBounds(&start, &end); | 672 edit_view->GetSelectionBounds(&start, &end); |
| 634 EXPECT_EQ(old_text.size(), start); | 673 EXPECT_EQ(old_text.size(), start); |
| 635 EXPECT_EQ(old_text.size(), end); | 674 EXPECT_EQ(old_text.size(), end); |
| 636 | 675 |
| 637 // Insert one character at the end. Make sure we won't insert | 676 // Insert one character at the end. Make sure we won't insert |
| 638 // anything after the special ZWS mark used in gtk implementation. | 677 // anything after the special ZWS mark used in gtk implementation. |
| 639 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, false, false, false)); | 678 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, 0)); |
| 640 EXPECT_EQ(old_text + char16('a'), edit_view->GetText()); | 679 EXPECT_EQ(old_text + char16('a'), edit_view->GetText()); |
| 641 | 680 |
| 642 // Delete one character from the end. Make sure we won't delete the special | 681 // Delete one character from the end. Make sure we won't delete the special |
| 643 // ZWS mark used in gtk implementation. | 682 // ZWS mark used in gtk implementation. |
| 644 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 683 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 645 EXPECT_EQ(old_text, edit_view->GetText()); | 684 EXPECT_EQ(old_text, edit_view->GetText()); |
| 646 | 685 |
| 647 edit_view->SelectAll(true); | 686 edit_view->SelectAll(true); |
| 648 EXPECT_TRUE(edit_view->IsSelectAll()); | 687 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 649 edit_view->GetSelectionBounds(&start, &end); | 688 edit_view->GetSelectionBounds(&start, &end); |
| 650 EXPECT_EQ(0U, start); | 689 EXPECT_EQ(0U, start); |
| 651 EXPECT_EQ(old_text.size(), end); | 690 EXPECT_EQ(old_text.size(), end); |
| 652 | 691 |
| 653 // Delete the content | 692 // Delete the content |
| 654 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, false, false, false)); | 693 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, 0)); |
| 655 EXPECT_TRUE(edit_view->IsSelectAll()); | 694 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 656 edit_view->GetSelectionBounds(&start, &end); | 695 edit_view->GetSelectionBounds(&start, &end); |
| 657 EXPECT_EQ(0U, start); | 696 EXPECT_EQ(0U, start); |
| 658 EXPECT_EQ(0U, end); | 697 EXPECT_EQ(0U, end); |
| 659 EXPECT_TRUE(edit_view->GetText().empty()); | 698 EXPECT_TRUE(edit_view->GetText().empty()); |
| 660 | 699 |
| 661 // Check if RevertAll() can set text and cursor correctly. | 700 // Check if RevertAll() can set text and cursor correctly. |
| 662 edit_view->RevertAll(); | 701 edit_view->RevertAll(); |
| 663 EXPECT_FALSE(edit_view->IsSelectAll()); | 702 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 664 EXPECT_EQ(old_text, edit_view->GetText()); | 703 EXPECT_EQ(old_text, edit_view->GetText()); |
| 665 edit_view->GetSelectionBounds(&start, &end); | 704 edit_view->GetSelectionBounds(&start, &end); |
| 666 EXPECT_EQ(old_text.size(), start); | 705 EXPECT_EQ(old_text.size(), start); |
| 667 EXPECT_EQ(old_text.size(), end); | 706 EXPECT_EQ(old_text.size(), end); |
| 668 } | 707 } |
| 669 | 708 |
| 670 void AcceptKeywordBySpaceTest() { | 709 void AcceptKeywordBySpaceTest() { |
| 671 AutocompleteEditView* edit_view = NULL; | 710 AutocompleteEditView* edit_view = NULL; |
| 672 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 711 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 673 | 712 |
| 674 string16 text = UTF8ToUTF16(kSearchKeyword); | 713 string16 text = UTF8ToUTF16(kSearchKeyword); |
| 675 | 714 |
| 676 // Trigger keyword hint mode. | 715 // Trigger keyword hint mode. |
| 677 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); | 716 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| 678 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 717 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 679 ASSERT_EQ(text, edit_view->model()->keyword()); | 718 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 680 ASSERT_EQ(text, edit_view->GetText()); | 719 ASSERT_EQ(text, edit_view->GetText()); |
| 681 | 720 |
| 682 // Trigger keyword mode by space. | 721 // Trigger keyword mode by space. |
| 683 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); | 722 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| 684 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 723 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 685 ASSERT_EQ(text, edit_view->model()->keyword()); | 724 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 686 ASSERT_TRUE(edit_view->GetText().empty()); | 725 ASSERT_TRUE(edit_view->GetText().empty()); |
| 687 | 726 |
| 688 // Revert to keyword hint mode. | 727 // Revert to keyword hint mode. |
| 689 edit_view->model()->ClearKeyword(string16()); | 728 edit_view->model()->ClearKeyword(string16()); |
| 690 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 729 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 691 ASSERT_EQ(text, edit_view->model()->keyword()); | 730 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 692 ASSERT_EQ(text, edit_view->GetText()); | 731 ASSERT_EQ(text, edit_view->GetText()); |
| 693 | 732 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 712 edit_view->model()->on_paste(); | 751 edit_view->model()->on_paste(); |
| 713 edit_view->SetWindowTextAndCaretPos(text + char16(' '), text.length() + 1); | 752 edit_view->SetWindowTextAndCaretPos(text + char16(' '), text.length() + 1); |
| 714 edit_view->OnAfterPossibleChange(); | 753 edit_view->OnAfterPossibleChange(); |
| 715 // Should be still in keyword hint mode. | 754 // Should be still in keyword hint mode. |
| 716 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 755 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 717 ASSERT_EQ(text, edit_view->model()->keyword()); | 756 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 718 ASSERT_EQ(text + char16(' '), edit_view->GetText()); | 757 ASSERT_EQ(text + char16(' '), edit_view->GetText()); |
| 719 | 758 |
| 720 // Keyword shouldn't be accepted by pressing space with a trailing | 759 // Keyword shouldn't be accepted by pressing space with a trailing |
| 721 // whitespace. | 760 // whitespace. |
| 722 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); | 761 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| 723 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 762 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 724 ASSERT_EQ(text, edit_view->model()->keyword()); | 763 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 725 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); | 764 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); |
| 726 | 765 |
| 727 // Keyword shouldn't be accepted by deleting the trailing space. | 766 // Keyword shouldn't be accepted by deleting the trailing space. |
| 728 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 767 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 729 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 768 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 730 ASSERT_EQ(text, edit_view->model()->keyword()); | 769 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 731 ASSERT_EQ(text + char16(' '), edit_view->GetText()); | 770 ASSERT_EQ(text + char16(' '), edit_view->GetText()); |
| 732 | 771 |
| 733 // Keyword shouldn't be accepted by pressing space in the middle | 772 // Keyword shouldn't be accepted by pressing space in the middle |
| 734 // of content. | 773 // of content. |
| 735 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, false, false, false)); | 774 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, 0)); |
| 736 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); | 775 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| 737 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 776 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 738 ASSERT_EQ(text, edit_view->model()->keyword()); | 777 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 739 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); | 778 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); |
| 740 | 779 |
| 741 // Keyword shouldn't be accepted by pasting "foo bar". | 780 // Keyword shouldn't be accepted by pasting "foo bar". |
| 742 edit_view->SetUserText(string16()); | 781 edit_view->SetUserText(string16()); |
| 743 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 782 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 744 ASSERT_TRUE(edit_view->model()->keyword().empty()); | 783 ASSERT_TRUE(edit_view->model()->keyword().empty()); |
| 745 | 784 |
| 746 edit_view->OnBeforePossibleChange(); | 785 edit_view->OnBeforePossibleChange(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 758 edit_view->OnInlineAutocompleteTextMaybeChanged( | 797 edit_view->OnInlineAutocompleteTextMaybeChanged( |
| 759 text + ASCIIToUTF16(" "), text.length()); | 798 text + ASCIIToUTF16(" "), text.length()); |
| 760 edit_view->OnAfterPossibleChange(); | 799 edit_view->OnAfterPossibleChange(); |
| 761 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 800 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 762 ASSERT_EQ(text, edit_view->model()->keyword()); | 801 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 763 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); | 802 ASSERT_EQ(text + ASCIIToUTF16(" "), edit_view->GetText()); |
| 764 | 803 |
| 765 string16::size_type start, end; | 804 string16::size_type start, end; |
| 766 edit_view->GetSelectionBounds(&start, &end); | 805 edit_view->GetSelectionBounds(&start, &end); |
| 767 ASSERT_NE(start, end); | 806 ASSERT_NE(start, end); |
| 768 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); | 807 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| 769 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 808 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 770 ASSERT_EQ(text, edit_view->model()->keyword()); | 809 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 771 ASSERT_EQ(string16(), edit_view->GetText()); | 810 ASSERT_EQ(string16(), edit_view->GetText()); |
| 772 | 811 |
| 773 edit_view->SetUserText(string16()); | 812 edit_view->SetUserText(string16()); |
| 774 | 813 |
| 775 // Space should accept keyword even when inline autocomplete is available. | 814 // Space should accept keyword even when inline autocomplete is available. |
| 776 const TestHistoryEntry kHistoryFoobar = { | 815 const TestHistoryEntry kHistoryFoobar = { |
| 777 "http://www.foobar.com", "Page foobar", kSearchText, 10000, 10000, true | 816 "http://www.foobar.com", "Page foobar", kSearchText, 10000, 10000, true |
| 778 }; | 817 }; |
| 779 | 818 |
| 780 // Add a history entry to trigger inline autocomplete when typing "foo". | 819 // Add a history entry to trigger inline autocomplete when typing "foo". |
| 781 ASSERT_NO_FATAL_FAILURE( | 820 ASSERT_NO_FATAL_FAILURE( |
| 782 AddHistoryEntry(kHistoryFoobar, Time::Now() - TimeDelta::FromHours(1))); | 821 AddHistoryEntry(kHistoryFoobar, Time::Now() - TimeDelta::FromHours(1))); |
| 783 | 822 |
| 784 // Type "foo" to trigger inline autocomplete. | 823 // Type "foo" to trigger inline autocomplete. |
| 785 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); | 824 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| 786 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 825 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 787 ASSERT_TRUE(edit_view->model()->popup_model()->IsOpen()); | 826 ASSERT_TRUE(edit_view->model()->popup_model()->IsOpen()); |
| 788 ASSERT_NE(text, edit_view->GetText()); | 827 ASSERT_NE(text, edit_view->GetText()); |
| 789 | 828 |
| 790 // Keyword hint shouldn't be visible. | 829 // Keyword hint shouldn't be visible. |
| 791 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 830 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 792 ASSERT_TRUE(edit_view->model()->keyword().empty()); | 831 ASSERT_TRUE(edit_view->model()->keyword().empty()); |
| 793 | 832 |
| 794 // Trigger keyword mode by space. | 833 // Trigger keyword mode by space. |
| 795 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); | 834 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| 796 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 835 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 797 ASSERT_EQ(text, edit_view->model()->keyword()); | 836 ASSERT_EQ(text, edit_view->model()->keyword()); |
| 798 ASSERT_TRUE(edit_view->GetText().empty()); | 837 ASSERT_TRUE(edit_view->GetText().empty()); |
| 799 } | 838 } |
| 800 | 839 |
| 801 void NonSubstitutingKeywordTest() { | 840 void NonSubstitutingKeywordTest() { |
| 802 AutocompleteEditView* edit_view = NULL; | 841 AutocompleteEditView* edit_view = NULL; |
| 803 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 842 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 804 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | 843 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 805 ASSERT_TRUE(popup_model); | 844 ASSERT_TRUE(popup_model); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 ASSERT_TRUE(popup_model); | 904 ASSERT_TRUE(popup_model); |
| 866 | 905 |
| 867 string16 old_text = edit_view->GetText(); | 906 string16 old_text = edit_view->GetText(); |
| 868 | 907 |
| 869 // Input something that can match history items. | 908 // Input something that can match history items. |
| 870 edit_view->SetUserText(ASCIIToUTF16("bar")); | 909 edit_view->SetUserText(ASCIIToUTF16("bar")); |
| 871 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 910 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 872 ASSERT_TRUE(popup_model->IsOpen()); | 911 ASSERT_TRUE(popup_model->IsOpen()); |
| 873 | 912 |
| 874 // Delete the inline autocomplete part. | 913 // Delete the inline autocomplete part. |
| 875 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, false, false, false)); | 914 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, 0)); |
| 876 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 915 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 877 ASSERT_TRUE(popup_model->IsOpen()); | 916 ASSERT_TRUE(popup_model->IsOpen()); |
| 878 ASSERT_GE(popup_model->result().size(), 3U); | 917 ASSERT_GE(popup_model->result().size(), 3U); |
| 879 | 918 |
| 880 string16 user_text = edit_view->GetText(); | 919 string16 user_text = edit_view->GetText(); |
| 881 ASSERT_EQ(ASCIIToUTF16("bar"), user_text); | 920 ASSERT_EQ(ASCIIToUTF16("bar"), user_text); |
| 882 edit_view->SelectAll(true); | 921 edit_view->SelectAll(true); |
| 883 ASSERT_TRUE(edit_view->IsSelectAll()); | 922 ASSERT_TRUE(edit_view->IsSelectAll()); |
| 884 | 923 |
| 885 // The first item should be the default match. | 924 // The first item should be the default match. |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 948 ASSERT_TRUE(edit_view->IsSelectAll()); | 987 ASSERT_TRUE(edit_view->IsSelectAll()); |
| 949 } | 988 } |
| 950 | 989 |
| 951 void TabMoveCursorToEndTest() { | 990 void TabMoveCursorToEndTest() { |
| 952 AutocompleteEditView* edit_view = NULL; | 991 AutocompleteEditView* edit_view = NULL; |
| 953 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 992 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 954 | 993 |
| 955 edit_view->SetUserText(ASCIIToUTF16("Hello world")); | 994 edit_view->SetUserText(ASCIIToUTF16("Hello world")); |
| 956 | 995 |
| 957 // Move cursor to the beginning. | 996 // Move cursor to the beginning. |
| 958 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, false, false, false)); | 997 #if defined(OS_MACOSX) |
| 998 // Home doesn't work on Mac trybot. |
| 999 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, ui::EF_CONTROL_DOWN)); |
| 1000 #else |
| 1001 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, 0)); |
| 1002 #endif |
| 959 | 1003 |
| 960 string16::size_type start, end; | 1004 string16::size_type start, end; |
| 961 edit_view->GetSelectionBounds(&start, &end); | 1005 edit_view->GetSelectionBounds(&start, &end); |
| 962 EXPECT_EQ(0U, start); | 1006 EXPECT_EQ(0U, start); |
| 963 EXPECT_EQ(0U, end); | 1007 EXPECT_EQ(0U, end); |
| 964 | 1008 |
| 965 // Pressing tab should move cursor to the end. | 1009 // Pressing tab should move cursor to the end. |
| 966 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 1010 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 967 | 1011 |
| 968 edit_view->GetSelectionBounds(&start, &end); | 1012 edit_view->GetSelectionBounds(&start, &end); |
| 969 EXPECT_EQ(edit_view->GetText().size(), start); | 1013 EXPECT_EQ(edit_view->GetText().size(), start); |
| 970 EXPECT_EQ(edit_view->GetText().size(), end); | 1014 EXPECT_EQ(edit_view->GetText().size(), end); |
| 971 | 1015 |
| 972 // The location bar should still have focus. | 1016 // The location bar should still have focus. |
| 973 ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); | 1017 ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); |
| 974 | 1018 |
| 975 // Select all text. | 1019 // Select all text. |
| 976 edit_view->SelectAll(true); | 1020 edit_view->SelectAll(true); |
| 977 EXPECT_TRUE(edit_view->IsSelectAll()); | 1021 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 978 edit_view->GetSelectionBounds(&start, &end); | 1022 edit_view->GetSelectionBounds(&start, &end); |
| 979 EXPECT_EQ(0U, start); | 1023 EXPECT_EQ(0U, start); |
| 980 EXPECT_EQ(edit_view->GetText().size(), end); | 1024 EXPECT_EQ(edit_view->GetText().size(), end); |
| 981 | 1025 |
| 982 // Pressing tab should move cursor to the end. | 1026 // Pressing tab should move cursor to the end. |
| 983 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 1027 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 984 | 1028 |
| 985 edit_view->GetSelectionBounds(&start, &end); | 1029 edit_view->GetSelectionBounds(&start, &end); |
| 986 EXPECT_EQ(edit_view->GetText().size(), start); | 1030 EXPECT_EQ(edit_view->GetText().size(), start); |
| 987 EXPECT_EQ(edit_view->GetText().size(), end); | 1031 EXPECT_EQ(edit_view->GetText().size(), end); |
| 988 | 1032 |
| 989 // The location bar should still have focus. | 1033 // The location bar should still have focus. |
| 990 ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); | 1034 ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); |
| 991 | 1035 |
| 992 // Pressing tab when cursor is at the end should change focus. | 1036 // Pressing tab when cursor is at the end should change focus. |
| 993 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 1037 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 994 | 1038 |
| 995 ASSERT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); | 1039 ASSERT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); |
| 996 } | 1040 } |
| 997 | 1041 |
| 998 void PersistKeywordModeOnTabSwitch() { | 1042 void PersistKeywordModeOnTabSwitch() { |
| 999 AutocompleteEditView* edit_view = NULL; | 1043 AutocompleteEditView* edit_view = NULL; |
| 1000 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 1044 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 1001 | 1045 |
| 1002 // Trigger keyword hint mode. | 1046 // Trigger keyword hint mode. |
| 1003 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); | 1047 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| 1004 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | 1048 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 1005 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 1049 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 1006 | 1050 |
| 1007 // Trigger keyword mode. | 1051 // Trigger keyword mode. |
| 1008 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | 1052 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| 1009 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | 1053 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 1010 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); | 1054 ASSERT_EQ(kSearchKeyword, UTF16ToUTF8(edit_view->model()->keyword())); |
| 1011 | 1055 |
| 1012 // Input something as search text. | 1056 // Input something as search text. |
| 1013 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | 1057 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 1014 | 1058 |
| 1015 // Create a new tab. | 1059 // Create a new tab. |
| 1016 browser()->NewTab(); | 1060 browser()->NewTab(); |
| 1017 | 1061 |
| 1018 // Switch back to the first tab. | 1062 // Switch back to the first tab. |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 browser()->FocusLocationBar(); | 1173 browser()->FocusLocationBar(); |
| 1130 | 1174 |
| 1131 AutocompleteEditView* edit_view = NULL; | 1175 AutocompleteEditView* edit_view = NULL; |
| 1132 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 1176 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 1133 | 1177 |
| 1134 string16 old_text = edit_view->GetText(); | 1178 string16 old_text = edit_view->GetText(); |
| 1135 EXPECT_EQ(UTF8ToUTF16(chrome::kAboutBlankURL), old_text); | 1179 EXPECT_EQ(UTF8ToUTF16(chrome::kAboutBlankURL), old_text); |
| 1136 EXPECT_TRUE(edit_view->IsSelectAll()); | 1180 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 1137 | 1181 |
| 1138 // Undo should clear the omnibox. | 1182 // Undo should clear the omnibox. |
| 1139 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1183 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1140 EXPECT_TRUE(edit_view->GetText().empty()); | 1184 EXPECT_TRUE(edit_view->GetText().empty()); |
| 1141 | 1185 |
| 1142 // Nothing should happen if undo again. | 1186 // Nothing should happen if undo again. |
| 1143 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1187 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1144 EXPECT_TRUE(edit_view->GetText().empty()); | 1188 EXPECT_TRUE(edit_view->GetText().empty()); |
| 1145 | 1189 |
| 1146 // Redo should restore the original text. | 1190 // Redo should restore the original text. |
| 1147 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, true, false)); | 1191 ASSERT_NO_FATAL_FAILURE( |
| 1192 SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN)); |
| 1148 EXPECT_EQ(old_text, edit_view->GetText()); | 1193 EXPECT_EQ(old_text, edit_view->GetText()); |
| 1149 | 1194 |
| 1150 // Looks like the undo manager doesn't support restoring selection. | 1195 // Looks like the undo manager doesn't support restoring selection. |
| 1151 EXPECT_FALSE(edit_view->IsSelectAll()); | 1196 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 1152 | 1197 |
| 1153 // The cursor should be at the end. | 1198 // The cursor should be at the end. |
| 1154 string16::size_type start, end; | 1199 string16::size_type start, end; |
| 1155 edit_view->GetSelectionBounds(&start, &end); | 1200 edit_view->GetSelectionBounds(&start, &end); |
| 1156 EXPECT_EQ(old_text.size(), start); | 1201 EXPECT_EQ(old_text.size(), start); |
| 1157 EXPECT_EQ(old_text.size(), end); | 1202 EXPECT_EQ(old_text.size(), end); |
| 1158 | 1203 |
| 1159 // Delete two characters. | 1204 // Delete two characters. |
| 1160 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 1205 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 1161 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 1206 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 1162 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); | 1207 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); |
| 1163 | 1208 |
| 1164 // Undo delete. | 1209 // Undo delete. |
| 1165 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1210 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1166 EXPECT_EQ(old_text, edit_view->GetText()); | 1211 EXPECT_EQ(old_text, edit_view->GetText()); |
| 1167 | 1212 |
| 1168 // Redo delete. | 1213 // Redo delete. |
| 1169 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, true, false)); | 1214 ASSERT_NO_FATAL_FAILURE( |
| 1215 SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN)); |
| 1170 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); | 1216 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); |
| 1171 | 1217 |
| 1172 // Delete everything. | 1218 // Delete everything. |
| 1173 edit_view->SelectAll(true); | 1219 edit_view->SelectAll(true); |
| 1174 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 1220 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 1175 EXPECT_TRUE(edit_view->GetText().empty()); | 1221 EXPECT_TRUE(edit_view->GetText().empty()); |
| 1176 | 1222 |
| 1177 // Undo delete everything. | 1223 // Undo delete everything. |
| 1178 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1224 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1179 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); | 1225 EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText()); |
| 1180 | 1226 |
| 1181 // Undo delete two characters. | 1227 // Undo delete two characters. |
| 1182 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1228 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1183 EXPECT_EQ(old_text, edit_view->GetText()); | 1229 EXPECT_EQ(old_text, edit_view->GetText()); |
| 1184 | 1230 |
| 1185 // Undo again. | 1231 // Undo again. |
| 1186 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, true, false, false)); | 1232 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_Z, ui::EF_CONTROL_DOWN)); |
| 1187 EXPECT_TRUE(edit_view->GetText().empty()); | 1233 EXPECT_TRUE(edit_view->GetText().empty()); |
| 1188 } | 1234 } |
| 1189 | 1235 |
| 1190 // See http://crbug.com/63860 | 1236 // See http://crbug.com/63860 |
| 1191 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PrimarySelection) { | 1237 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PrimarySelection) { |
| 1192 AutocompleteEditView* edit_view = NULL; | 1238 AutocompleteEditView* edit_view = NULL; |
| 1193 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 1239 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 1194 edit_view->SetUserText(ASCIIToUTF16("Hello world")); | 1240 edit_view->SetUserText(ASCIIToUTF16("Hello world")); |
| 1195 EXPECT_FALSE(edit_view->IsSelectAll()); | 1241 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 1196 | 1242 |
| 1197 // Move the cursor to the end. | 1243 // Move the cursor to the end. |
| 1198 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); | 1244 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, 0)); |
| 1199 | 1245 |
| 1200 // Select all text by pressing Shift+Home | 1246 // Select all text by pressing Shift+Home |
| 1201 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, false, true, false)); | 1247 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, ui::EF_SHIFT_DOWN)); |
| 1202 EXPECT_TRUE(edit_view->IsSelectAll()); | 1248 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 1203 | 1249 |
| 1204 // The selected content should be saved to the PRIMARY clipboard. | 1250 // The selected content should be saved to the PRIMARY clipboard. |
| 1205 EXPECT_EQ("Hello world", GetPrimarySelectionText()); | 1251 EXPECT_EQ("Hello world", GetPrimarySelectionText()); |
| 1206 | 1252 |
| 1207 // Move the cursor to the end. | 1253 // Move the cursor to the end. |
| 1208 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); | 1254 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, 0)); |
| 1209 EXPECT_FALSE(edit_view->IsSelectAll()); | 1255 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 1210 | 1256 |
| 1211 // The content in the PRIMARY clipboard should not be cleared. | 1257 // The content in the PRIMARY clipboard should not be cleared. |
| 1212 EXPECT_EQ("Hello world", GetPrimarySelectionText()); | 1258 EXPECT_EQ("Hello world", GetPrimarySelectionText()); |
| 1213 } | 1259 } |
| 1214 | 1260 |
| 1215 // See http://crosbug.com/10306 | 1261 // See http://crosbug.com/10306 |
| 1216 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, | 1262 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, |
| 1217 BackspaceDeleteHalfWidthKatakana) { | 1263 BackspaceDeleteHalfWidthKatakana) { |
| 1218 AutocompleteEditView* edit_view = NULL; | 1264 AutocompleteEditView* edit_view = NULL; |
| 1219 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 1265 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 1220 // Insert text: ダ | 1266 // Insert text: ダ |
| 1221 edit_view->SetUserText(UTF8ToUTF16("\357\276\200\357\276\236")); | 1267 edit_view->SetUserText(UTF8ToUTF16("\357\276\200\357\276\236")); |
| 1222 | 1268 |
| 1223 // Move the cursor to the end. | 1269 // Move the cursor to the end. |
| 1224 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); | 1270 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, 0)); |
| 1225 | 1271 |
| 1226 // Backspace should delete one character. | 1272 // Backspace should delete one character. |
| 1227 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | 1273 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| 1228 EXPECT_EQ(UTF8ToUTF16("\357\276\200"), edit_view->GetText()); | 1274 EXPECT_EQ(UTF8ToUTF16("\357\276\200"), edit_view->GetText()); |
| 1229 } | 1275 } |
| 1230 | 1276 |
| 1231 // http://crbug.com/12316 | 1277 // http://crbug.com/12316 |
| 1232 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PasteReplacingAll) { | 1278 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PasteReplacingAll) { |
| 1233 AutocompleteEditView* edit_view = NULL; | 1279 AutocompleteEditView* edit_view = NULL; |
| 1234 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 1280 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 1235 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | 1281 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 1236 ASSERT_TRUE(popup_model); | 1282 ASSERT_TRUE(popup_model); |
| 1237 | 1283 |
| 1238 SetClipboardText(kSearchText); | 1284 SetClipboardText(kSearchText); |
| 1239 | 1285 |
| 1240 // Paste text. | 1286 // Paste text. |
| 1241 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, true, false, false)); | 1287 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, ui::EF_CONTROL_DOWN)); |
| 1242 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 1288 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 1243 ASSERT_TRUE(popup_model->IsOpen()); | 1289 ASSERT_TRUE(popup_model->IsOpen()); |
| 1244 | 1290 |
| 1245 // Inline autocomplete shouldn't be triggered. | 1291 // Inline autocomplete shouldn't be triggered. |
| 1246 ASSERT_EQ(ASCIIToUTF16("abc"), edit_view->GetText()); | 1292 ASSERT_EQ(ASCIIToUTF16("abc"), edit_view->GetText()); |
| 1247 } | 1293 } |
| 1248 #endif | 1294 #endif |
| 1249 | 1295 |
| 1250 #if defined(TOOLKIT_VIEWS) | 1296 #if defined(TOOLKIT_VIEWS) |
| 1251 class AutocompleteEditViewViewsTest : public AutocompleteEditViewTest { | 1297 class AutocompleteEditViewViewsTest : public AutocompleteEditViewTest { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1316 PersistKeywordModeOnTabSwitch) { | 1362 PersistKeywordModeOnTabSwitch) { |
| 1317 PersistKeywordModeOnTabSwitch(); | 1363 PersistKeywordModeOnTabSwitch(); |
| 1318 } | 1364 } |
| 1319 | 1365 |
| 1320 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, | 1366 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, |
| 1321 CtrlKeyPressedWithInlineAutocompleteTest) { | 1367 CtrlKeyPressedWithInlineAutocompleteTest) { |
| 1322 CtrlKeyPressedWithInlineAutocompleteTest(); | 1368 CtrlKeyPressedWithInlineAutocompleteTest(); |
| 1323 } | 1369 } |
| 1324 | 1370 |
| 1325 #endif | 1371 #endif |
| OLD | NEW |