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