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 20 matching lines...) Expand all Loading... |
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/event.h" | 34 #include "views/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) |
| 42 #include "views/controls/textfield/native_textfield_views.h" |
| 43 #endif |
| 44 |
41 using base::Time; | 45 using base::Time; |
42 using base::TimeDelta; | 46 using base::TimeDelta; |
43 | 47 |
44 namespace { | 48 namespace { |
45 | 49 |
46 const char kSearchKeyword[] = "foo"; | 50 const char kSearchKeyword[] = "foo"; |
47 const wchar_t kSearchKeywordKeys[] = { | 51 const wchar_t kSearchKeywordKeys[] = { |
48 ui::VKEY_F, ui::VKEY_O, ui::VKEY_O, 0 | 52 ui::VKEY_F, ui::VKEY_O, ui::VKEY_O, 0 |
49 }; | 53 }; |
50 const char kSearchURL[] = "http://www.foo.com/search?q={searchTerms}"; | 54 const char kSearchURL[] = "http://www.foo.com/search?q={searchTerms}"; |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 case NotificationType::TEMPLATE_URL_MODEL_LOADED: | 297 case NotificationType::TEMPLATE_URL_MODEL_LOADED: |
294 case NotificationType::AUTOCOMPLETE_CONTROLLER_RESULT_UPDATED: | 298 case NotificationType::AUTOCOMPLETE_CONTROLLER_RESULT_UPDATED: |
295 case NotificationType::HISTORY_LOADED: | 299 case NotificationType::HISTORY_LOADED: |
296 case NotificationType::BOOKMARK_MODEL_LOADED: | 300 case NotificationType::BOOKMARK_MODEL_LOADED: |
297 break; | 301 break; |
298 default: | 302 default: |
299 FAIL() << "Unexpected notification type"; | 303 FAIL() << "Unexpected notification type"; |
300 } | 304 } |
301 MessageLoopForUI::current()->Quit(); | 305 MessageLoopForUI::current()->Quit(); |
302 } | 306 } |
| 307 |
| 308 // Actual Test methods |
| 309 void BrowserAcceleratorsTest() { |
| 310 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 311 |
| 312 browser()->FocusLocationBar(); |
| 313 AutocompleteEditView* edit_view = NULL; |
| 314 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 315 |
| 316 int tab_count = browser()->tab_count(); |
| 317 |
| 318 // Create a new Tab. |
| 319 browser()->NewTab(); |
| 320 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); |
| 321 |
| 322 // Select the first Tab. |
| 323 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_1, true, false, false)); |
| 324 ASSERT_EQ(0, browser()->selected_index()); |
| 325 |
| 326 browser()->FocusLocationBar(); |
| 327 |
| 328 // Select the second Tab. |
| 329 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_2, true, false, false)); |
| 330 ASSERT_EQ(1, browser()->selected_index()); |
| 331 |
| 332 browser()->FocusLocationBar(); |
| 333 |
| 334 // Try ctrl-w to close a Tab. |
| 335 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_W, true, false, false)); |
| 336 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count)); |
| 337 |
| 338 // Try ctrl-l to focus location bar. |
| 339 edit_view->SetUserText(L"Hello world"); |
| 340 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 341 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_L, true, false, false)); |
| 342 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 343 |
| 344 // Try editing the location bar text. |
| 345 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RIGHT, false, false, false)); |
| 346 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 347 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_S, false, false, false)); |
| 348 EXPECT_EQ(L"Hello worlds", edit_view->GetText()); |
| 349 |
| 350 // Try ctrl-x to cut text. |
| 351 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, true, true, false)); |
| 352 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 353 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_X, true, false, false)); |
| 354 EXPECT_EQ(L"Hello ", edit_view->GetText()); |
| 355 |
| 356 #if !defined(OS_CHROMEOS) |
| 357 // Try alt-f4 to close the browser. |
| 358 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| 359 browser(), ui::VKEY_F4, false, false, true, false, |
| 360 NotificationType::BROWSER_CLOSED, Source<Browser>(browser()))); |
| 361 #endif |
| 362 } |
| 363 |
| 364 void PopupAcceleratorsTest() { |
| 365 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 366 |
| 367 // Create a popup. |
| 368 Browser* popup = CreateBrowserForPopup(browser()->profile()); |
| 369 AutocompleteEditView* edit_view = NULL; |
| 370 ASSERT_NO_FATAL_FAILURE( |
| 371 GetAutocompleteEditViewForBrowser(popup, &edit_view)); |
| 372 popup->FocusLocationBar(); |
| 373 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 374 |
| 375 // Try ctrl-w to close the popup. |
| 376 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| 377 popup, ui::VKEY_W, true, false, false, false, |
| 378 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); |
| 379 |
| 380 // Create another popup. |
| 381 popup = CreateBrowserForPopup(browser()->profile()); |
| 382 ASSERT_NO_FATAL_FAILURE( |
| 383 GetAutocompleteEditViewForBrowser(popup, &edit_view)); |
| 384 |
| 385 // Set the edit text to "Hello world". |
| 386 edit_view->SetUserText(L"Hello world"); |
| 387 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 388 popup->FocusLocationBar(); |
| 389 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 390 |
| 391 // Try editing the location bar text -- should be disallowed. |
| 392 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_RIGHT, false, |
| 393 false, false)); |
| 394 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 395 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_S, false, false, |
| 396 false)); |
| 397 EXPECT_EQ(L"Hello world", edit_view->GetText()); |
| 398 |
| 399 // Try ctrl-x to cut text -- should be disallowed. |
| 400 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_LEFT, true, true, |
| 401 false)); |
| 402 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 403 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_X, true, false, |
| 404 false)); |
| 405 EXPECT_EQ(L"Hello world", edit_view->GetText()); |
| 406 |
| 407 #if !defined(OS_CHROMEOS) |
| 408 // Try alt-f4 to close the popup. |
| 409 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| 410 popup, ui::VKEY_F4, false, false, true, false, |
| 411 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); |
| 412 #endif |
| 413 } |
| 414 |
| 415 void BackspaceInKeywordModeTest() { |
| 416 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 417 |
| 418 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 419 browser()->FocusLocationBar(); |
| 420 |
| 421 AutocompleteEditView* edit_view = NULL; |
| 422 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 423 |
| 424 // Trigger keyword hint mode. |
| 425 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| 426 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 427 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); |
| 428 |
| 429 // Trigger keyword mode. |
| 430 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); |
| 431 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 432 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); |
| 433 |
| 434 // Backspace without search text should bring back keyword hint mode. |
| 435 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
| 436 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
| 437 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); |
| 438 |
| 439 // Trigger keyword mode again. |
| 440 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); |
| 441 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 442 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); |
| 443 |
| 444 // Input something as search text. |
| 445 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 446 |
| 447 // Should stay in keyword mode while deleting search text by pressing |
| 448 // backspace. |
| 449 for (size_t i = 0; i < arraysize(kSearchText) - 1; ++i) { |
| 450 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
| 451 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 452 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); |
| 453 } |
| 454 |
| 455 // Input something as search text. |
| 456 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 457 |
| 458 // Move cursor to the beginning of the search text. |
| 459 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, false, false, false)); |
| 460 // Backspace at the beginning of the search text shall turn off |
| 461 // the keyword mode. |
| 462 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
| 463 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
| 464 ASSERT_EQ(std::string(), WideToUTF8(edit_view->model()->keyword())); |
| 465 ASSERT_EQ(std::string(kSearchKeyword) + kSearchText, |
| 466 WideToUTF8(edit_view->GetText())); |
| 467 } |
| 468 |
| 469 void EscapeTest() { |
| 470 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 471 |
| 472 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 473 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIHistoryURL)); |
| 474 browser()->FocusLocationBar(); |
| 475 |
| 476 AutocompleteEditView* edit_view = NULL; |
| 477 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 478 |
| 479 std::wstring old_text = edit_view->GetText(); |
| 480 EXPECT_FALSE(old_text.empty()); |
| 481 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 482 |
| 483 // Delete all text in omnibox. |
| 484 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
| 485 EXPECT_TRUE(edit_view->GetText().empty()); |
| 486 |
| 487 // Escape shall revert the text in omnibox. |
| 488 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); |
| 489 EXPECT_EQ(old_text, edit_view->GetText()); |
| 490 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 491 } |
| 492 |
| 493 void DesiredTLDTest() { |
| 494 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 495 |
| 496 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 497 browser()->FocusLocationBar(); |
| 498 |
| 499 AutocompleteEditView* edit_view = NULL; |
| 500 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 501 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 502 ASSERT_TRUE(popup_model); |
| 503 |
| 504 // Test ctrl-Enter. |
| 505 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys)); |
| 506 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 507 ASSERT_TRUE(popup_model->IsOpen()); |
| 508 // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall |
| 509 // be opened. |
| 510 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, true, false, false)); |
| 511 |
| 512 GURL url = browser()->GetSelectedTabContents()->GetURL(); |
| 513 EXPECT_STREQ(kDesiredTLDHostname, url.host().c_str()); |
| 514 } |
| 515 |
| 516 void AltEnterTest() { |
| 517 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 518 |
| 519 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 520 browser()->FocusLocationBar(); |
| 521 |
| 522 AutocompleteEditView* edit_view = NULL; |
| 523 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 524 |
| 525 edit_view->SetUserText(ASCIIToWide(chrome::kChromeUIHistoryURL)); |
| 526 int tab_count = browser()->tab_count(); |
| 527 // alt-Enter opens a new tab. |
| 528 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, true)); |
| 529 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); |
| 530 } |
| 531 |
| 532 void EnterToSearchTest() { |
| 533 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 534 |
| 535 ASSERT_NO_FATAL_FAILURE(SetupHostResolver()); |
| 536 ASSERT_NO_FATAL_FAILURE(SetupSearchEngine()); |
| 537 browser()->FocusLocationBar(); |
| 538 |
| 539 AutocompleteEditView* edit_view = NULL; |
| 540 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 541 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 542 ASSERT_TRUE(popup_model); |
| 543 |
| 544 // Test Enter to search. |
| 545 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 546 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 547 ASSERT_TRUE(popup_model->IsOpen()); |
| 548 |
| 549 // Check if the default match result is Search Primary Provider. |
| 550 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, |
| 551 popup_model->result().default_match()->type); |
| 552 |
| 553 // Open the default match. |
| 554 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); |
| 555 GURL url = browser()->GetSelectedTabContents()->GetURL(); |
| 556 EXPECT_STREQ(kSearchTextURL, url.spec().c_str()); |
| 557 |
| 558 // Test that entering a single character then Enter performs a search. |
| 559 browser()->FocusLocationBar(); |
| 560 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 561 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchSingleCharKeys)); |
| 562 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 563 ASSERT_TRUE(popup_model->IsOpen()); |
| 564 EXPECT_EQ(kSearchSingleChar, WideToUTF8(edit_view->GetText())); |
| 565 |
| 566 // Check if the default match result is Search Primary Provider. |
| 567 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, |
| 568 popup_model->result().default_match()->type); |
| 569 |
| 570 // Open the default match. |
| 571 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); |
| 572 url = browser()->GetSelectedTabContents()->GetURL(); |
| 573 EXPECT_STREQ(kSearchSingleCharURL, url.spec().c_str()); |
| 574 } |
| 575 |
| 576 void EnterToOpenHistoryPageTest() { |
| 577 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 578 |
| 579 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 580 browser()->FocusLocationBar(); |
| 581 |
| 582 AutocompleteEditView* edit_view = NULL; |
| 583 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 584 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 585 ASSERT_TRUE(popup_model); |
| 586 |
| 587 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 588 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 589 ASSERT_TRUE(popup_model->IsOpen()); |
| 590 EXPECT_EQ(0U, popup_model->selected_line()); |
| 591 |
| 592 // Move to the history page item. |
| 593 size_t size = popup_model->result().size(); |
| 594 while (true) { |
| 595 if (popup_model->result().match_at(popup_model->selected_line()).type == |
| 596 AutocompleteMatch::OPEN_HISTORY_PAGE) |
| 597 break; |
| 598 size_t old_selected_line = popup_model->selected_line(); |
| 599 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, false, false, false)); |
| 600 ASSERT_EQ(old_selected_line + 1, popup_model->selected_line()); |
| 601 if (popup_model->selected_line() == size - 1) |
| 602 break; |
| 603 } |
| 604 |
| 605 // Make sure the history page item is selected. |
| 606 ASSERT_EQ( |
| 607 AutocompleteMatch::OPEN_HISTORY_PAGE, |
| 608 popup_model->result().match_at(popup_model->selected_line()).type); |
| 609 |
| 610 // Open the history page item. |
| 611 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); |
| 612 GURL url = browser()->GetSelectedTabContents()->GetURL(); |
| 613 EXPECT_STREQ(kHistoryPageURL, url.spec().c_str()); |
| 614 } |
| 615 |
| 616 void EscapeToDefaultMatchTest() { |
| 617 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 618 |
| 619 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 620 browser()->FocusLocationBar(); |
| 621 |
| 622 AutocompleteEditView* edit_view = NULL; |
| 623 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 624 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
| 625 ASSERT_TRUE(popup_model); |
| 626 |
| 627 // Input something to trigger inline autocomplete. |
| 628 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
| 629 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| 630 ASSERT_TRUE(popup_model->IsOpen()); |
| 631 |
| 632 std::wstring old_text = edit_view->GetText(); |
| 633 |
| 634 // Make sure inline autocomplete is triggerred. |
| 635 EXPECT_GT(old_text.length(), arraysize(kSearchText) - 1); |
| 636 |
| 637 size_t old_selected_line = popup_model->selected_line(); |
| 638 EXPECT_EQ(0U, old_selected_line); |
| 639 |
| 640 // Move to another line with different text. |
| 641 size_t size = popup_model->result().size(); |
| 642 while (popup_model->selected_line() < size - 1) { |
| 643 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, false, false, false)); |
| 644 ASSERT_NE(old_selected_line, popup_model->selected_line()); |
| 645 if (old_text != edit_view->GetText()) |
| 646 break; |
| 647 } |
| 648 |
| 649 EXPECT_NE(old_text, edit_view->GetText()); |
| 650 |
| 651 // Escape shall revert back to the default match item. |
| 652 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); |
| 653 EXPECT_EQ(old_text, edit_view->GetText()); |
| 654 EXPECT_EQ(old_selected_line, popup_model->selected_line()); |
| 655 } |
| 656 |
| 657 void BasicTextOperationsTest() { |
| 658 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 659 |
| 660 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
| 661 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
| 662 browser()->FocusLocationBar(); |
| 663 |
| 664 AutocompleteEditView* edit_view = NULL; |
| 665 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
| 666 |
| 667 std::wstring old_text = edit_view->GetText(); |
| 668 EXPECT_EQ(UTF8ToWide(chrome::kAboutBlankURL), old_text); |
| 669 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 670 |
| 671 std::wstring::size_type start, end; |
| 672 edit_view->GetSelectionBounds(&start, &end); |
| 673 EXPECT_EQ(0U, start); |
| 674 EXPECT_EQ(old_text.size(), end); |
| 675 |
| 676 // Move the cursor to the end. |
| 677 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); |
| 678 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 679 |
| 680 // Make sure the cursor is placed correctly. |
| 681 edit_view->GetSelectionBounds(&start, &end); |
| 682 EXPECT_EQ(old_text.size(), start); |
| 683 EXPECT_EQ(old_text.size(), end); |
| 684 |
| 685 // Insert one character at the end. Make sure we won't insert anything after |
| 686 // the special ZWS mark used in gtk implementation. |
| 687 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, false, false, false)); |
| 688 EXPECT_EQ(old_text + L"a", edit_view->GetText()); |
| 689 |
| 690 // Delete one character from the end. Make sure we won't delete the special |
| 691 // ZWS mark used in gtk implementation. |
| 692 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
| 693 EXPECT_EQ(old_text, edit_view->GetText()); |
| 694 |
| 695 edit_view->SelectAll(true); |
| 696 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 697 edit_view->GetSelectionBounds(&start, &end); |
| 698 EXPECT_EQ(0U, start); |
| 699 EXPECT_EQ(old_text.size(), end); |
| 700 |
| 701 // Delete the content |
| 702 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, false, false, false)); |
| 703 EXPECT_TRUE(edit_view->IsSelectAll()); |
| 704 edit_view->GetSelectionBounds(&start, &end); |
| 705 EXPECT_EQ(0U, start); |
| 706 EXPECT_EQ(0U, end); |
| 707 EXPECT_TRUE(edit_view->GetText().empty()); |
| 708 |
| 709 // Check if RevertAll() can set text and cursor correctly. |
| 710 edit_view->RevertAll(); |
| 711 EXPECT_FALSE(edit_view->IsSelectAll()); |
| 712 EXPECT_EQ(old_text, edit_view->GetText()); |
| 713 edit_view->GetSelectionBounds(&start, &end); |
| 714 EXPECT_EQ(old_text.size(), start); |
| 715 EXPECT_EQ(old_text.size(), end); |
| 716 } |
303 }; | 717 }; |
304 | 718 |
305 // Test if ctrl-* accelerators are workable in omnibox. | 719 // Test if ctrl-* accelerators are workable in omnibox. |
306 // See http://crbug.com/19193: omnibox blocks ctrl-* commands | 720 // See http://crbug.com/19193: omnibox blocks ctrl-* commands |
307 // | 721 // |
308 // Flaky on interactive tests (dbg), http://crbug.com/69433 | 722 // Flaky on interactive tests (dbg), http://crbug.com/69433 |
309 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, FLAKY_BrowserAccelerators) { | 723 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, FLAKY_BrowserAccelerators) { |
310 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 724 BrowserAcceleratorsTest(); |
311 | |
312 browser()->FocusLocationBar(); | |
313 AutocompleteEditView* edit_view = NULL; | |
314 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
315 | |
316 int tab_count = browser()->tab_count(); | |
317 | |
318 // Create a new Tab. | |
319 browser()->NewTab(); | |
320 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); | |
321 | |
322 // Select the first Tab. | |
323 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_1, true, false, false)); | |
324 ASSERT_EQ(0, browser()->selected_index()); | |
325 | |
326 browser()->FocusLocationBar(); | |
327 | |
328 // Select the second Tab. | |
329 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_2, true, false, false)); | |
330 ASSERT_EQ(1, browser()->selected_index()); | |
331 | |
332 browser()->FocusLocationBar(); | |
333 | |
334 // Try ctrl-w to close a Tab. | |
335 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_W, true, false, false)); | |
336 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count)); | |
337 | |
338 // Try ctrl-l to focus location bar. | |
339 edit_view->SetUserText(L"Hello world"); | |
340 EXPECT_FALSE(edit_view->IsSelectAll()); | |
341 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_L, true, false, false)); | |
342 EXPECT_TRUE(edit_view->IsSelectAll()); | |
343 | |
344 // Try editing the location bar text. | |
345 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RIGHT, false, false, false)); | |
346 EXPECT_FALSE(edit_view->IsSelectAll()); | |
347 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_S, false, false, false)); | |
348 EXPECT_EQ(L"Hello worlds", edit_view->GetText()); | |
349 | |
350 // Try ctrl-x to cut text. | |
351 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, true, true, false)); | |
352 EXPECT_FALSE(edit_view->IsSelectAll()); | |
353 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_X, true, false, false)); | |
354 EXPECT_EQ(L"Hello ", edit_view->GetText()); | |
355 | |
356 #if !defined(OS_CHROMEOS) | |
357 // Try alt-f4 to close the browser. | |
358 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | |
359 browser(), ui::VKEY_F4, false, false, true, false, | |
360 NotificationType::BROWSER_CLOSED, Source<Browser>(browser()))); | |
361 #endif | |
362 } | 725 } |
363 | 726 |
364 // Flakily fails and times out on Win only. http://crbug.com/69941 | 727 // Flakily fails and times out on Win only. http://crbug.com/69941 |
365 #if defined(OS_WIN) | 728 #if defined(OS_WIN) |
366 #define MAYBE_PopupAccelerators DISABLED_PopupAccelerators | 729 #define MAYBE_PopupAccelerators DISABLED_PopupAccelerators |
367 #else | 730 #else |
368 #define MAYBE_PopupAccelerators PopupAccelerators | 731 #define MAYBE_PopupAccelerators PopupAccelerators |
369 #endif | 732 #endif |
370 | 733 |
371 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, MAYBE_PopupAccelerators) { | 734 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, MAYBE_PopupAccelerators) { |
372 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 735 PopupAcceleratorsTest(); |
373 | |
374 // Create a popup. | |
375 Browser* popup = CreateBrowserForPopup(browser()->profile()); | |
376 AutocompleteEditView* edit_view = NULL; | |
377 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditViewForBrowser(popup, &edit_view)); | |
378 popup->FocusLocationBar(); | |
379 EXPECT_TRUE(edit_view->IsSelectAll()); | |
380 | |
381 // Try ctrl-w to close the popup. | |
382 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | |
383 popup, ui::VKEY_W, true, false, false, false, | |
384 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); | |
385 | |
386 // Create another popup. | |
387 popup = CreateBrowserForPopup(browser()->profile()); | |
388 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditViewForBrowser(popup, &edit_view)); | |
389 | |
390 // Set the edit text to "Hello world". | |
391 edit_view->SetUserText(L"Hello world"); | |
392 EXPECT_FALSE(edit_view->IsSelectAll()); | |
393 popup->FocusLocationBar(); | |
394 EXPECT_TRUE(edit_view->IsSelectAll()); | |
395 | |
396 // Try editing the location bar text -- should be disallowed. | |
397 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_RIGHT, false, | |
398 false, false)); | |
399 EXPECT_FALSE(edit_view->IsSelectAll()); | |
400 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_S, false, false, | |
401 false)); | |
402 EXPECT_EQ(L"Hello world", edit_view->GetText()); | |
403 | |
404 // Try ctrl-x to cut text -- should be disallowed. | |
405 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_LEFT, true, true, | |
406 false)); | |
407 EXPECT_FALSE(edit_view->IsSelectAll()); | |
408 ASSERT_NO_FATAL_FAILURE(SendKeyForBrowser(popup, ui::VKEY_X, true, false, | |
409 false)); | |
410 EXPECT_EQ(L"Hello world", edit_view->GetText()); | |
411 | |
412 #if !defined(OS_CHROMEOS) | |
413 // Try alt-f4 to close the popup. | |
414 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( | |
415 popup, ui::VKEY_F4, false, false, true, false, | |
416 NotificationType::BROWSER_CLOSED, Source<Browser>(popup))); | |
417 #endif | |
418 } | 736 } |
419 | 737 |
420 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BackspaceInKeywordMode) { | 738 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BackspaceInKeywordMode) { |
421 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 739 BackspaceInKeywordModeTest(); |
422 | |
423 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
424 browser()->FocusLocationBar(); | |
425 | |
426 AutocompleteEditView* edit_view = NULL; | |
427 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
428 | |
429 // Trigger keyword hint mode. | |
430 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); | |
431 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | |
432 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); | |
433 | |
434 // Trigger keyword mode. | |
435 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | |
436 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | |
437 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); | |
438 | |
439 // Backspace without search text should bring back keyword hint mode. | |
440 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | |
441 ASSERT_TRUE(edit_view->model()->is_keyword_hint()); | |
442 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); | |
443 | |
444 // Trigger keyword mode again. | |
445 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, false, false, false)); | |
446 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | |
447 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); | |
448 | |
449 // Input something as search text. | |
450 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | |
451 | |
452 // Should stay in keyword mode while deleting search text by pressing | |
453 // backspace. | |
454 for (size_t i = 0; i < arraysize(kSearchText) - 1; ++i) { | |
455 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | |
456 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | |
457 ASSERT_EQ(kSearchKeyword, WideToUTF8(edit_view->model()->keyword())); | |
458 } | |
459 | |
460 // Input something as search text. | |
461 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | |
462 | |
463 // Move cursor to the beginning of the search text. | |
464 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, false, false, false)); | |
465 // Backspace at the beginning of the search text shall turn off | |
466 // the keyword mode. | |
467 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | |
468 ASSERT_FALSE(edit_view->model()->is_keyword_hint()); | |
469 ASSERT_EQ(std::string(), WideToUTF8(edit_view->model()->keyword())); | |
470 ASSERT_EQ(std::string(kSearchKeyword) + kSearchText, | |
471 WideToUTF8(edit_view->GetText())); | |
472 } | 740 } |
473 | 741 |
474 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, Escape) { | 742 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, Escape) { |
475 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 743 EscapeTest(); |
476 | |
477 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
478 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIHistoryURL)); | |
479 browser()->FocusLocationBar(); | |
480 | |
481 AutocompleteEditView* edit_view = NULL; | |
482 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
483 | |
484 std::wstring old_text = edit_view->GetText(); | |
485 EXPECT_FALSE(old_text.empty()); | |
486 EXPECT_TRUE(edit_view->IsSelectAll()); | |
487 | |
488 // Delete all text in omnibox. | |
489 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | |
490 EXPECT_TRUE(edit_view->GetText().empty()); | |
491 | |
492 // Escape shall revert the text in omnibox. | |
493 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); | |
494 EXPECT_EQ(old_text, edit_view->GetText()); | |
495 EXPECT_TRUE(edit_view->IsSelectAll()); | |
496 } | 744 } |
497 | 745 |
498 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, DesiredTLD) { | 746 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, DesiredTLD) { |
499 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 747 DesiredTLDTest(); |
500 | |
501 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
502 browser()->FocusLocationBar(); | |
503 | |
504 AutocompleteEditView* edit_view = NULL; | |
505 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
506 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | |
507 ASSERT_TRUE(popup_model); | |
508 | |
509 // Test ctrl-Enter. | |
510 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys)); | |
511 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | |
512 ASSERT_TRUE(popup_model->IsOpen()); | |
513 // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall be opened. | |
514 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, true, false, false)); | |
515 | |
516 GURL url = browser()->GetSelectedTabContents()->GetURL(); | |
517 EXPECT_STREQ(kDesiredTLDHostname, url.host().c_str()); | |
518 } | 748 } |
519 | 749 |
520 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AltEnter) { | 750 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AltEnter) { |
521 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 751 AltEnterTest(); |
522 | |
523 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
524 browser()->FocusLocationBar(); | |
525 | |
526 AutocompleteEditView* edit_view = NULL; | |
527 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
528 | |
529 edit_view->SetUserText(ASCIIToWide(chrome::kChromeUIHistoryURL)); | |
530 int tab_count = browser()->tab_count(); | |
531 // alt-Enter opens a new tab. | |
532 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, true)); | |
533 ASSERT_NO_FATAL_FAILURE(WaitForTabOpenOrClose(tab_count + 1)); | |
534 } | 752 } |
535 | 753 |
536 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToSearch) { | 754 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToSearch) { |
537 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 755 EnterToSearchTest(); |
538 | |
539 ASSERT_NO_FATAL_FAILURE(SetupHostResolver()); | |
540 ASSERT_NO_FATAL_FAILURE(SetupSearchEngine()); | |
541 browser()->FocusLocationBar(); | |
542 | |
543 AutocompleteEditView* edit_view = NULL; | |
544 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
545 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | |
546 ASSERT_TRUE(popup_model); | |
547 | |
548 // Test Enter to search. | |
549 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | |
550 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | |
551 ASSERT_TRUE(popup_model->IsOpen()); | |
552 | |
553 // Check if the default match result is Search Primary Provider. | |
554 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, | |
555 popup_model->result().default_match()->type); | |
556 | |
557 // Open the default match. | |
558 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); | |
559 GURL url = browser()->GetSelectedTabContents()->GetURL(); | |
560 EXPECT_STREQ(kSearchTextURL, url.spec().c_str()); | |
561 | |
562 // Test that entering a single character then Enter performs a search. | |
563 browser()->FocusLocationBar(); | |
564 EXPECT_TRUE(edit_view->IsSelectAll()); | |
565 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchSingleCharKeys)); | |
566 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | |
567 ASSERT_TRUE(popup_model->IsOpen()); | |
568 EXPECT_EQ(kSearchSingleChar, WideToUTF8(edit_view->GetText())); | |
569 | |
570 // Check if the default match result is Search Primary Provider. | |
571 ASSERT_EQ(AutocompleteMatch::SEARCH_WHAT_YOU_TYPED, | |
572 popup_model->result().default_match()->type); | |
573 | |
574 // Open the default match. | |
575 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); | |
576 url = browser()->GetSelectedTabContents()->GetURL(); | |
577 EXPECT_STREQ(kSearchSingleCharURL, url.spec().c_str()); | |
578 } | 756 } |
579 | 757 |
580 // See http://crbug.com/20934: Omnibox keyboard behavior wrong for | 758 // See http://crbug.com/20934: Omnibox keyboard behavior wrong for |
581 // "See recent pages in history" | 759 // "See recent pages in history" |
582 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToOpenHistoryPage) { | 760 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToOpenHistoryPage) { |
583 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 761 EnterToOpenHistoryPageTest(); |
584 | |
585 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
586 browser()->FocusLocationBar(); | |
587 | |
588 AutocompleteEditView* edit_view = NULL; | |
589 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
590 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | |
591 ASSERT_TRUE(popup_model); | |
592 | |
593 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | |
594 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | |
595 ASSERT_TRUE(popup_model->IsOpen()); | |
596 EXPECT_EQ(0U, popup_model->selected_line()); | |
597 | |
598 // Move to the history page item. | |
599 size_t size = popup_model->result().size(); | |
600 while (true) { | |
601 if (popup_model->result().match_at(popup_model->selected_line()).type == | |
602 AutocompleteMatch::OPEN_HISTORY_PAGE) | |
603 break; | |
604 size_t old_selected_line = popup_model->selected_line(); | |
605 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, false, false, false)); | |
606 ASSERT_EQ(old_selected_line + 1, popup_model->selected_line()); | |
607 if (popup_model->selected_line() == size - 1) | |
608 break; | |
609 } | |
610 | |
611 // Make sure the history page item is selected. | |
612 ASSERT_EQ(AutocompleteMatch::OPEN_HISTORY_PAGE, | |
613 popup_model->result().match_at(popup_model->selected_line()).type); | |
614 | |
615 // Open the history page item. | |
616 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, false, false, false)); | |
617 GURL url = browser()->GetSelectedTabContents()->GetURL(); | |
618 EXPECT_STREQ(kHistoryPageURL, url.spec().c_str()); | |
619 } | 762 } |
620 | 763 |
621 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EscapeToDefaultMatch) { | 764 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EscapeToDefaultMatch) { |
622 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 765 EscapeToDefaultMatchTest(); |
623 | |
624 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
625 browser()->FocusLocationBar(); | |
626 | |
627 AutocompleteEditView* edit_view = NULL; | |
628 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
629 AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); | |
630 ASSERT_TRUE(popup_model); | |
631 | |
632 // Input something to trigger inline autocomplete. | |
633 ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); | |
634 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | |
635 ASSERT_TRUE(popup_model->IsOpen()); | |
636 | |
637 std::wstring old_text = edit_view->GetText(); | |
638 | |
639 // Make sure inline autocomplete is triggerred. | |
640 EXPECT_GT(old_text.length(), arraysize(kSearchText) - 1); | |
641 | |
642 size_t old_selected_line = popup_model->selected_line(); | |
643 EXPECT_EQ(0U, old_selected_line); | |
644 | |
645 // Move to another line with different text. | |
646 size_t size = popup_model->result().size(); | |
647 while (popup_model->selected_line() < size - 1) { | |
648 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DOWN, false, false, false)); | |
649 ASSERT_NE(old_selected_line, popup_model->selected_line()); | |
650 if (old_text != edit_view->GetText()) | |
651 break; | |
652 } | |
653 | |
654 EXPECT_NE(old_text, edit_view->GetText()); | |
655 | |
656 // Escape shall revert back to the default match item. | |
657 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_ESCAPE, false, false, false)); | |
658 EXPECT_EQ(old_text, edit_view->GetText()); | |
659 EXPECT_EQ(old_selected_line, popup_model->selected_line()); | |
660 } | 766 } |
661 | 767 |
662 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BasicTextOperations) { | 768 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BasicTextOperations) { |
663 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 769 BasicTextOperationsTest(); |
664 | |
665 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | |
666 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); | |
667 browser()->FocusLocationBar(); | |
668 | |
669 AutocompleteEditView* edit_view = NULL; | |
670 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | |
671 | |
672 std::wstring old_text = edit_view->GetText(); | |
673 EXPECT_EQ(UTF8ToWide(chrome::kAboutBlankURL), old_text); | |
674 EXPECT_TRUE(edit_view->IsSelectAll()); | |
675 | |
676 std::wstring::size_type start, end; | |
677 edit_view->GetSelectionBounds(&start, &end); | |
678 EXPECT_EQ(0U, start); | |
679 EXPECT_EQ(old_text.size(), end); | |
680 | |
681 // Move the cursor to the end. | |
682 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_END, false, false, false)); | |
683 EXPECT_FALSE(edit_view->IsSelectAll()); | |
684 | |
685 // Make sure the cursor is placed correctly. | |
686 edit_view->GetSelectionBounds(&start, &end); | |
687 EXPECT_EQ(old_text.size(), start); | |
688 EXPECT_EQ(old_text.size(), end); | |
689 | |
690 // Insert one character at the end. Make sure we won't insert anything after | |
691 // the special ZWS mark used in gtk implementation. | |
692 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, false, false, false)); | |
693 EXPECT_EQ(old_text + L"a", edit_view->GetText()); | |
694 | |
695 // Delete one character from the end. Make sure we won't delete the special | |
696 // ZWS mark used in gtk implementation. | |
697 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); | |
698 EXPECT_EQ(old_text, edit_view->GetText()); | |
699 | |
700 edit_view->SelectAll(true); | |
701 EXPECT_TRUE(edit_view->IsSelectAll()); | |
702 edit_view->GetSelectionBounds(&start, &end); | |
703 EXPECT_EQ(0U, start); | |
704 EXPECT_EQ(old_text.size(), end); | |
705 | |
706 // Delete the content | |
707 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, false, false, false)); | |
708 EXPECT_TRUE(edit_view->IsSelectAll()); | |
709 edit_view->GetSelectionBounds(&start, &end); | |
710 EXPECT_EQ(0U, start); | |
711 EXPECT_EQ(0U, end); | |
712 EXPECT_TRUE(edit_view->GetText().empty()); | |
713 | |
714 // Check if RevertAll() can set text and cursor correctly. | |
715 edit_view->RevertAll(); | |
716 EXPECT_FALSE(edit_view->IsSelectAll()); | |
717 EXPECT_EQ(old_text, edit_view->GetText()); | |
718 edit_view->GetSelectionBounds(&start, &end); | |
719 EXPECT_EQ(old_text.size(), start); | |
720 EXPECT_EQ(old_text.size(), end); | |
721 } | 770 } |
722 | 771 |
723 #if defined(OS_LINUX) | 772 #if defined(OS_LINUX) |
| 773 // TODO(oshima): enable these tests for views-implmentation when |
| 774 // these featuers are supported. |
| 775 |
724 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, UndoRedoLinux) { | 776 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, UndoRedoLinux) { |
725 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 777 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
726 | 778 |
727 ASSERT_NO_FATAL_FAILURE(SetupComponents()); | 779 ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
728 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); | 780 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
729 browser()->FocusLocationBar(); | 781 browser()->FocusLocationBar(); |
730 | 782 |
731 AutocompleteEditView* edit_view = NULL; | 783 AutocompleteEditView* edit_view = NULL; |
732 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); | 784 ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
733 | 785 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 | 902 |
851 // Paste text. | 903 // Paste text. |
852 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, true, false, false)); | 904 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_V, true, false, false)); |
853 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); | 905 ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
854 ASSERT_TRUE(popup_model->IsOpen()); | 906 ASSERT_TRUE(popup_model->IsOpen()); |
855 | 907 |
856 // Inline autocomplete shouldn't be triggered. | 908 // Inline autocomplete shouldn't be triggered. |
857 ASSERT_EQ(L"abc", edit_view->GetText()); | 909 ASSERT_EQ(L"abc", edit_view->GetText()); |
858 } | 910 } |
859 #endif | 911 #endif |
| 912 |
| 913 #if defined(TOOLKIT_VIEWS) |
| 914 class AutocompleteEditViewViewsTest : public AutocompleteEditViewTest { |
| 915 public: |
| 916 AutocompleteEditViewViewsTest() { |
| 917 views::NativeTextfieldViews::SetEnableTextfieldViews(true); |
| 918 } |
| 919 }; |
| 920 |
| 921 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, |
| 922 FLAKY_BrowserAccelerators) { |
| 923 BrowserAcceleratorsTest(); |
| 924 } |
| 925 |
| 926 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, MAYBE_PopupAccelerators) { |
| 927 PopupAcceleratorsTest(); |
| 928 } |
| 929 |
| 930 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, BackspaceInKeywordMode) { |
| 931 BackspaceInKeywordModeTest(); |
| 932 } |
| 933 |
| 934 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, Escape) { |
| 935 EscapeTest(); |
| 936 } |
| 937 |
| 938 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, DesiredTLD) { |
| 939 DesiredTLDTest(); |
| 940 } |
| 941 |
| 942 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, AltEnter) { |
| 943 AltEnterTest(); |
| 944 } |
| 945 |
| 946 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, EnterToSearch) { |
| 947 EnterToSearchTest(); |
| 948 } |
| 949 |
| 950 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, EnterToOpenHistoryPage) { |
| 951 EnterToOpenHistoryPageTest(); |
| 952 } |
| 953 |
| 954 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, EscapeToDefaultMatch) { |
| 955 EscapeToDefaultMatchTest(); |
| 956 } |
| 957 |
| 958 IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, BasicTextOperations) { |
| 959 BasicTextOperationsTest(); |
| 960 } |
| 961 |
| 962 #endif |
OLD | NEW |