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

Side by Side Diff: ui/base/ime/remote_input_method_win_unittest.cc

Issue 1257603006: Refactoring for the InputMethod & InputMethodDelegate interfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed compiling errors on chromeos. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/base/ime/remote_input_method_win.cc ('k') | ui/keyboard/keyboard_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/base/ime/remote_input_method_win.h" 5 #include "ui/base/ime/remote_input_method_win.h"
6 6
7 #include <InputScope.h> 7 #include <InputScope.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 MockInputMethodDelegate() {} 131 MockInputMethodDelegate() {}
132 132
133 const std::vector<ui::KeyboardCode>& fabricated_key_events() const { 133 const std::vector<ui::KeyboardCode>& fabricated_key_events() const {
134 return fabricated_key_events_; 134 return fabricated_key_events_;
135 } 135 }
136 void Reset() { 136 void Reset() {
137 fabricated_key_events_.clear(); 137 fabricated_key_events_.clear();
138 } 138 }
139 139
140 private: 140 private:
141 bool DispatchKeyEventPostIME(const ui::KeyEvent& event) override { 141 ui::EventDispatchDetails DispatchKeyEventPostIME(
142 EXPECT_FALSE(event.HasNativeEvent()); 142 ui::KeyEvent* event) override {
143 fabricated_key_events_.push_back(event.key_code()); 143 EXPECT_FALSE(event->HasNativeEvent());
144 return true; 144 fabricated_key_events_.push_back(event->key_code());
145 return ui::EventDispatchDetails();
145 } 146 }
146 147
147 std::vector<ui::KeyboardCode> fabricated_key_events_; 148 std::vector<ui::KeyboardCode> fabricated_key_events_;
148 DISALLOW_COPY_AND_ASSIGN(MockInputMethodDelegate); 149 DISALLOW_COPY_AND_ASSIGN(MockInputMethodDelegate);
149 }; 150 };
150 151
151 class MockRemoteInputMethodDelegateWin 152 class MockRemoteInputMethodDelegateWin
152 : public internal::RemoteInputMethodDelegateWin { 153 : public internal::RemoteInputMethodDelegateWin {
153 public: 154 public:
154 MockRemoteInputMethodDelegateWin() 155 MockRemoteInputMethodDelegateWin()
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 // Basically RemoteInputMethodWin does not handle native keydown event. 510 // Basically RemoteInputMethodWin does not handle native keydown event.
510 511
511 MockInputMethodDelegate delegate_; 512 MockInputMethodDelegate delegate_;
512 MockTextInputClient mock_text_input_client; 513 MockTextInputClient mock_text_input_client;
513 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 514 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
514 515
515 const MSG wm_keydown = { NULL, WM_KEYDOWN, ui::VKEY_A }; 516 const MSG wm_keydown = { NULL, WM_KEYDOWN, ui::VKEY_A };
516 ui::KeyEvent native_keydown(wm_keydown); 517 ui::KeyEvent native_keydown(wm_keydown);
517 518
518 // This must not cause a crash. 519 // This must not cause a crash.
519 EXPECT_FALSE(input_method->DispatchKeyEvent(native_keydown)); 520 input_method->DispatchKeyEvent(&native_keydown);
yukawa 2015/07/30 18:11:39 Does it make sense to check |native_keydown.handle
Shu Chen 2015/07/31 01:18:47 Yes, makes sense. Thanks for catching this.
520 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 521 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
521 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 522 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
522 delegate_.Reset(); 523 delegate_.Reset();
523 mock_text_input_client.Reset(); 524 mock_text_input_client.Reset();
524 525
525 RemoteInputMethodPrivateWin* private_ptr = 526 RemoteInputMethodPrivateWin* private_ptr =
526 RemoteInputMethodPrivateWin::Get(input_method.get()); 527 RemoteInputMethodPrivateWin::Get(input_method.get());
527 ASSERT_TRUE(private_ptr != NULL); 528 ASSERT_TRUE(private_ptr != NULL);
528 MockRemoteInputMethodDelegateWin mock_remote_delegate; 529 MockRemoteInputMethodDelegateWin mock_remote_delegate;
529 private_ptr->SetRemoteDelegate(&mock_remote_delegate); 530 private_ptr->SetRemoteDelegate(&mock_remote_delegate);
530 531
531 // TextInputClient is not focused yet here. 532 // TextInputClient is not focused yet here.
532 533
533 EXPECT_FALSE(input_method->DispatchKeyEvent(native_keydown)); 534 input_method->DispatchKeyEvent(&native_keydown);
534 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 535 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
535 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 536 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
536 delegate_.Reset(); 537 delegate_.Reset();
537 mock_text_input_client.Reset(); 538 mock_text_input_client.Reset();
538 539
539 input_method->SetFocusedTextInputClient(&mock_text_input_client); 540 input_method->SetFocusedTextInputClient(&mock_text_input_client);
540 541
541 // TextInputClient is now focused here. 542 // TextInputClient is now focused here.
542 543
543 EXPECT_FALSE(input_method->DispatchKeyEvent(native_keydown)); 544 input_method->DispatchKeyEvent(&native_keydown);
544 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 545 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
545 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 546 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
546 delegate_.Reset(); 547 delegate_.Reset();
547 mock_text_input_client.Reset(); 548 mock_text_input_client.Reset();
548 } 549 }
549 550
550 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_NativeCharEvent) { 551 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_NativeCharEvent) {
551 // RemoteInputMethodWin handles native char event if possible. 552 // RemoteInputMethodWin handles native char event if possible.
552 553
553 MockInputMethodDelegate delegate_; 554 MockInputMethodDelegate delegate_;
554 MockTextInputClient mock_text_input_client; 555 MockTextInputClient mock_text_input_client;
555 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 556 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
556 557
557 const MSG wm_char = { NULL, WM_CHAR, 'A', 0 }; 558 const MSG wm_char = { NULL, WM_CHAR, 'A', 0 };
558 ui::KeyEvent native_char(wm_char); 559 ui::KeyEvent native_char(wm_char);
559 560
560 // This must not cause a crash. 561 // This must not cause a crash.
561 EXPECT_FALSE(input_method->DispatchKeyEvent(native_char)); 562 input_method->DispatchKeyEvent(&native_char);
562 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 563 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
563 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 564 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
564 delegate_.Reset(); 565 delegate_.Reset();
565 mock_text_input_client.Reset(); 566 mock_text_input_client.Reset();
566 567
567 RemoteInputMethodPrivateWin* private_ptr = 568 RemoteInputMethodPrivateWin* private_ptr =
568 RemoteInputMethodPrivateWin::Get(input_method.get()); 569 RemoteInputMethodPrivateWin::Get(input_method.get());
569 ASSERT_TRUE(private_ptr != NULL); 570 ASSERT_TRUE(private_ptr != NULL);
570 MockRemoteInputMethodDelegateWin mock_remote_delegate; 571 MockRemoteInputMethodDelegateWin mock_remote_delegate;
571 private_ptr->SetRemoteDelegate(&mock_remote_delegate); 572 private_ptr->SetRemoteDelegate(&mock_remote_delegate);
572 573
573 // TextInputClient is not focused yet here. 574 // TextInputClient is not focused yet here.
574 575
575 EXPECT_FALSE(input_method->DispatchKeyEvent(native_char)); 576 input_method->DispatchKeyEvent(&native_char);
576 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 577 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
577 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 578 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
578 delegate_.Reset(); 579 delegate_.Reset();
579 mock_text_input_client.Reset(); 580 mock_text_input_client.Reset();
580 581
581 input_method->SetFocusedTextInputClient(&mock_text_input_client); 582 input_method->SetFocusedTextInputClient(&mock_text_input_client);
582 583
583 // TextInputClient is now focused here. 584 // TextInputClient is now focused here.
584 585
585 EXPECT_TRUE(input_method->DispatchKeyEvent(native_char)); 586 input_method->DispatchKeyEvent(&native_char);
586 EXPECT_EQ(L"A", mock_text_input_client.inserted_text()); 587 EXPECT_EQ(L"A", mock_text_input_client.inserted_text());
587 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 588 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
588 delegate_.Reset(); 589 delegate_.Reset();
589 mock_text_input_client.Reset(); 590 mock_text_input_client.Reset();
590 } 591 }
591 592
592 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_FabricatedKeyDown) { 593 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_FabricatedKeyDown) {
593 // Fabricated non-char event will be delegated to 594 // Fabricated non-char event will be delegated to
594 // InputMethodDelegate::DispatchFabricatedKeyEventPostIME as long as the 595 // InputMethodDelegate::DispatchFabricatedKeyEventPostIME as long as the
595 // delegate is installed. 596 // delegate is installed.
596 597
597 MockInputMethodDelegate delegate_; 598 MockInputMethodDelegate delegate_;
598 MockTextInputClient mock_text_input_client; 599 MockTextInputClient mock_text_input_client;
599 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 600 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
600 601
601 ui::KeyEvent fabricated_keydown(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE); 602 ui::KeyEvent fabricated_keydown(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
602 fabricated_keydown.set_character(L'A'); 603 fabricated_keydown.set_character(L'A');
603 604
604 // This must not cause a crash. 605 // This must not cause a crash.
605 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_keydown)); 606 input_method->DispatchKeyEvent(&fabricated_keydown);
606 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 607 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
607 ASSERT_EQ(1, delegate_.fabricated_key_events().size()); 608 ASSERT_EQ(1, delegate_.fabricated_key_events().size());
608 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]); 609 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]);
609 delegate_.Reset(); 610 delegate_.Reset();
610 mock_text_input_client.Reset(); 611 mock_text_input_client.Reset();
611 612
612 RemoteInputMethodPrivateWin* private_ptr = 613 RemoteInputMethodPrivateWin* private_ptr =
613 RemoteInputMethodPrivateWin::Get(input_method.get()); 614 RemoteInputMethodPrivateWin::Get(input_method.get());
614 ASSERT_TRUE(private_ptr != NULL); 615 ASSERT_TRUE(private_ptr != NULL);
615 MockRemoteInputMethodDelegateWin mock_remote_delegate; 616 MockRemoteInputMethodDelegateWin mock_remote_delegate;
616 private_ptr->SetRemoteDelegate(&mock_remote_delegate); 617 private_ptr->SetRemoteDelegate(&mock_remote_delegate);
617 618
618 // TextInputClient is not focused yet here. 619 // TextInputClient is not focused yet here.
619 620
620 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_keydown)); 621 input_method->DispatchKeyEvent(&fabricated_keydown);
621 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 622 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
622 ASSERT_EQ(1, delegate_.fabricated_key_events().size()); 623 ASSERT_EQ(1, delegate_.fabricated_key_events().size());
623 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]); 624 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]);
624 delegate_.Reset(); 625 delegate_.Reset();
625 mock_text_input_client.Reset(); 626 mock_text_input_client.Reset();
626 627
627 input_method->SetFocusedTextInputClient(&mock_text_input_client); 628 input_method->SetFocusedTextInputClient(&mock_text_input_client);
628 // TextInputClient is now focused here. 629 // TextInputClient is now focused here.
629 630
630 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_keydown)); 631 input_method->DispatchKeyEvent(&fabricated_keydown);
631 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 632 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
632 ASSERT_EQ(1, delegate_.fabricated_key_events().size()); 633 ASSERT_EQ(1, delegate_.fabricated_key_events().size());
633 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]); 634 EXPECT_EQ(L'A', delegate_.fabricated_key_events()[0]);
634 delegate_.Reset(); 635 delegate_.Reset();
635 mock_text_input_client.Reset(); 636 mock_text_input_client.Reset();
636 637
637 input_method->SetDelegate(NULL); 638 input_method->SetDelegate(NULL);
638 // RemoteInputMethodDelegateWin is no longer set here. 639 // RemoteInputMethodDelegateWin is no longer set here.
639 640
640 EXPECT_FALSE(input_method->DispatchKeyEvent(fabricated_keydown)); 641 input_method->DispatchKeyEvent(&fabricated_keydown);
641 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 642 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
642 } 643 }
643 644
644 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_FabricatedChar) { 645 TEST(RemoteInputMethodWinTest, DispatchKeyEvent_FabricatedChar) {
645 // Note: RemoteInputMethodWin::DispatchKeyEvent should always return true 646 // Note: RemoteInputMethodWin::DispatchKeyEvent should always return true
646 // for fabricated character events. 647 // for fabricated character events.
647 648
648 MockInputMethodDelegate delegate_; 649 MockInputMethodDelegate delegate_;
649 MockTextInputClient mock_text_input_client; 650 MockTextInputClient mock_text_input_client;
650 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 651 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
651 652
652 ui::KeyEvent fabricated_char(L'A', ui::VKEY_A, ui::EF_NONE); 653 ui::KeyEvent fabricated_char(L'A', ui::VKEY_A, ui::EF_NONE);
653 654
654 // This must not cause a crash. 655 // This must not cause a crash.
655 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_char)); 656 input_method->DispatchKeyEvent(&fabricated_char);
656 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 657 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
657 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 658 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
658 delegate_.Reset(); 659 delegate_.Reset();
659 mock_text_input_client.Reset(); 660 mock_text_input_client.Reset();
660 661
661 RemoteInputMethodPrivateWin* private_ptr = 662 RemoteInputMethodPrivateWin* private_ptr =
662 RemoteInputMethodPrivateWin::Get(input_method.get()); 663 RemoteInputMethodPrivateWin::Get(input_method.get());
663 ASSERT_TRUE(private_ptr != NULL); 664 ASSERT_TRUE(private_ptr != NULL);
664 MockRemoteInputMethodDelegateWin mock_remote_delegate; 665 MockRemoteInputMethodDelegateWin mock_remote_delegate;
665 private_ptr->SetRemoteDelegate(&mock_remote_delegate); 666 private_ptr->SetRemoteDelegate(&mock_remote_delegate);
666 667
667 // TextInputClient is not focused yet here. 668 // TextInputClient is not focused yet here.
668 669
669 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_char)); 670 input_method->DispatchKeyEvent(&fabricated_char);
670 EXPECT_TRUE(mock_text_input_client.inserted_text().empty()); 671 EXPECT_TRUE(mock_text_input_client.inserted_text().empty());
671 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 672 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
672 delegate_.Reset(); 673 delegate_.Reset();
673 mock_text_input_client.Reset(); 674 mock_text_input_client.Reset();
674 675
675 input_method->SetFocusedTextInputClient(&mock_text_input_client); 676 input_method->SetFocusedTextInputClient(&mock_text_input_client);
676 677
677 // TextInputClient is now focused here. 678 // TextInputClient is now focused here.
678 679
679 EXPECT_TRUE(input_method->DispatchKeyEvent(fabricated_char)); 680 input_method->DispatchKeyEvent(&fabricated_char);
680 EXPECT_EQ(L"A", mock_text_input_client.inserted_text()); 681 EXPECT_EQ(L"A", mock_text_input_client.inserted_text());
681 EXPECT_TRUE(delegate_.fabricated_key_events().empty()); 682 EXPECT_TRUE(delegate_.fabricated_key_events().empty());
682 delegate_.Reset(); 683 delegate_.Reset();
683 mock_text_input_client.Reset(); 684 mock_text_input_client.Reset();
684 } 685 }
685 686
686 TEST(RemoteInputMethodWinTest, OnCompositionChanged) { 687 TEST(RemoteInputMethodWinTest, OnCompositionChanged) {
687 MockInputMethodDelegate delegate_; 688 MockInputMethodDelegate delegate_;
688 MockTextInputClient mock_text_input_client; 689 MockTextInputClient mock_text_input_client;
689 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 690 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_)); 803 scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
803 input_method->AddObserver(&input_method_observer); 804 input_method->AddObserver(&input_method_observer);
804 805
805 EXPECT_EQ(0u, input_method_observer.on_input_method_destroyed_changed()); 806 EXPECT_EQ(0u, input_method_observer.on_input_method_destroyed_changed());
806 input_method.reset(); 807 input_method.reset();
807 EXPECT_EQ(1u, input_method_observer.on_input_method_destroyed_changed()); 808 EXPECT_EQ(1u, input_method_observer.on_input_method_destroyed_changed());
808 } 809 }
809 810
810 } // namespace 811 } // namespace
811 } // namespace ui 812 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/ime/remote_input_method_win.cc ('k') | ui/keyboard/keyboard_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698