OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/memory/shared_memory.h" | 8 #include "base/memory/shared_memory.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 LoadHTML("<div>Page A</div>"); | 530 LoadHTML("<div>Page A</div>"); |
531 | 531 |
532 // Load page B, which will trigger an UpdateState message for page A. | 532 // Load page B, which will trigger an UpdateState message for page A. |
533 LoadHTML("<div>Page B</div>"); | 533 LoadHTML("<div>Page B</div>"); |
534 | 534 |
535 // Check for a valid UpdateState message for page A. | 535 // Check for a valid UpdateState message for page A. |
536 ProcessPendingMessages(); | 536 ProcessPendingMessages(); |
537 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 537 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
538 ViewHostMsg_UpdateState::ID); | 538 ViewHostMsg_UpdateState::ID); |
539 ASSERT_TRUE(msg_A); | 539 ASSERT_TRUE(msg_A); |
540 int page_id_A; | 540 ViewHostMsg_UpdateState::Param params; |
541 PageState state_A; | 541 ViewHostMsg_UpdateState::Read(msg_A, ¶ms); |
542 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); | 542 int page_id_A = params.a; |
| 543 PageState state_A = params.b; |
543 EXPECT_EQ(1, page_id_A); | 544 EXPECT_EQ(1, page_id_A); |
544 render_thread_->sink().ClearMessages(); | 545 render_thread_->sink().ClearMessages(); |
545 | 546 |
546 // Back to page A (page_id 1) and commit. | 547 // Back to page A (page_id 1) and commit. |
547 FrameMsg_Navigate_Params params_A; | 548 FrameMsg_Navigate_Params params_A; |
548 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 549 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
549 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; | 550 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; |
550 params_A.current_history_list_length = 2; | 551 params_A.current_history_list_length = 2; |
551 params_A.current_history_list_offset = 1; | 552 params_A.current_history_list_offset = 1; |
552 params_A.pending_history_list_offset = 0; | 553 params_A.pending_history_list_offset = 0; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 LoadHTML("<div>Page A</div>"); | 603 LoadHTML("<div>Page A</div>"); |
603 | 604 |
604 // Load page B, which will trigger an UpdateState message for page A. | 605 // Load page B, which will trigger an UpdateState message for page A. |
605 LoadHTML("<div>Page B</div>"); | 606 LoadHTML("<div>Page B</div>"); |
606 | 607 |
607 // Check for a valid UpdateState message for page A. | 608 // Check for a valid UpdateState message for page A. |
608 ProcessPendingMessages(); | 609 ProcessPendingMessages(); |
609 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 610 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
610 ViewHostMsg_UpdateState::ID); | 611 ViewHostMsg_UpdateState::ID); |
611 ASSERT_TRUE(msg_A); | 612 ASSERT_TRUE(msg_A); |
612 int page_id_A; | 613 ViewHostMsg_UpdateState::Param param; |
613 PageState state_A; | 614 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
614 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); | 615 int page_id_A = param.a; |
| 616 PageState state_A = param.b; |
615 EXPECT_EQ(1, page_id_A); | 617 EXPECT_EQ(1, page_id_A); |
616 render_thread_->sink().ClearMessages(); | 618 render_thread_->sink().ClearMessages(); |
617 | 619 |
618 // Load page C, which will trigger an UpdateState message for page B. | 620 // Load page C, which will trigger an UpdateState message for page B. |
619 LoadHTML("<div>Page C</div>"); | 621 LoadHTML("<div>Page C</div>"); |
620 | 622 |
621 // Check for a valid UpdateState for page B. | 623 // Check for a valid UpdateState for page B. |
622 ProcessPendingMessages(); | 624 ProcessPendingMessages(); |
623 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( | 625 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( |
624 ViewHostMsg_UpdateState::ID); | 626 ViewHostMsg_UpdateState::ID); |
625 ASSERT_TRUE(msg_B); | 627 ASSERT_TRUE(msg_B); |
626 int page_id_B; | 628 ViewHostMsg_UpdateState::Read(msg_B, ¶m); |
627 PageState state_B; | 629 int page_id_B = param.a; |
628 ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B); | 630 PageState state_B = param.b; |
629 EXPECT_EQ(2, page_id_B); | 631 EXPECT_EQ(2, page_id_B); |
630 EXPECT_NE(state_A, state_B); | 632 EXPECT_NE(state_A, state_B); |
631 render_thread_->sink().ClearMessages(); | 633 render_thread_->sink().ClearMessages(); |
632 | 634 |
633 // Load page D, which will trigger an UpdateState message for page C. | 635 // Load page D, which will trigger an UpdateState message for page C. |
634 LoadHTML("<div>Page D</div>"); | 636 LoadHTML("<div>Page D</div>"); |
635 | 637 |
636 // Check for a valid UpdateState for page C. | 638 // Check for a valid UpdateState for page C. |
637 ProcessPendingMessages(); | 639 ProcessPendingMessages(); |
638 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( | 640 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( |
639 ViewHostMsg_UpdateState::ID); | 641 ViewHostMsg_UpdateState::ID); |
640 ASSERT_TRUE(msg_C); | 642 ASSERT_TRUE(msg_C); |
641 int page_id_C; | 643 ViewHostMsg_UpdateState::Read(msg_C, ¶m); |
642 PageState state_C; | 644 int page_id_C = param.a; |
643 ViewHostMsg_UpdateState::Read(msg_C, &page_id_C, &state_C); | 645 PageState state_C = param.b; |
644 EXPECT_EQ(3, page_id_C); | 646 EXPECT_EQ(3, page_id_C); |
645 EXPECT_NE(state_B, state_C); | 647 EXPECT_NE(state_B, state_C); |
646 render_thread_->sink().ClearMessages(); | 648 render_thread_->sink().ClearMessages(); |
647 | 649 |
648 // Go back to C and commit, preparing for our real test. | 650 // Go back to C and commit, preparing for our real test. |
649 FrameMsg_Navigate_Params params_C; | 651 FrameMsg_Navigate_Params params_C; |
650 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 652 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
651 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; | 653 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; |
652 params_C.current_history_list_length = 4; | 654 params_C.current_history_list_length = 4; |
653 params_C.current_history_list_offset = 3; | 655 params_C.current_history_list_offset = 3; |
(...skipping 29 matching lines...) Expand all Loading... |
683 params.page_id = 1; | 685 params.page_id = 1; |
684 params.page_state = state_A; | 686 params.page_state = state_A; |
685 frame()->OnNavigate(params); | 687 frame()->OnNavigate(params); |
686 ProcessPendingMessages(); | 688 ProcessPendingMessages(); |
687 | 689 |
688 // Now ensure that the UpdateState message we receive is consistent | 690 // Now ensure that the UpdateState message we receive is consistent |
689 // and represents page C in both page_id and state. | 691 // and represents page C in both page_id and state. |
690 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 692 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
691 ViewHostMsg_UpdateState::ID); | 693 ViewHostMsg_UpdateState::ID); |
692 ASSERT_TRUE(msg); | 694 ASSERT_TRUE(msg); |
693 int page_id; | 695 ViewHostMsg_UpdateState::Read(msg, ¶m); |
694 PageState state; | 696 int page_id = param.a; |
695 ViewHostMsg_UpdateState::Read(msg, &page_id, &state); | 697 PageState state = param.b; |
696 EXPECT_EQ(page_id_C, page_id); | 698 EXPECT_EQ(page_id_C, page_id); |
697 EXPECT_NE(state_A, state); | 699 EXPECT_NE(state_A, state); |
698 EXPECT_NE(state_B, state); | 700 EXPECT_NE(state_B, state); |
699 EXPECT_EQ(state_C, state); | 701 EXPECT_EQ(state_C, state); |
700 } | 702 } |
701 | 703 |
702 // Test that the history_page_ids_ list can reveal when a stale back/forward | 704 // Test that the history_page_ids_ list can reveal when a stale back/forward |
703 // navigation arrives from the browser and can be ignored. See | 705 // navigation arrives from the browser and can be ignored. See |
704 // http://crbug.com/86758. | 706 // http://crbug.com/86758. |
705 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { | 707 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { |
706 // Load page A. | 708 // Load page A. |
707 LoadHTML("<div>Page A</div>"); | 709 LoadHTML("<div>Page A</div>"); |
708 EXPECT_EQ(1, view()->history_list_length_); | 710 EXPECT_EQ(1, view()->history_list_length_); |
709 EXPECT_EQ(0, view()->history_list_offset_); | 711 EXPECT_EQ(0, view()->history_list_offset_); |
710 EXPECT_EQ(1, view()->history_page_ids_[0]); | 712 EXPECT_EQ(1, view()->history_page_ids_[0]); |
711 | 713 |
712 // Load page B, which will trigger an UpdateState message for page A. | 714 // Load page B, which will trigger an UpdateState message for page A. |
713 LoadHTML("<div>Page B</div>"); | 715 LoadHTML("<div>Page B</div>"); |
714 EXPECT_EQ(2, view()->history_list_length_); | 716 EXPECT_EQ(2, view()->history_list_length_); |
715 EXPECT_EQ(1, view()->history_list_offset_); | 717 EXPECT_EQ(1, view()->history_list_offset_); |
716 EXPECT_EQ(2, view()->history_page_ids_[1]); | 718 EXPECT_EQ(2, view()->history_page_ids_[1]); |
717 | 719 |
718 // Check for a valid UpdateState message for page A. | 720 // Check for a valid UpdateState message for page A. |
719 ProcessPendingMessages(); | 721 ProcessPendingMessages(); |
720 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 722 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
721 ViewHostMsg_UpdateState::ID); | 723 ViewHostMsg_UpdateState::ID); |
722 ASSERT_TRUE(msg_A); | 724 ASSERT_TRUE(msg_A); |
723 int page_id_A; | 725 ViewHostMsg_UpdateState::Param param; |
724 PageState state_A; | 726 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
725 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); | 727 int page_id_A = param.a; |
| 728 PageState state_A = param.b; |
726 EXPECT_EQ(1, page_id_A); | 729 EXPECT_EQ(1, page_id_A); |
727 render_thread_->sink().ClearMessages(); | 730 render_thread_->sink().ClearMessages(); |
728 | 731 |
729 // Back to page A (page_id 1) and commit. | 732 // Back to page A (page_id 1) and commit. |
730 FrameMsg_Navigate_Params params_A; | 733 FrameMsg_Navigate_Params params_A; |
731 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 734 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
732 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; | 735 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; |
733 params_A.current_history_list_length = 2; | 736 params_A.current_history_list_length = 2; |
734 params_A.current_history_list_offset = 1; | 737 params_A.current_history_list_offset = 1; |
735 params_A.pending_history_list_offset = 0; | 738 params_A.pending_history_list_offset = 0; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 LoadHTML("<div>Page B</div>"); | 781 LoadHTML("<div>Page B</div>"); |
779 EXPECT_EQ(2, view()->history_list_length_); | 782 EXPECT_EQ(2, view()->history_list_length_); |
780 EXPECT_EQ(1, view()->history_list_offset_); | 783 EXPECT_EQ(1, view()->history_list_offset_); |
781 EXPECT_EQ(2, view()->history_page_ids_[1]); | 784 EXPECT_EQ(2, view()->history_page_ids_[1]); |
782 | 785 |
783 // Check for a valid UpdateState message for page A. | 786 // Check for a valid UpdateState message for page A. |
784 ProcessPendingMessages(); | 787 ProcessPendingMessages(); |
785 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 788 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
786 ViewHostMsg_UpdateState::ID); | 789 ViewHostMsg_UpdateState::ID); |
787 ASSERT_TRUE(msg_A); | 790 ASSERT_TRUE(msg_A); |
788 int page_id_A; | 791 ViewHostMsg_UpdateState::Param param; |
789 PageState state_A; | 792 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
790 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); | 793 int page_id_A = param.a; |
| 794 PageState state_A = param.b; |
791 EXPECT_EQ(1, page_id_A); | 795 EXPECT_EQ(1, page_id_A); |
792 render_thread_->sink().ClearMessages(); | 796 render_thread_->sink().ClearMessages(); |
793 | 797 |
794 // Load page C, which will trigger an UpdateState message for page B. | 798 // Load page C, which will trigger an UpdateState message for page B. |
795 LoadHTML("<div>Page C</div>"); | 799 LoadHTML("<div>Page C</div>"); |
796 EXPECT_EQ(3, view()->history_list_length_); | 800 EXPECT_EQ(3, view()->history_list_length_); |
797 EXPECT_EQ(2, view()->history_list_offset_); | 801 EXPECT_EQ(2, view()->history_list_offset_); |
798 EXPECT_EQ(3, view()->history_page_ids_[2]); | 802 EXPECT_EQ(3, view()->history_page_ids_[2]); |
799 | 803 |
800 // Check for a valid UpdateState message for page B. | 804 // Check for a valid UpdateState message for page B. |
801 ProcessPendingMessages(); | 805 ProcessPendingMessages(); |
802 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( | 806 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( |
803 ViewHostMsg_UpdateState::ID); | 807 ViewHostMsg_UpdateState::ID); |
804 ASSERT_TRUE(msg_B); | 808 ASSERT_TRUE(msg_B); |
805 int page_id_B; | 809 ViewHostMsg_UpdateState::Read(msg_B, ¶m); |
806 PageState state_B; | 810 int page_id_B = param.a; |
807 ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B); | 811 PageState state_B = param.b; |
808 EXPECT_EQ(2, page_id_B); | 812 EXPECT_EQ(2, page_id_B); |
809 render_thread_->sink().ClearMessages(); | 813 render_thread_->sink().ClearMessages(); |
810 | 814 |
811 // Suppose the browser has limited the number of NavigationEntries to 2. | 815 // Suppose the browser has limited the number of NavigationEntries to 2. |
812 // It has now dropped the first entry, but the renderer isn't notified. | 816 // It has now dropped the first entry, but the renderer isn't notified. |
813 // Ensure that going back to page B (page_id 2) at offset 0 is successful. | 817 // Ensure that going back to page B (page_id 2) at offset 0 is successful. |
814 FrameMsg_Navigate_Params params_B; | 818 FrameMsg_Navigate_Params params_B; |
815 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 819 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
816 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; | 820 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; |
817 params_B.current_history_list_length = 2; | 821 params_B.current_history_list_length = 2; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 ExecuteJavaScript("document.getElementById('test1').focus();"); | 892 ExecuteJavaScript("document.getElementById('test1').focus();"); |
889 ProcessPendingMessages(); | 893 ProcessPendingMessages(); |
890 render_thread_->sink().ClearMessages(); | 894 render_thread_->sink().ClearMessages(); |
891 | 895 |
892 // Update the IME status and verify if our IME backend sends an IPC message | 896 // Update the IME status and verify if our IME backend sends an IPC message |
893 // to activate IMEs. | 897 // to activate IMEs. |
894 view()->UpdateTextInputType(); | 898 view()->UpdateTextInputType(); |
895 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); | 899 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); |
896 EXPECT_TRUE(msg != NULL); | 900 EXPECT_TRUE(msg != NULL); |
897 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 901 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
898 ui::TextInputType type; | 902 ViewHostMsg_TextInputTypeChanged::Param params; |
899 bool can_compose_inline = false; | 903 ViewHostMsg_TextInputTypeChanged::Read(msg, ¶ms); |
900 ui::TextInputMode input_mode = ui::TEXT_INPUT_MODE_DEFAULT; | 904 ui::TextInputType type = params.a; |
901 ViewHostMsg_TextInputTypeChanged::Read(msg, | 905 ui::TextInputMode input_mode = params.b; |
902 &type, | 906 bool can_compose_inline = params.c; |
903 &input_mode, | |
904 &can_compose_inline); | |
905 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, type); | 907 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, type); |
906 EXPECT_EQ(true, can_compose_inline); | 908 EXPECT_EQ(true, can_compose_inline); |
907 | 909 |
908 // Move the input focus to the second <input> element, where we should | 910 // Move the input focus to the second <input> element, where we should |
909 // de-activate IMEs. | 911 // de-activate IMEs. |
910 ExecuteJavaScript("document.getElementById('test2').focus();"); | 912 ExecuteJavaScript("document.getElementById('test2').focus();"); |
911 ProcessPendingMessages(); | 913 ProcessPendingMessages(); |
912 render_thread_->sink().ClearMessages(); | 914 render_thread_->sink().ClearMessages(); |
913 | 915 |
914 // Update the IME status and verify if our IME backend sends an IPC message | 916 // Update the IME status and verify if our IME backend sends an IPC message |
915 // to de-activate IMEs. | 917 // to de-activate IMEs. |
916 view()->UpdateTextInputType(); | 918 view()->UpdateTextInputType(); |
917 msg = render_thread_->sink().GetMessageAt(0); | 919 msg = render_thread_->sink().GetMessageAt(0); |
918 EXPECT_TRUE(msg != NULL); | 920 EXPECT_TRUE(msg != NULL); |
919 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 921 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
920 ViewHostMsg_TextInputTypeChanged::Read(msg, | 922 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); |
921 &type, | 923 type = params.a; |
922 &input_mode, | 924 input_mode = params.b; |
923 &can_compose_inline); | |
924 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type); | 925 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type); |
925 | 926 |
926 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInputModeTestCases); i++) { | 927 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInputModeTestCases); i++) { |
927 const InputModeTestCase* test_case = &kInputModeTestCases[i]; | 928 const InputModeTestCase* test_case = &kInputModeTestCases[i]; |
928 std::string javascript = | 929 std::string javascript = |
929 base::StringPrintf("document.getElementById('%s').focus();", | 930 base::StringPrintf("document.getElementById('%s').focus();", |
930 test_case->input_id); | 931 test_case->input_id); |
931 // Move the input focus to the target <input> element, where we should | 932 // Move the input focus to the target <input> element, where we should |
932 // activate IMEs. | 933 // activate IMEs. |
933 ExecuteJavaScriptAndReturnIntValue(base::ASCIIToUTF16(javascript), NULL); | 934 ExecuteJavaScriptAndReturnIntValue(base::ASCIIToUTF16(javascript), NULL); |
934 ProcessPendingMessages(); | 935 ProcessPendingMessages(); |
935 render_thread_->sink().ClearMessages(); | 936 render_thread_->sink().ClearMessages(); |
936 | 937 |
937 // Update the IME status and verify if our IME backend sends an IPC | 938 // Update the IME status and verify if our IME backend sends an IPC |
938 // message to activate IMEs. | 939 // message to activate IMEs. |
939 view()->UpdateTextInputType(); | 940 view()->UpdateTextInputType(); |
940 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); | 941 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); |
941 EXPECT_TRUE(msg != NULL); | 942 EXPECT_TRUE(msg != NULL); |
942 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 943 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
943 ViewHostMsg_TextInputTypeChanged::Read(msg, | 944 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); |
944 &type, | 945 type = params.a; |
945 &input_mode, | 946 input_mode = params.b; |
946 &can_compose_inline); | |
947 EXPECT_EQ(test_case->expected_mode, input_mode); | 947 EXPECT_EQ(test_case->expected_mode, input_mode); |
948 } | 948 } |
949 } | 949 } |
950 } | 950 } |
951 | 951 |
952 // Test that our IME backend can compose CJK words. | 952 // Test that our IME backend can compose CJK words. |
953 // Our IME front-end sends many platform-independent messages to the IME backend | 953 // Our IME front-end sends many platform-independent messages to the IME backend |
954 // while it composes CJK words. This test sends the minimal messages captured | 954 // while it composes CJK words. This test sends the minimal messages captured |
955 // on my local environment directly to the IME backend to verify if the backend | 955 // on my local environment directly to the IME backend to verify if the backend |
956 // can compose CJK words without any problems. | 956 // can compose CJK words without any problems. |
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2361 view()->renderer_accessibility()->GetType()); | 2361 view()->renderer_accessibility()->GetType()); |
2362 | 2362 |
2363 view()->OnSetAccessibilityMode(AccessibilityModeEditableTextOnly); | 2363 view()->OnSetAccessibilityMode(AccessibilityModeEditableTextOnly); |
2364 ASSERT_EQ(AccessibilityModeEditableTextOnly, view()->accessibility_mode()); | 2364 ASSERT_EQ(AccessibilityModeEditableTextOnly, view()->accessibility_mode()); |
2365 ASSERT_NE((RendererAccessibility*) NULL, view()->renderer_accessibility()); | 2365 ASSERT_NE((RendererAccessibility*) NULL, view()->renderer_accessibility()); |
2366 ASSERT_EQ(RendererAccessibilityTypeFocusOnly, | 2366 ASSERT_EQ(RendererAccessibilityTypeFocusOnly, |
2367 view()->renderer_accessibility()->GetType()); | 2367 view()->renderer_accessibility()->GetType()); |
2368 } | 2368 } |
2369 | 2369 |
2370 } // namespace content | 2370 } // namespace content |
OLD | NEW |