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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebViewTest.cpp

Issue 2508363003: [refactor] - Move textInputInfo() and textInputType() from WebWidget to WebInputMethodController (Closed)
Patch Set: Created 4 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 testAutoResize(minAutoResize, maxAutoResize, pageWidth, pageHeight, 744 testAutoResize(minAutoResize, maxAutoResize, pageWidth, pageHeight,
745 expectedWidth, expectedHeight, NoHorizontalScrollbar, 745 expectedWidth, expectedHeight, NoHorizontalScrollbar,
746 NoVerticalScrollbar); 746 NoVerticalScrollbar);
747 } 747 }
748 748
749 void WebViewTest::testTextInputType(WebTextInputType expectedType, 749 void WebViewTest::testTextInputType(WebTextInputType expectedType,
750 const std::string& htmlFile) { 750 const std::string& htmlFile) {
751 URLTestHelpers::registerMockedURLFromBaseURL( 751 URLTestHelpers::registerMockedURLFromBaseURL(
752 WebString::fromUTF8(m_baseURL.c_str()), 752 WebString::fromUTF8(m_baseURL.c_str()),
753 WebString::fromUTF8(htmlFile.c_str())); 753 WebString::fromUTF8(htmlFile.c_str()));
754 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); 754 WebViewImpl* webView =
755 EXPECT_EQ(WebTextInputTypeNone, webView->textInputType()); 755 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile);
756 EXPECT_EQ(WebTextInputTypeNone, webView->textInputInfo().type); 756 WebInputMethodControllerImpl* controller =
757 webView->mainFrameImpl()->inputMethodController();
758 EXPECT_EQ(WebTextInputTypeNone, controller->textInputType());
759 EXPECT_EQ(WebTextInputTypeNone, controller->textInputInfo().type);
757 webView->setInitialFocus(false); 760 webView->setInitialFocus(false);
758 EXPECT_EQ(expectedType, webView->textInputType()); 761 EXPECT_EQ(expectedType, controller->textInputType());
759 EXPECT_EQ(expectedType, webView->textInputInfo().type); 762 EXPECT_EQ(expectedType, controller->textInputInfo().type);
760 webView->clearFocusedElement(); 763 webView->clearFocusedElement();
761 EXPECT_EQ(WebTextInputTypeNone, webView->textInputType()); 764 EXPECT_EQ(WebTextInputTypeNone, controller->textInputType());
762 EXPECT_EQ(WebTextInputTypeNone, webView->textInputInfo().type); 765 EXPECT_EQ(WebTextInputTypeNone, controller->textInputInfo().type);
763 } 766 }
764 767
765 TEST_P(WebViewTest, TextInputType) { 768 TEST_P(WebViewTest, TextInputType) {
766 testTextInputType(WebTextInputTypeText, "input_field_default.html"); 769 testTextInputType(WebTextInputTypeText, "input_field_default.html");
767 testTextInputType(WebTextInputTypePassword, "input_field_password.html"); 770 testTextInputType(WebTextInputTypePassword, "input_field_password.html");
768 testTextInputType(WebTextInputTypeEmail, "input_field_email.html"); 771 testTextInputType(WebTextInputTypeEmail, "input_field_email.html");
769 testTextInputType(WebTextInputTypeSearch, "input_field_search.html"); 772 testTextInputType(WebTextInputTypeSearch, "input_field_search.html");
770 testTextInputType(WebTextInputTypeNumber, "input_field_number.html"); 773 testTextInputType(WebTextInputTypeNumber, "input_field_number.html");
771 testTextInputType(WebTextInputTypeTelephone, "input_field_tel.html"); 774 testTextInputType(WebTextInputTypeTelephone, "input_field_tel.html");
772 testTextInputType(WebTextInputTypeURL, "input_field_url.html"); 775 testTextInputType(WebTextInputTypeURL, "input_field_url.html");
(...skipping 21 matching lines...) Expand all
794 baseURL); 797 baseURL);
795 webViewImpl->setInitialFocus(false); 798 webViewImpl->setInitialFocus(false);
796 799
797 // Add id="foo" to <path>, thus triggering the condition described above. 800 // Add id="foo" to <path>, thus triggering the condition described above.
798 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); 801 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
799 document->body() 802 document->body()
800 ->querySelector("path", ASSERT_NO_EXCEPTION) 803 ->querySelector("path", ASSERT_NO_EXCEPTION)
801 ->setIdAttribute("foo"); 804 ->setIdAttribute("foo");
802 805
803 // This should not DCHECK. 806 // This should not DCHECK.
804 EXPECT_EQ(WebTextInputTypeText, webViewImpl->textInputInfo().type); 807 EXPECT_EQ(WebTextInputTypeText, webViewImpl->mainFrameImpl()
808 ->inputMethodController()
809 ->textInputInfo()
810 .type);
805 } 811 }
806 812
807 void WebViewTest::testInputMode(WebTextInputMode expectedInputMode, 813 void WebViewTest::testInputMode(WebTextInputMode expectedInputMode,
808 const std::string& htmlFile) { 814 const std::string& htmlFile) {
809 URLTestHelpers::registerMockedURLFromBaseURL( 815 URLTestHelpers::registerMockedURLFromBaseURL(
810 WebString::fromUTF8(m_baseURL.c_str()), 816 WebString::fromUTF8(m_baseURL.c_str()),
811 WebString::fromUTF8(htmlFile.c_str())); 817 WebString::fromUTF8(htmlFile.c_str()));
812 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); 818 WebViewImpl* webViewImpl =
813 webView->setInitialFocus(false); 819 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile);
814 EXPECT_EQ(expectedInputMode, webView->textInputInfo().inputMode); 820 webViewImpl->setInitialFocus(false);
821 EXPECT_EQ(expectedInputMode, webViewImpl->mainFrameImpl()
822 ->inputMethodController()
823 ->textInputInfo()
824 .inputMode);
815 } 825 }
816 826
817 TEST_P(WebViewTest, InputMode) { 827 TEST_P(WebViewTest, InputMode) {
818 testInputMode(WebTextInputMode::kWebTextInputModeDefault, 828 testInputMode(WebTextInputMode::kWebTextInputModeDefault,
819 "input_mode_default.html"); 829 "input_mode_default.html");
820 testInputMode(WebTextInputMode::kWebTextInputModeDefault, 830 testInputMode(WebTextInputMode::kWebTextInputModeDefault,
821 "input_mode_default_unknown.html"); 831 "input_mode_default_unknown.html");
822 testInputMode(WebTextInputMode::kWebTextInputModeVerbatim, 832 testInputMode(WebTextInputMode::kWebTextInputModeVerbatim,
823 "input_mode_default_verbatim.html"); 833 "input_mode_default_verbatim.html");
824 testInputMode(WebTextInputMode::kWebTextInputModeVerbatim, 834 testInputMode(WebTextInputMode::kWebTextInputModeVerbatim,
(...skipping 24 matching lines...) Expand all
849 "input_mode_type_email.html"); 859 "input_mode_type_email.html");
850 testInputMode(WebTextInputMode::kWebTextInputModeUrl, 860 testInputMode(WebTextInputMode::kWebTextInputModeUrl,
851 "input_mode_type_url.html"); 861 "input_mode_type_url.html");
852 } 862 }
853 863
854 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) { 864 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) {
855 std::string url = m_baseURL + "div_with_image.html"; 865 std::string url = m_baseURL + "div_with_image.html";
856 URLTestHelpers::registerMockedURLLoad(toKURL(url), "div_with_image.html"); 866 URLTestHelpers::registerMockedURLLoad(toKURL(url), "div_with_image.html");
857 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"), 867 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"),
858 "white-1x1.png"); 868 "white-1x1.png");
859 WebView* webView = m_webViewHelper.initializeAndLoad(url); 869 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url);
860 webView->setInitialFocus(false); 870 webViewImpl->setInitialFocus(false);
861 WebTextInputInfo info = webView->textInputInfo(); 871 WebTextInputInfo info =
872 webViewImpl->mainFrameImpl()->inputMethodController()->textInputInfo();
862 873
863 EXPECT_EQ("foo\xef\xbf\xbc", info.value.utf8()); 874 EXPECT_EQ("foo\xef\xbf\xbc", info.value.utf8());
864 } 875 }
865 876
866 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) { 877 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) {
867 URLTestHelpers::registerMockedURLFromBaseURL( 878 URLTestHelpers::registerMockedURLFromBaseURL(
868 WebString::fromUTF8(m_baseURL.c_str()), 879 WebString::fromUTF8(m_baseURL.c_str()),
869 WebString::fromUTF8("input_field_populated.html")); 880 WebString::fromUTF8("input_field_populated.html"));
870 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 881 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
871 m_baseURL + "input_field_populated.html"); 882 m_baseURL + "input_field_populated.html");
872 webView->setInitialFocus(false); 883 webView->setInitialFocus(false);
873 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 884 WebLocalFrameImpl* frame = webView->mainFrameImpl();
885 WebInputMethodControllerImpl* activeInputMethodController =
886 frame->inputMethodController();
874 frame->setEditableSelectionOffsets(5, 13); 887 frame->setEditableSelectionOffsets(5, 13);
875 EXPECT_EQ("56789abc", frame->selectionAsText()); 888 EXPECT_EQ("56789abc", frame->selectionAsText());
876 WebTextInputInfo info = webView->textInputInfo(); 889 WebTextInputInfo info = activeInputMethodController->textInputInfo();
877 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); 890 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value);
878 EXPECT_EQ(5, info.selectionStart); 891 EXPECT_EQ(5, info.selectionStart);
879 EXPECT_EQ(13, info.selectionEnd); 892 EXPECT_EQ(13, info.selectionEnd);
880 EXPECT_EQ(-1, info.compositionStart); 893 EXPECT_EQ(-1, info.compositionStart);
881 EXPECT_EQ(-1, info.compositionEnd); 894 EXPECT_EQ(-1, info.compositionEnd);
882 895
883 URLTestHelpers::registerMockedURLFromBaseURL( 896 URLTestHelpers::registerMockedURLFromBaseURL(
884 WebString::fromUTF8(m_baseURL.c_str()), 897 WebString::fromUTF8(m_baseURL.c_str()),
885 WebString::fromUTF8("content_editable_populated.html")); 898 WebString::fromUTF8("content_editable_populated.html"));
886 webView = m_webViewHelper.initializeAndLoad( 899 webView = m_webViewHelper.initializeAndLoad(
887 m_baseURL + "content_editable_populated.html"); 900 m_baseURL + "content_editable_populated.html");
888 webView->setInitialFocus(false); 901 webView->setInitialFocus(false);
889 frame = webView->mainFrameImpl(); 902 frame = webView->mainFrameImpl();
890 frame->setEditableSelectionOffsets(8, 19); 903 frame->setEditableSelectionOffsets(8, 19);
891 EXPECT_EQ("89abcdefghi", frame->selectionAsText()); 904 EXPECT_EQ("89abcdefghi", frame->selectionAsText());
892 info = webView->textInputInfo(); 905 info = activeInputMethodController->textInputInfo();
893 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); 906 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value);
894 EXPECT_EQ(8, info.selectionStart); 907 EXPECT_EQ(8, info.selectionStart);
895 EXPECT_EQ(19, info.selectionEnd); 908 EXPECT_EQ(19, info.selectionEnd);
896 EXPECT_EQ(-1, info.compositionStart); 909 EXPECT_EQ(-1, info.compositionStart);
897 EXPECT_EQ(-1, info.compositionEnd); 910 EXPECT_EQ(-1, info.compositionEnd);
898 } 911 }
899 912
900 // Regression test for crbug.com/663645 913 // Regression test for crbug.com/663645
901 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) { 914 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) {
902 URLTestHelpers::registerMockedURLFromBaseURL( 915 URLTestHelpers::registerMockedURLFromBaseURL(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 std::string compositionText("hello"); 954 std::string compositionText("hello");
942 955
943 WebInputMethodController* activeInputMethodController = 956 WebInputMethodController* activeInputMethodController =
944 webView->mainFrameImpl() 957 webView->mainFrameImpl()
945 ->frameWidget() 958 ->frameWidget()
946 ->getActiveWebInputMethodController(); 959 ->getActiveWebInputMethodController();
947 WebVector<WebCompositionUnderline> emptyUnderlines; 960 WebVector<WebCompositionUnderline> emptyUnderlines;
948 activeInputMethodController->setComposition( 961 activeInputMethodController->setComposition(
949 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3); 962 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3);
950 963
951 WebTextInputInfo info = webView->textInputInfo(); 964 WebTextInputInfo info = activeInputMethodController->textInputInfo();
952 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 965 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
953 EXPECT_EQ(3, info.selectionStart); 966 EXPECT_EQ(3, info.selectionStart);
954 EXPECT_EQ(3, info.selectionEnd); 967 EXPECT_EQ(3, info.selectionEnd);
955 EXPECT_EQ(0, info.compositionStart); 968 EXPECT_EQ(0, info.compositionStart);
956 EXPECT_EQ(5, info.compositionEnd); 969 EXPECT_EQ(5, info.compositionEnd);
957 970
958 activeInputMethodController->finishComposingText( 971 activeInputMethodController->finishComposingText(
959 WebInputMethodController::KeepSelection); 972 WebInputMethodController::KeepSelection);
960 info = webView->textInputInfo(); 973 info = activeInputMethodController->textInputInfo();
961 EXPECT_EQ(3, info.selectionStart); 974 EXPECT_EQ(3, info.selectionStart);
962 EXPECT_EQ(3, info.selectionEnd); 975 EXPECT_EQ(3, info.selectionEnd);
963 EXPECT_EQ(-1, info.compositionStart); 976 EXPECT_EQ(-1, info.compositionStart);
964 EXPECT_EQ(-1, info.compositionEnd); 977 EXPECT_EQ(-1, info.compositionEnd);
965 978
966 activeInputMethodController->setComposition( 979 activeInputMethodController->setComposition(
967 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3); 980 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3);
968 info = webView->textInputInfo(); 981 info = activeInputMethodController->textInputInfo();
969 EXPECT_EQ("helhellolo", std::string(info.value.utf8().data())); 982 EXPECT_EQ("helhellolo", std::string(info.value.utf8().data()));
970 EXPECT_EQ(6, info.selectionStart); 983 EXPECT_EQ(6, info.selectionStart);
971 EXPECT_EQ(6, info.selectionEnd); 984 EXPECT_EQ(6, info.selectionEnd);
972 EXPECT_EQ(3, info.compositionStart); 985 EXPECT_EQ(3, info.compositionStart);
973 EXPECT_EQ(8, info.compositionEnd); 986 EXPECT_EQ(8, info.compositionEnd);
974 987
975 activeInputMethodController->finishComposingText( 988 activeInputMethodController->finishComposingText(
976 WebInputMethodController::DoNotKeepSelection); 989 WebInputMethodController::DoNotKeepSelection);
977 info = webView->textInputInfo(); 990 info = activeInputMethodController->textInputInfo();
978 EXPECT_EQ(8, info.selectionStart); 991 EXPECT_EQ(8, info.selectionStart);
979 EXPECT_EQ(8, info.selectionEnd); 992 EXPECT_EQ(8, info.selectionEnd);
980 EXPECT_EQ(-1, info.compositionStart); 993 EXPECT_EQ(-1, info.compositionStart);
981 EXPECT_EQ(-1, info.compositionEnd); 994 EXPECT_EQ(-1, info.compositionEnd);
982 } 995 }
983 996
984 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) { 997 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) {
985 URLTestHelpers::registerMockedURLFromBaseURL( 998 URLTestHelpers::registerMockedURLFromBaseURL(
986 WebString::fromUTF8(m_baseURL.c_str()), 999 WebString::fromUTF8(m_baseURL.c_str()),
987 WebString::fromUTF8("input_field_populated.html")); 1000 WebString::fromUTF8("input_field_populated.html"));
988 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1001 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
989 m_baseURL + "input_field_populated.html"); 1002 m_baseURL + "input_field_populated.html");
990 webView->setInitialFocus(false); 1003 webView->setInitialFocus(false);
991 WebInputMethodController* activeInputMethodController = 1004 WebInputMethodController* activeInputMethodController =
992 webView->mainFrameImpl() 1005 webView->mainFrameImpl()
993 ->frameWidget() 1006 ->frameWidget()
994 ->getActiveWebInputMethodController(); 1007 ->getActiveWebInputMethodController();
995 1008
996 activeInputMethodController->commitText("hello", 0); 1009 activeInputMethodController->commitText("hello", 0);
997 activeInputMethodController->commitText("world", -5); 1010 activeInputMethodController->commitText("world", -5);
998 WebTextInputInfo info = webView->textInputInfo(); 1011 WebTextInputInfo info = activeInputMethodController->textInputInfo();
999 EXPECT_EQ("helloworld", std::string(info.value.utf8().data())); 1012 EXPECT_EQ("helloworld", std::string(info.value.utf8().data()));
1000 EXPECT_EQ(5, info.selectionStart); 1013 EXPECT_EQ(5, info.selectionStart);
1001 EXPECT_EQ(5, info.selectionEnd); 1014 EXPECT_EQ(5, info.selectionEnd);
1002 EXPECT_EQ(-1, info.compositionStart); 1015 EXPECT_EQ(-1, info.compositionStart);
1003 EXPECT_EQ(-1, info.compositionEnd); 1016 EXPECT_EQ(-1, info.compositionEnd);
1004 1017
1005 WebVector<WebCompositionUnderline> emptyUnderlines; 1018 WebVector<WebCompositionUnderline> emptyUnderlines;
1006 // Set up a composition that needs to be committed. 1019 // Set up a composition that needs to be committed.
1007 std::string compositionText("ABC"); 1020 std::string compositionText("ABC");
1008 1021
1009 // Caret is on the left of composing text. 1022 // Caret is on the left of composing text.
1010 activeInputMethodController->setComposition( 1023 activeInputMethodController->setComposition(
1011 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 0, 0); 1024 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 0, 0);
1012 info = webView->textInputInfo(); 1025 info = activeInputMethodController->textInputInfo();
1013 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1026 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1014 EXPECT_EQ(5, info.selectionStart); 1027 EXPECT_EQ(5, info.selectionStart);
1015 EXPECT_EQ(5, info.selectionEnd); 1028 EXPECT_EQ(5, info.selectionEnd);
1016 EXPECT_EQ(5, info.compositionStart); 1029 EXPECT_EQ(5, info.compositionStart);
1017 EXPECT_EQ(8, info.compositionEnd); 1030 EXPECT_EQ(8, info.compositionEnd);
1018 1031
1019 // Caret is on the right of composing text. 1032 // Caret is on the right of composing text.
1020 activeInputMethodController->setComposition( 1033 activeInputMethodController->setComposition(
1021 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3); 1034 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 3, 3);
1022 info = webView->textInputInfo(); 1035 info = activeInputMethodController->textInputInfo();
1023 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1036 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1024 EXPECT_EQ(8, info.selectionStart); 1037 EXPECT_EQ(8, info.selectionStart);
1025 EXPECT_EQ(8, info.selectionEnd); 1038 EXPECT_EQ(8, info.selectionEnd);
1026 EXPECT_EQ(5, info.compositionStart); 1039 EXPECT_EQ(5, info.compositionStart);
1027 EXPECT_EQ(8, info.compositionEnd); 1040 EXPECT_EQ(8, info.compositionEnd);
1028 1041
1029 // Caret is between composing text and left boundary. 1042 // Caret is between composing text and left boundary.
1030 activeInputMethodController->setComposition( 1043 activeInputMethodController->setComposition(
1031 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -2, -2); 1044 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -2, -2);
1032 info = webView->textInputInfo(); 1045 info = activeInputMethodController->textInputInfo();
1033 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1046 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1034 EXPECT_EQ(3, info.selectionStart); 1047 EXPECT_EQ(3, info.selectionStart);
1035 EXPECT_EQ(3, info.selectionEnd); 1048 EXPECT_EQ(3, info.selectionEnd);
1036 EXPECT_EQ(5, info.compositionStart); 1049 EXPECT_EQ(5, info.compositionStart);
1037 EXPECT_EQ(8, info.compositionEnd); 1050 EXPECT_EQ(8, info.compositionEnd);
1038 1051
1039 // Caret is between composing text and right boundary. 1052 // Caret is between composing text and right boundary.
1040 activeInputMethodController->setComposition( 1053 activeInputMethodController->setComposition(
1041 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 5, 5); 1054 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 5, 5);
1042 info = webView->textInputInfo(); 1055 info = activeInputMethodController->textInputInfo();
1043 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1056 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1044 EXPECT_EQ(10, info.selectionStart); 1057 EXPECT_EQ(10, info.selectionStart);
1045 EXPECT_EQ(10, info.selectionEnd); 1058 EXPECT_EQ(10, info.selectionEnd);
1046 EXPECT_EQ(5, info.compositionStart); 1059 EXPECT_EQ(5, info.compositionStart);
1047 EXPECT_EQ(8, info.compositionEnd); 1060 EXPECT_EQ(8, info.compositionEnd);
1048 1061
1049 // Caret is on the left boundary. 1062 // Caret is on the left boundary.
1050 activeInputMethodController->setComposition( 1063 activeInputMethodController->setComposition(
1051 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -5, -5); 1064 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -5, -5);
1052 info = webView->textInputInfo(); 1065 info = activeInputMethodController->textInputInfo();
1053 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1066 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1054 EXPECT_EQ(0, info.selectionStart); 1067 EXPECT_EQ(0, info.selectionStart);
1055 EXPECT_EQ(0, info.selectionEnd); 1068 EXPECT_EQ(0, info.selectionEnd);
1056 EXPECT_EQ(5, info.compositionStart); 1069 EXPECT_EQ(5, info.compositionStart);
1057 EXPECT_EQ(8, info.compositionEnd); 1070 EXPECT_EQ(8, info.compositionEnd);
1058 1071
1059 // Caret is on the right boundary. 1072 // Caret is on the right boundary.
1060 activeInputMethodController->setComposition( 1073 activeInputMethodController->setComposition(
1061 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 8, 8); 1074 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 8, 8);
1062 info = webView->textInputInfo(); 1075 info = activeInputMethodController->textInputInfo();
1063 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1076 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1064 EXPECT_EQ(13, info.selectionStart); 1077 EXPECT_EQ(13, info.selectionStart);
1065 EXPECT_EQ(13, info.selectionEnd); 1078 EXPECT_EQ(13, info.selectionEnd);
1066 EXPECT_EQ(5, info.compositionStart); 1079 EXPECT_EQ(5, info.compositionStart);
1067 EXPECT_EQ(8, info.compositionEnd); 1080 EXPECT_EQ(8, info.compositionEnd);
1068 1081
1069 // Caret exceeds the left boundary. 1082 // Caret exceeds the left boundary.
1070 activeInputMethodController->setComposition( 1083 activeInputMethodController->setComposition(
1071 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -100, 1084 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, -100,
1072 -100); 1085 -100);
1073 info = webView->textInputInfo(); 1086 info = activeInputMethodController->textInputInfo();
1074 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1087 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1075 EXPECT_EQ(0, info.selectionStart); 1088 EXPECT_EQ(0, info.selectionStart);
1076 EXPECT_EQ(0, info.selectionEnd); 1089 EXPECT_EQ(0, info.selectionEnd);
1077 EXPECT_EQ(5, info.compositionStart); 1090 EXPECT_EQ(5, info.compositionStart);
1078 EXPECT_EQ(8, info.compositionEnd); 1091 EXPECT_EQ(8, info.compositionEnd);
1079 1092
1080 // Caret exceeds the right boundary. 1093 // Caret exceeds the right boundary.
1081 activeInputMethodController->setComposition( 1094 activeInputMethodController->setComposition(
1082 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 100, 100); 1095 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 100, 100);
1083 info = webView->textInputInfo(); 1096 info = activeInputMethodController->textInputInfo();
1084 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); 1097 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data()));
1085 EXPECT_EQ(13, info.selectionStart); 1098 EXPECT_EQ(13, info.selectionStart);
1086 EXPECT_EQ(13, info.selectionEnd); 1099 EXPECT_EQ(13, info.selectionEnd);
1087 EXPECT_EQ(5, info.compositionStart); 1100 EXPECT_EQ(5, info.compositionStart);
1088 EXPECT_EQ(8, info.compositionEnd); 1101 EXPECT_EQ(8, info.compositionEnd);
1089 } 1102 }
1090 1103
1091 TEST_P(WebViewTest, SetCompositionWithEmptyText) { 1104 TEST_P(WebViewTest, SetCompositionWithEmptyText) {
1092 URLTestHelpers::registerMockedURLFromBaseURL( 1105 URLTestHelpers::registerMockedURLFromBaseURL(
1093 WebString::fromUTF8(m_baseURL.c_str()), 1106 WebString::fromUTF8(m_baseURL.c_str()),
1094 WebString::fromUTF8("input_field_populated.html")); 1107 WebString::fromUTF8("input_field_populated.html"));
1095 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1108 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
1096 m_baseURL + "input_field_populated.html"); 1109 m_baseURL + "input_field_populated.html");
1097 webView->setInitialFocus(false); 1110 webView->setInitialFocus(false);
1098 WebInputMethodController* activeInputMethodController = 1111 WebInputMethodController* activeInputMethodController =
1099 webView->mainFrameImpl() 1112 webView->mainFrameImpl()
1100 ->frameWidget() 1113 ->frameWidget()
1101 ->getActiveWebInputMethodController(); 1114 ->getActiveWebInputMethodController();
1102 1115
1103 activeInputMethodController->commitText("hello", 0); 1116 activeInputMethodController->commitText("hello", 0);
1104 WebTextInputInfo info = webView->textInputInfo(); 1117 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1105 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1118 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1106 EXPECT_EQ(5, info.selectionStart); 1119 EXPECT_EQ(5, info.selectionStart);
1107 EXPECT_EQ(5, info.selectionEnd); 1120 EXPECT_EQ(5, info.selectionEnd);
1108 EXPECT_EQ(-1, info.compositionStart); 1121 EXPECT_EQ(-1, info.compositionStart);
1109 EXPECT_EQ(-1, info.compositionEnd); 1122 EXPECT_EQ(-1, info.compositionEnd);
1110 1123
1111 WebVector<WebCompositionUnderline> emptyUnderlines; 1124 WebVector<WebCompositionUnderline> emptyUnderlines;
1112 1125
1113 activeInputMethodController->setComposition(WebString::fromUTF8(""), 1126 activeInputMethodController->setComposition(WebString::fromUTF8(""),
1114 emptyUnderlines, 0, 0); 1127 emptyUnderlines, 0, 0);
1115 info = webView->textInputInfo(); 1128 info = activeInputMethodController->textInputInfo();
1116 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1129 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1117 EXPECT_EQ(5, info.selectionStart); 1130 EXPECT_EQ(5, info.selectionStart);
1118 EXPECT_EQ(5, info.selectionEnd); 1131 EXPECT_EQ(5, info.selectionEnd);
1119 EXPECT_EQ(-1, info.compositionStart); 1132 EXPECT_EQ(-1, info.compositionStart);
1120 EXPECT_EQ(-1, info.compositionEnd); 1133 EXPECT_EQ(-1, info.compositionEnd);
1121 1134
1122 activeInputMethodController->setComposition(WebString::fromUTF8(""), 1135 activeInputMethodController->setComposition(WebString::fromUTF8(""),
1123 emptyUnderlines, -2, -2); 1136 emptyUnderlines, -2, -2);
1124 info = webView->textInputInfo(); 1137 info = activeInputMethodController->textInputInfo();
1125 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1138 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1126 EXPECT_EQ(3, info.selectionStart); 1139 EXPECT_EQ(3, info.selectionStart);
1127 EXPECT_EQ(3, info.selectionEnd); 1140 EXPECT_EQ(3, info.selectionEnd);
1128 EXPECT_EQ(-1, info.compositionStart); 1141 EXPECT_EQ(-1, info.compositionStart);
1129 EXPECT_EQ(-1, info.compositionEnd); 1142 EXPECT_EQ(-1, info.compositionEnd);
1130 } 1143 }
1131 1144
1132 TEST_P(WebViewTest, CommitTextForNewCaretPositions) { 1145 TEST_P(WebViewTest, CommitTextForNewCaretPositions) {
1133 URLTestHelpers::registerMockedURLFromBaseURL( 1146 URLTestHelpers::registerMockedURLFromBaseURL(
1134 WebString::fromUTF8(m_baseURL.c_str()), 1147 WebString::fromUTF8(m_baseURL.c_str()),
1135 WebString::fromUTF8("input_field_populated.html")); 1148 WebString::fromUTF8("input_field_populated.html"));
1136 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1149 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
1137 m_baseURL + "input_field_populated.html"); 1150 m_baseURL + "input_field_populated.html");
1138 webView->setInitialFocus(false); 1151 webView->setInitialFocus(false);
1139 WebInputMethodController* activeInputMethodController = 1152 WebInputMethodController* activeInputMethodController =
1140 webView->mainFrameImpl() 1153 webView->mainFrameImpl()
1141 ->frameWidget() 1154 ->frameWidget()
1142 ->getActiveWebInputMethodController(); 1155 ->getActiveWebInputMethodController();
1143 1156
1144 // Caret is on the left of composing text. 1157 // Caret is on the left of composing text.
1145 activeInputMethodController->commitText("ab", -2); 1158 activeInputMethodController->commitText("ab", -2);
1146 WebTextInputInfo info = webView->textInputInfo(); 1159 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1147 EXPECT_EQ("ab", std::string(info.value.utf8().data())); 1160 EXPECT_EQ("ab", std::string(info.value.utf8().data()));
1148 EXPECT_EQ(0, info.selectionStart); 1161 EXPECT_EQ(0, info.selectionStart);
1149 EXPECT_EQ(0, info.selectionEnd); 1162 EXPECT_EQ(0, info.selectionEnd);
1150 EXPECT_EQ(-1, info.compositionStart); 1163 EXPECT_EQ(-1, info.compositionStart);
1151 EXPECT_EQ(-1, info.compositionEnd); 1164 EXPECT_EQ(-1, info.compositionEnd);
1152 1165
1153 // Caret is on the right of composing text. 1166 // Caret is on the right of composing text.
1154 activeInputMethodController->commitText("c", 1); 1167 activeInputMethodController->commitText("c", 1);
1155 info = webView->textInputInfo(); 1168 info = activeInputMethodController->textInputInfo();
1156 EXPECT_EQ("cab", std::string(info.value.utf8().data())); 1169 EXPECT_EQ("cab", std::string(info.value.utf8().data()));
1157 EXPECT_EQ(2, info.selectionStart); 1170 EXPECT_EQ(2, info.selectionStart);
1158 EXPECT_EQ(2, info.selectionEnd); 1171 EXPECT_EQ(2, info.selectionEnd);
1159 EXPECT_EQ(-1, info.compositionStart); 1172 EXPECT_EQ(-1, info.compositionStart);
1160 EXPECT_EQ(-1, info.compositionEnd); 1173 EXPECT_EQ(-1, info.compositionEnd);
1161 1174
1162 // Caret is on the left boundary. 1175 // Caret is on the left boundary.
1163 activeInputMethodController->commitText("def", -5); 1176 activeInputMethodController->commitText("def", -5);
1164 info = webView->textInputInfo(); 1177 info = activeInputMethodController->textInputInfo();
1165 EXPECT_EQ("cadefb", std::string(info.value.utf8().data())); 1178 EXPECT_EQ("cadefb", std::string(info.value.utf8().data()));
1166 EXPECT_EQ(0, info.selectionStart); 1179 EXPECT_EQ(0, info.selectionStart);
1167 EXPECT_EQ(0, info.selectionEnd); 1180 EXPECT_EQ(0, info.selectionEnd);
1168 EXPECT_EQ(-1, info.compositionStart); 1181 EXPECT_EQ(-1, info.compositionStart);
1169 EXPECT_EQ(-1, info.compositionEnd); 1182 EXPECT_EQ(-1, info.compositionEnd);
1170 1183
1171 // Caret is on the right boundary. 1184 // Caret is on the right boundary.
1172 activeInputMethodController->commitText("g", 6); 1185 activeInputMethodController->commitText("g", 6);
1173 info = webView->textInputInfo(); 1186 info = activeInputMethodController->textInputInfo();
1174 EXPECT_EQ("gcadefb", std::string(info.value.utf8().data())); 1187 EXPECT_EQ("gcadefb", std::string(info.value.utf8().data()));
1175 EXPECT_EQ(7, info.selectionStart); 1188 EXPECT_EQ(7, info.selectionStart);
1176 EXPECT_EQ(7, info.selectionEnd); 1189 EXPECT_EQ(7, info.selectionEnd);
1177 EXPECT_EQ(-1, info.compositionStart); 1190 EXPECT_EQ(-1, info.compositionStart);
1178 EXPECT_EQ(-1, info.compositionEnd); 1191 EXPECT_EQ(-1, info.compositionEnd);
1179 1192
1180 // Caret exceeds the left boundary. 1193 // Caret exceeds the left boundary.
1181 activeInputMethodController->commitText("hi", -100); 1194 activeInputMethodController->commitText("hi", -100);
1182 info = webView->textInputInfo(); 1195 info = activeInputMethodController->textInputInfo();
1183 EXPECT_EQ("gcadefbhi", std::string(info.value.utf8().data())); 1196 EXPECT_EQ("gcadefbhi", std::string(info.value.utf8().data()));
1184 EXPECT_EQ(0, info.selectionStart); 1197 EXPECT_EQ(0, info.selectionStart);
1185 EXPECT_EQ(0, info.selectionEnd); 1198 EXPECT_EQ(0, info.selectionEnd);
1186 EXPECT_EQ(-1, info.compositionStart); 1199 EXPECT_EQ(-1, info.compositionStart);
1187 EXPECT_EQ(-1, info.compositionEnd); 1200 EXPECT_EQ(-1, info.compositionEnd);
1188 1201
1189 // Caret exceeds the right boundary. 1202 // Caret exceeds the right boundary.
1190 activeInputMethodController->commitText("jk", 100); 1203 activeInputMethodController->commitText("jk", 100);
1191 info = webView->textInputInfo(); 1204 info = activeInputMethodController->textInputInfo();
1192 EXPECT_EQ("jkgcadefbhi", std::string(info.value.utf8().data())); 1205 EXPECT_EQ("jkgcadefbhi", std::string(info.value.utf8().data()));
1193 EXPECT_EQ(11, info.selectionStart); 1206 EXPECT_EQ(11, info.selectionStart);
1194 EXPECT_EQ(11, info.selectionEnd); 1207 EXPECT_EQ(11, info.selectionEnd);
1195 EXPECT_EQ(-1, info.compositionStart); 1208 EXPECT_EQ(-1, info.compositionStart);
1196 EXPECT_EQ(-1, info.compositionEnd); 1209 EXPECT_EQ(-1, info.compositionEnd);
1197 } 1210 }
1198 1211
1199 TEST_P(WebViewTest, CommitTextWhileComposing) { 1212 TEST_P(WebViewTest, CommitTextWhileComposing) {
1200 URLTestHelpers::registerMockedURLFromBaseURL( 1213 URLTestHelpers::registerMockedURLFromBaseURL(
1201 WebString::fromUTF8(m_baseURL.c_str()), 1214 WebString::fromUTF8(m_baseURL.c_str()),
1202 WebString::fromUTF8("input_field_populated.html")); 1215 WebString::fromUTF8("input_field_populated.html"));
1203 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1216 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
1204 m_baseURL + "input_field_populated.html"); 1217 m_baseURL + "input_field_populated.html");
1205 webView->setInitialFocus(false); 1218 webView->setInitialFocus(false);
1206 WebInputMethodController* activeInputMethodController = 1219 WebInputMethodController* activeInputMethodController =
1207 webView->mainFrameImpl() 1220 webView->mainFrameImpl()
1208 ->frameWidget() 1221 ->frameWidget()
1209 ->getActiveWebInputMethodController(); 1222 ->getActiveWebInputMethodController();
1210 1223
1211 WebVector<WebCompositionUnderline> emptyUnderlines; 1224 WebVector<WebCompositionUnderline> emptyUnderlines;
1212 activeInputMethodController->setComposition(WebString::fromUTF8("abc"), 1225 activeInputMethodController->setComposition(WebString::fromUTF8("abc"),
1213 emptyUnderlines, 0, 0); 1226 emptyUnderlines, 0, 0);
1214 WebTextInputInfo info = webView->textInputInfo(); 1227 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1215 EXPECT_EQ("abc", std::string(info.value.utf8().data())); 1228 EXPECT_EQ("abc", std::string(info.value.utf8().data()));
1216 EXPECT_EQ(0, info.selectionStart); 1229 EXPECT_EQ(0, info.selectionStart);
1217 EXPECT_EQ(0, info.selectionEnd); 1230 EXPECT_EQ(0, info.selectionEnd);
1218 EXPECT_EQ(0, info.compositionStart); 1231 EXPECT_EQ(0, info.compositionStart);
1219 EXPECT_EQ(3, info.compositionEnd); 1232 EXPECT_EQ(3, info.compositionEnd);
1220 1233
1221 // Deletes ongoing composition, inserts the specified text and moves the 1234 // Deletes ongoing composition, inserts the specified text and moves the
1222 // caret. 1235 // caret.
1223 activeInputMethodController->commitText("hello", -2); 1236 activeInputMethodController->commitText("hello", -2);
1224 info = webView->textInputInfo(); 1237 info = activeInputMethodController->textInputInfo();
1225 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1238 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1226 EXPECT_EQ(3, info.selectionStart); 1239 EXPECT_EQ(3, info.selectionStart);
1227 EXPECT_EQ(3, info.selectionEnd); 1240 EXPECT_EQ(3, info.selectionEnd);
1228 EXPECT_EQ(-1, info.compositionStart); 1241 EXPECT_EQ(-1, info.compositionStart);
1229 EXPECT_EQ(-1, info.compositionEnd); 1242 EXPECT_EQ(-1, info.compositionEnd);
1230 1243
1231 activeInputMethodController->setComposition(WebString::fromUTF8("abc"), 1244 activeInputMethodController->setComposition(WebString::fromUTF8("abc"),
1232 emptyUnderlines, 0, 0); 1245 emptyUnderlines, 0, 0);
1233 info = webView->textInputInfo(); 1246 info = activeInputMethodController->textInputInfo();
1234 EXPECT_EQ("helabclo", std::string(info.value.utf8().data())); 1247 EXPECT_EQ("helabclo", std::string(info.value.utf8().data()));
1235 EXPECT_EQ(3, info.selectionStart); 1248 EXPECT_EQ(3, info.selectionStart);
1236 EXPECT_EQ(3, info.selectionEnd); 1249 EXPECT_EQ(3, info.selectionEnd);
1237 EXPECT_EQ(3, info.compositionStart); 1250 EXPECT_EQ(3, info.compositionStart);
1238 EXPECT_EQ(6, info.compositionEnd); 1251 EXPECT_EQ(6, info.compositionEnd);
1239 1252
1240 // Deletes ongoing composition and moves the caret. 1253 // Deletes ongoing composition and moves the caret.
1241 activeInputMethodController->commitText("", 2); 1254 activeInputMethodController->commitText("", 2);
1242 info = webView->textInputInfo(); 1255 info = activeInputMethodController->textInputInfo();
1243 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1256 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1244 EXPECT_EQ(5, info.selectionStart); 1257 EXPECT_EQ(5, info.selectionStart);
1245 EXPECT_EQ(5, info.selectionEnd); 1258 EXPECT_EQ(5, info.selectionEnd);
1246 EXPECT_EQ(-1, info.compositionStart); 1259 EXPECT_EQ(-1, info.compositionStart);
1247 EXPECT_EQ(-1, info.compositionEnd); 1260 EXPECT_EQ(-1, info.compositionEnd);
1248 1261
1249 // Inserts the specified text and moves the caret. 1262 // Inserts the specified text and moves the caret.
1250 activeInputMethodController->commitText("world", -5); 1263 activeInputMethodController->commitText("world", -5);
1251 info = webView->textInputInfo(); 1264 info = activeInputMethodController->textInputInfo();
1252 EXPECT_EQ("helloworld", std::string(info.value.utf8().data())); 1265 EXPECT_EQ("helloworld", std::string(info.value.utf8().data()));
1253 EXPECT_EQ(5, info.selectionStart); 1266 EXPECT_EQ(5, info.selectionStart);
1254 EXPECT_EQ(5, info.selectionEnd); 1267 EXPECT_EQ(5, info.selectionEnd);
1255 EXPECT_EQ(-1, info.compositionStart); 1268 EXPECT_EQ(-1, info.compositionStart);
1256 EXPECT_EQ(-1, info.compositionEnd); 1269 EXPECT_EQ(-1, info.compositionEnd);
1257 1270
1258 // Only moves the caret. 1271 // Only moves the caret.
1259 activeInputMethodController->commitText("", 5); 1272 activeInputMethodController->commitText("", 5);
1260 info = webView->textInputInfo(); 1273 info = activeInputMethodController->textInputInfo();
1261 EXPECT_EQ("helloworld", std::string(info.value.utf8().data())); 1274 EXPECT_EQ("helloworld", std::string(info.value.utf8().data()));
1262 EXPECT_EQ(10, info.selectionStart); 1275 EXPECT_EQ(10, info.selectionStart);
1263 EXPECT_EQ(10, info.selectionEnd); 1276 EXPECT_EQ(10, info.selectionEnd);
1264 EXPECT_EQ(-1, info.compositionStart); 1277 EXPECT_EQ(-1, info.compositionStart);
1265 EXPECT_EQ(-1, info.compositionEnd); 1278 EXPECT_EQ(-1, info.compositionEnd);
1266 } 1279 }
1267 1280
1268 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) { 1281 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) {
1269 URLTestHelpers::registerMockedURLFromBaseURL( 1282 URLTestHelpers::registerMockedURLFromBaseURL(
1270 WebString::fromUTF8(m_baseURL.c_str()), 1283 WebString::fromUTF8(m_baseURL.c_str()),
(...skipping 12 matching lines...) Expand all
1283 emptyUnderlines, 3, 3); 1296 emptyUnderlines, 3, 3);
1284 1297
1285 // Scroll the input field out of the viewport. 1298 // Scroll the input field out of the viewport.
1286 Element* element = static_cast<Element*>( 1299 Element* element = static_cast<Element*>(
1287 webView->mainFrame()->document().getElementById("btn")); 1300 webView->mainFrame()->document().getElementById("btn"));
1288 element->scrollIntoView(); 1301 element->scrollIntoView();
1289 float offsetHeight = webView->mainFrame()->scrollOffset().height; 1302 float offsetHeight = webView->mainFrame()->scrollOffset().height;
1290 EXPECT_EQ(0, webView->mainFrame()->scrollOffset().width); 1303 EXPECT_EQ(0, webView->mainFrame()->scrollOffset().width);
1291 EXPECT_LT(0, offsetHeight); 1304 EXPECT_LT(0, offsetHeight);
1292 1305
1293 WebTextInputInfo info = webView->textInputInfo(); 1306 WebTextInputInfo info = frame->inputMethodController()->textInputInfo();
1294 EXPECT_EQ("hello", std::string(info.value.utf8().data())); 1307 EXPECT_EQ("hello", std::string(info.value.utf8().data()));
1295 1308
1296 // Verify that the input field is not scrolled back into the viewport. 1309 // Verify that the input field is not scrolled back into the viewport.
1297 frame->frameWidget() 1310 frame->frameWidget()
1298 ->getActiveWebInputMethodController() 1311 ->getActiveWebInputMethodController()
1299 ->finishComposingText(WebInputMethodController::DoNotKeepSelection); 1312 ->finishComposingText(WebInputMethodController::DoNotKeepSelection);
1300 EXPECT_EQ(0, webView->mainFrame()->scrollOffset().width); 1313 EXPECT_EQ(0, webView->mainFrame()->scrollOffset().width);
1301 EXPECT_EQ(offsetHeight, webView->mainFrame()->scrollOffset().height); 1314 EXPECT_EQ(offsetHeight, webView->mainFrame()->scrollOffset().height);
1302 } 1315 }
1303 1316
1304 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) { 1317 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) {
1305 URLTestHelpers::registerMockedURLFromBaseURL( 1318 URLTestHelpers::registerMockedURLFromBaseURL(
1306 WebString::fromUTF8(m_baseURL.c_str()), 1319 WebString::fromUTF8(m_baseURL.c_str()),
1307 WebString::fromUTF8("text_area_populated.html")); 1320 WebString::fromUTF8("text_area_populated.html"));
1308 WebViewImpl* webView = 1321 WebViewImpl* webView =
1309 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); 1322 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html");
1310 webView->setInitialFocus(false); 1323 webView->setInitialFocus(false);
1311 1324
1312 WebVector<WebCompositionUnderline> emptyUnderlines; 1325 WebVector<WebCompositionUnderline> emptyUnderlines;
1313 1326
1314 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 1327 WebLocalFrameImpl* frame = webView->mainFrameImpl();
1328 WebInputMethodController* activeInputMethodController =
1329 frame->inputMethodController();
1315 frame->setEditableSelectionOffsets(4, 4); 1330 frame->setEditableSelectionOffsets(4, 4);
1316 frame->setCompositionFromExistingText(8, 12, emptyUnderlines); 1331 frame->setCompositionFromExistingText(8, 12, emptyUnderlines);
1317 1332
1318 WebTextInputInfo info = webView->textInputInfo(); 1333 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1319 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", 1334 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz",
1320 std::string(info.value.utf8().data())); 1335 std::string(info.value.utf8().data()));
1321 EXPECT_EQ(4, info.selectionStart); 1336 EXPECT_EQ(4, info.selectionStart);
1322 EXPECT_EQ(4, info.selectionEnd); 1337 EXPECT_EQ(4, info.selectionEnd);
1323 EXPECT_EQ(8, info.compositionStart); 1338 EXPECT_EQ(8, info.compositionStart);
1324 EXPECT_EQ(12, info.compositionEnd); 1339 EXPECT_EQ(12, info.compositionEnd);
1325 1340
1326 WebInputMethodController* activeInputMethodController =
1327 frame->frameWidget()->getActiveWebInputMethodController();
1328 activeInputMethodController->finishComposingText( 1341 activeInputMethodController->finishComposingText(
1329 WebInputMethodController::KeepSelection); 1342 WebInputMethodController::KeepSelection);
1330 info = webView->textInputInfo(); 1343 info = activeInputMethodController->textInputInfo();
1331 EXPECT_EQ(4, info.selectionStart); 1344 EXPECT_EQ(4, info.selectionStart);
1332 EXPECT_EQ(4, info.selectionEnd); 1345 EXPECT_EQ(4, info.selectionEnd);
1333 EXPECT_EQ(-1, info.compositionStart); 1346 EXPECT_EQ(-1, info.compositionStart);
1334 EXPECT_EQ(-1, info.compositionEnd); 1347 EXPECT_EQ(-1, info.compositionEnd);
1335 1348
1336 std::string compositionText("\n"); 1349 std::string compositionText("\n");
1337 activeInputMethodController->commitText( 1350 activeInputMethodController->commitText(
1338 WebString::fromUTF8(compositionText.c_str()), 0); 1351 WebString::fromUTF8(compositionText.c_str()), 0);
1339 info = webView->textInputInfo(); 1352 info = activeInputMethodController->textInputInfo();
1340 EXPECT_EQ(5, info.selectionStart); 1353 EXPECT_EQ(5, info.selectionStart);
1341 EXPECT_EQ(5, info.selectionEnd); 1354 EXPECT_EQ(5, info.selectionEnd);
1342 EXPECT_EQ(-1, info.compositionStart); 1355 EXPECT_EQ(-1, info.compositionStart);
1343 EXPECT_EQ(-1, info.compositionEnd); 1356 EXPECT_EQ(-1, info.compositionEnd);
1344 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz", 1357 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz",
1345 std::string(info.value.utf8().data())); 1358 std::string(info.value.utf8().data()));
1346 } 1359 }
1347 1360
1348 TEST_P(WebViewTest, ExtendSelectionAndDelete) { 1361 TEST_P(WebViewTest, ExtendSelectionAndDelete) {
1349 URLTestHelpers::registerMockedURLFromBaseURL( 1362 URLTestHelpers::registerMockedURLFromBaseURL(
1350 WebString::fromUTF8(m_baseURL.c_str()), 1363 WebString::fromUTF8(m_baseURL.c_str()),
1351 WebString::fromUTF8("input_field_populated.html")); 1364 WebString::fromUTF8("input_field_populated.html"));
1352 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1365 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
1353 m_baseURL + "input_field_populated.html"); 1366 m_baseURL + "input_field_populated.html");
1354 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 1367 WebLocalFrameImpl* frame = webView->mainFrameImpl();
1355 webView->setInitialFocus(false); 1368 webView->setInitialFocus(false);
1356 frame->setEditableSelectionOffsets(10, 10); 1369 frame->setEditableSelectionOffsets(10, 10);
1357 frame->extendSelectionAndDelete(5, 8); 1370 frame->extendSelectionAndDelete(5, 8);
1358 WebTextInputInfo info = webView->textInputInfo(); 1371 WebInputMethodController* activeInputMethodController =
1372 frame->inputMethodController();
1373 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1359 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); 1374 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data()));
1360 EXPECT_EQ(5, info.selectionStart); 1375 EXPECT_EQ(5, info.selectionStart);
1361 EXPECT_EQ(5, info.selectionEnd); 1376 EXPECT_EQ(5, info.selectionEnd);
1362 frame->extendSelectionAndDelete(10, 0); 1377 frame->extendSelectionAndDelete(10, 0);
1363 info = webView->textInputInfo(); 1378 info = activeInputMethodController->textInputInfo();
1364 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); 1379 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data()));
1365 } 1380 }
1366 1381
1367 TEST_P(WebViewTest, DeleteSurroundingText) { 1382 TEST_P(WebViewTest, DeleteSurroundingText) {
1368 URLTestHelpers::registerMockedURLFromBaseURL( 1383 URLTestHelpers::registerMockedURLFromBaseURL(
1369 WebString::fromUTF8(m_baseURL.c_str()), 1384 WebString::fromUTF8(m_baseURL.c_str()),
1370 WebString::fromUTF8("input_field_populated.html")); 1385 WebString::fromUTF8("input_field_populated.html"));
1371 WebView* webView = m_webViewHelper.initializeAndLoad( 1386 WebView* webView = m_webViewHelper.initializeAndLoad(
1372 m_baseURL + "input_field_populated.html"); 1387 m_baseURL + "input_field_populated.html");
1373 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 1388 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1389 WebInputMethodController* activeInputMethodController =
1390 frame->inputMethodController();
1374 webView->setInitialFocus(false); 1391 webView->setInitialFocus(false);
1375 1392
1376 frame->setEditableSelectionOffsets(10, 10); 1393 frame->setEditableSelectionOffsets(10, 10);
1377 frame->deleteSurroundingText(5, 8); 1394 frame->deleteSurroundingText(5, 8);
1378 WebTextInputInfo info = webView->textInputInfo(); 1395 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1379 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); 1396 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data()));
1380 EXPECT_EQ(5, info.selectionStart); 1397 EXPECT_EQ(5, info.selectionStart);
1381 EXPECT_EQ(5, info.selectionEnd); 1398 EXPECT_EQ(5, info.selectionEnd);
1382 1399
1383 frame->setEditableSelectionOffsets(5, 10); 1400 frame->setEditableSelectionOffsets(5, 10);
1384 frame->deleteSurroundingText(3, 5); 1401 frame->deleteSurroundingText(3, 5);
1385 info = webView->textInputInfo(); 1402 info = activeInputMethodController->textInputInfo();
1386 EXPECT_EQ("01ijklmstuvwxyz", std::string(info.value.utf8().data())); 1403 EXPECT_EQ("01ijklmstuvwxyz", std::string(info.value.utf8().data()));
1387 EXPECT_EQ(2, info.selectionStart); 1404 EXPECT_EQ(2, info.selectionStart);
1388 EXPECT_EQ(7, info.selectionEnd); 1405 EXPECT_EQ(7, info.selectionEnd);
1389 1406
1390 frame->setEditableSelectionOffsets(5, 5); 1407 frame->setEditableSelectionOffsets(5, 5);
1391 frame->deleteSurroundingText(10, 0); 1408 frame->deleteSurroundingText(10, 0);
1392 info = webView->textInputInfo(); 1409 info = activeInputMethodController->textInputInfo();
1393 EXPECT_EQ("lmstuvwxyz", std::string(info.value.utf8().data())); 1410 EXPECT_EQ("lmstuvwxyz", std::string(info.value.utf8().data()));
1394 EXPECT_EQ(0, info.selectionStart); 1411 EXPECT_EQ(0, info.selectionStart);
1395 EXPECT_EQ(0, info.selectionEnd); 1412 EXPECT_EQ(0, info.selectionEnd);
1396 1413
1397 frame->deleteSurroundingText(0, 20); 1414 frame->deleteSurroundingText(0, 20);
1398 info = webView->textInputInfo(); 1415 info = activeInputMethodController->textInputInfo();
1399 EXPECT_EQ("", std::string(info.value.utf8().data())); 1416 EXPECT_EQ("", std::string(info.value.utf8().data()));
1400 EXPECT_EQ(0, info.selectionStart); 1417 EXPECT_EQ(0, info.selectionStart);
1401 EXPECT_EQ(0, info.selectionEnd); 1418 EXPECT_EQ(0, info.selectionEnd);
1402 1419
1403 frame->deleteSurroundingText(10, 10); 1420 frame->deleteSurroundingText(10, 10);
1404 info = webView->textInputInfo(); 1421 info = activeInputMethodController->textInputInfo();
1405 EXPECT_EQ("", std::string(info.value.utf8().data())); 1422 EXPECT_EQ("", std::string(info.value.utf8().data()));
1406 EXPECT_EQ(0, info.selectionStart); 1423 EXPECT_EQ(0, info.selectionStart);
1407 EXPECT_EQ(0, info.selectionEnd); 1424 EXPECT_EQ(0, info.selectionEnd);
1408 } 1425 }
1409 1426
1410 TEST_P(WebViewTest, SetCompositionFromExistingText) { 1427 TEST_P(WebViewTest, SetCompositionFromExistingText) {
1411 URLTestHelpers::registerMockedURLFromBaseURL( 1428 URLTestHelpers::registerMockedURLFromBaseURL(
1412 WebString::fromUTF8(m_baseURL.c_str()), 1429 WebString::fromUTF8(m_baseURL.c_str()),
1413 WebString::fromUTF8("input_field_populated.html")); 1430 WebString::fromUTF8("input_field_populated.html"));
1414 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 1431 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
1415 m_baseURL + "input_field_populated.html"); 1432 m_baseURL + "input_field_populated.html");
1416 webView->setInitialFocus(false); 1433 webView->setInitialFocus(false);
1417 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); 1434 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1));
1418 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); 1435 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0);
1419 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 1436 WebLocalFrameImpl* frame = webView->mainFrameImpl();
1437 WebInputMethodController* activeInputMethodController =
1438 frame->inputMethodController();
1420 frame->setEditableSelectionOffsets(4, 10); 1439 frame->setEditableSelectionOffsets(4, 10);
1421 frame->setCompositionFromExistingText(8, 12, underlines); 1440 frame->setCompositionFromExistingText(8, 12, underlines);
1422 WebTextInputInfo info = webView->textInputInfo(); 1441 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1423 EXPECT_EQ(4, info.selectionStart); 1442 EXPECT_EQ(4, info.selectionStart);
1424 EXPECT_EQ(10, info.selectionEnd); 1443 EXPECT_EQ(10, info.selectionEnd);
1425 EXPECT_EQ(8, info.compositionStart); 1444 EXPECT_EQ(8, info.compositionStart);
1426 EXPECT_EQ(12, info.compositionEnd); 1445 EXPECT_EQ(12, info.compositionEnd);
1427 WebVector<WebCompositionUnderline> emptyUnderlines; 1446 WebVector<WebCompositionUnderline> emptyUnderlines;
1428 frame->setCompositionFromExistingText(0, 0, emptyUnderlines); 1447 frame->setCompositionFromExistingText(0, 0, emptyUnderlines);
1429 info = webView->textInputInfo(); 1448 info = activeInputMethodController->textInputInfo();
1430 EXPECT_EQ(4, info.selectionStart); 1449 EXPECT_EQ(4, info.selectionStart);
1431 EXPECT_EQ(10, info.selectionEnd); 1450 EXPECT_EQ(10, info.selectionEnd);
1432 EXPECT_EQ(-1, info.compositionStart); 1451 EXPECT_EQ(-1, info.compositionStart);
1433 EXPECT_EQ(-1, info.compositionEnd); 1452 EXPECT_EQ(-1, info.compositionEnd);
1434 } 1453 }
1435 1454
1436 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) { 1455 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) {
1437 URLTestHelpers::registerMockedURLFromBaseURL( 1456 URLTestHelpers::registerMockedURLFromBaseURL(
1438 WebString::fromUTF8(m_baseURL.c_str()), 1457 WebString::fromUTF8(m_baseURL.c_str()),
1439 WebString::fromUTF8("text_area_populated.html")); 1458 WebString::fromUTF8("text_area_populated.html"));
1440 WebViewImpl* webView = 1459 WebViewImpl* webView =
1441 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); 1460 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html");
1442 webView->setInitialFocus(false); 1461 webView->setInitialFocus(false);
1443 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); 1462 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1));
1444 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); 1463 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0);
1445 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 1464 WebLocalFrameImpl* frame = webView->mainFrameImpl();
1446 WebInputMethodController* activeInputMethodController = 1465 WebInputMethodController* activeInputMethodController =
1447 frame->frameWidget()->getActiveWebInputMethodController(); 1466 frame->frameWidget()->getActiveWebInputMethodController();
1448 frame->setEditableSelectionOffsets(27, 27); 1467 frame->setEditableSelectionOffsets(27, 27);
1449 std::string newLineText("\n"); 1468 std::string newLineText("\n");
1450 activeInputMethodController->commitText( 1469 activeInputMethodController->commitText(
1451 WebString::fromUTF8(newLineText.c_str()), 0); 1470 WebString::fromUTF8(newLineText.c_str()), 0);
1452 WebTextInputInfo info = webView->textInputInfo(); 1471 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1453 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz", 1472 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz",
1454 std::string(info.value.utf8().data())); 1473 std::string(info.value.utf8().data()));
1455 1474
1456 frame->setEditableSelectionOffsets(31, 31); 1475 frame->setEditableSelectionOffsets(31, 31);
1457 frame->setCompositionFromExistingText(30, 34, underlines); 1476 frame->setCompositionFromExistingText(30, 34, underlines);
1458 info = webView->textInputInfo(); 1477 info = activeInputMethodController->textInputInfo();
1459 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz", 1478 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz",
1460 std::string(info.value.utf8().data())); 1479 std::string(info.value.utf8().data()));
1461 EXPECT_EQ(31, info.selectionStart); 1480 EXPECT_EQ(31, info.selectionStart);
1462 EXPECT_EQ(31, info.selectionEnd); 1481 EXPECT_EQ(31, info.selectionEnd);
1463 EXPECT_EQ(30, info.compositionStart); 1482 EXPECT_EQ(30, info.compositionStart);
1464 EXPECT_EQ(34, info.compositionEnd); 1483 EXPECT_EQ(34, info.compositionEnd);
1465 1484
1466 std::string compositionText("yolo"); 1485 std::string compositionText("yolo");
1467 activeInputMethodController->commitText( 1486 activeInputMethodController->commitText(
1468 WebString::fromUTF8(compositionText.c_str()), 0); 1487 WebString::fromUTF8(compositionText.c_str()), 0);
1469 info = webView->textInputInfo(); 1488 info = activeInputMethodController->textInputInfo();
1470 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz", 1489 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz",
1471 std::string(info.value.utf8().data())); 1490 std::string(info.value.utf8().data()));
1472 EXPECT_EQ(34, info.selectionStart); 1491 EXPECT_EQ(34, info.selectionStart);
1473 EXPECT_EQ(34, info.selectionEnd); 1492 EXPECT_EQ(34, info.selectionEnd);
1474 EXPECT_EQ(-1, info.compositionStart); 1493 EXPECT_EQ(-1, info.compositionStart);
1475 EXPECT_EQ(-1, info.compositionEnd); 1494 EXPECT_EQ(-1, info.compositionEnd);
1476 } 1495 }
1477 1496
1478 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { 1497 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) {
1479 URLTestHelpers::registerMockedURLFromBaseURL( 1498 URLTestHelpers::registerMockedURLFromBaseURL(
(...skipping 26 matching lines...) Expand all
1506 WebInputMethodController* activeInputMethodController = 1525 WebInputMethodController* activeInputMethodController =
1507 webView->mainFrameImpl() 1526 webView->mainFrameImpl()
1508 ->frameWidget() 1527 ->frameWidget()
1509 ->getActiveWebInputMethodController(); 1528 ->getActiveWebInputMethodController();
1510 activeInputMethodController->commitText( 1529 activeInputMethodController->commitText(
1511 WebString::fromUTF8(compositionTextFirst.c_str()), 0); 1530 WebString::fromUTF8(compositionTextFirst.c_str()), 0);
1512 activeInputMethodController->setComposition( 1531 activeInputMethodController->setComposition(
1513 WebString::fromUTF8(compositionTextSecond.c_str()), emptyUnderlines, 5, 1532 WebString::fromUTF8(compositionTextSecond.c_str()), emptyUnderlines, 5,
1514 5); 1533 5);
1515 1534
1516 WebTextInputInfo info = webView->textInputInfo(); 1535 WebTextInputInfo info = activeInputMethodController->textInputInfo();
1517 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1536 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1518 EXPECT_EQ(11, info.selectionStart); 1537 EXPECT_EQ(11, info.selectionStart);
1519 EXPECT_EQ(11, info.selectionEnd); 1538 EXPECT_EQ(11, info.selectionEnd);
1520 EXPECT_EQ(6, info.compositionStart); 1539 EXPECT_EQ(6, info.compositionStart);
1521 EXPECT_EQ(11, info.compositionEnd); 1540 EXPECT_EQ(11, info.compositionEnd);
1522 1541
1523 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 1542 WebLocalFrameImpl* frame = webView->mainFrameImpl();
1524 frame->setEditableSelectionOffsets(6, 6); 1543 frame->setEditableSelectionOffsets(6, 6);
1525 info = webView->textInputInfo(); 1544 info = activeInputMethodController->textInputInfo();
1526 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1545 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1527 EXPECT_EQ(6, info.selectionStart); 1546 EXPECT_EQ(6, info.selectionStart);
1528 EXPECT_EQ(6, info.selectionEnd); 1547 EXPECT_EQ(6, info.selectionEnd);
1529 EXPECT_EQ(6, info.compositionStart); 1548 EXPECT_EQ(6, info.compositionStart);
1530 EXPECT_EQ(11, info.compositionEnd); 1549 EXPECT_EQ(11, info.compositionEnd);
1531 1550
1532 frame->setEditableSelectionOffsets(8, 8); 1551 frame->setEditableSelectionOffsets(8, 8);
1533 info = webView->textInputInfo(); 1552 info = activeInputMethodController->textInputInfo();
1534 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1553 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1535 EXPECT_EQ(8, info.selectionStart); 1554 EXPECT_EQ(8, info.selectionStart);
1536 EXPECT_EQ(8, info.selectionEnd); 1555 EXPECT_EQ(8, info.selectionEnd);
1537 EXPECT_EQ(6, info.compositionStart); 1556 EXPECT_EQ(6, info.compositionStart);
1538 EXPECT_EQ(11, info.compositionEnd); 1557 EXPECT_EQ(11, info.compositionEnd);
1539 1558
1540 frame->setEditableSelectionOffsets(11, 11); 1559 frame->setEditableSelectionOffsets(11, 11);
1541 info = webView->textInputInfo(); 1560 info = activeInputMethodController->textInputInfo();
1542 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1561 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1543 EXPECT_EQ(11, info.selectionStart); 1562 EXPECT_EQ(11, info.selectionStart);
1544 EXPECT_EQ(11, info.selectionEnd); 1563 EXPECT_EQ(11, info.selectionEnd);
1545 EXPECT_EQ(6, info.compositionStart); 1564 EXPECT_EQ(6, info.compositionStart);
1546 EXPECT_EQ(11, info.compositionEnd); 1565 EXPECT_EQ(11, info.compositionEnd);
1547 1566
1548 frame->setEditableSelectionOffsets(6, 11); 1567 frame->setEditableSelectionOffsets(6, 11);
1549 info = webView->textInputInfo(); 1568 info = activeInputMethodController->textInputInfo();
1550 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1569 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1551 EXPECT_EQ(6, info.selectionStart); 1570 EXPECT_EQ(6, info.selectionStart);
1552 EXPECT_EQ(11, info.selectionEnd); 1571 EXPECT_EQ(11, info.selectionEnd);
1553 EXPECT_EQ(6, info.compositionStart); 1572 EXPECT_EQ(6, info.compositionStart);
1554 EXPECT_EQ(11, info.compositionEnd); 1573 EXPECT_EQ(11, info.compositionEnd);
1555 1574
1556 frame->setEditableSelectionOffsets(2, 2); 1575 frame->setEditableSelectionOffsets(2, 2);
1557 info = webView->textInputInfo(); 1576 info = activeInputMethodController->textInputInfo();
1558 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); 1577 EXPECT_EQ("hello world", std::string(info.value.utf8().data()));
1559 EXPECT_EQ(2, info.selectionStart); 1578 EXPECT_EQ(2, info.selectionStart);
1560 EXPECT_EQ(2, info.selectionEnd); 1579 EXPECT_EQ(2, info.selectionEnd);
1561 EXPECT_EQ(-1, info.compositionStart); 1580 EXPECT_EQ(-1, info.compositionStart);
1562 EXPECT_EQ(-1, info.compositionEnd); 1581 EXPECT_EQ(-1, info.compositionEnd);
1563 } 1582 }
1564 1583
1565 TEST_P(WebViewTest, IsSelectionAnchorFirst) { 1584 TEST_P(WebViewTest, IsSelectionAnchorFirst) {
1566 URLTestHelpers::registerMockedURLFromBaseURL( 1585 URLTestHelpers::registerMockedURLFromBaseURL(
1567 WebString::fromUTF8(m_baseURL.c_str()), 1586 WebString::fromUTF8(m_baseURL.c_str()),
(...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2699 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( 2718 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(
2700 m_baseURL + "input_field_populated.html"); 2719 m_baseURL + "input_field_populated.html");
2701 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 2720 WebLocalFrameImpl* frame = webView->mainFrameImpl();
2702 frame->setAutofillClient(&client); 2721 frame->setAutofillClient(&client);
2703 webView->setInitialFocus(false); 2722 webView->setInitialFocus(false);
2704 2723
2705 // Set up a composition that needs to be committed. 2724 // Set up a composition that needs to be committed.
2706 WebVector<WebCompositionUnderline> emptyUnderlines; 2725 WebVector<WebCompositionUnderline> emptyUnderlines;
2707 frame->setEditableSelectionOffsets(4, 10); 2726 frame->setEditableSelectionOffsets(4, 10);
2708 frame->setCompositionFromExistingText(8, 12, emptyUnderlines); 2727 frame->setCompositionFromExistingText(8, 12, emptyUnderlines);
2709 WebTextInputInfo info = webView->textInputInfo(); 2728 WebTextInputInfo info = frame->inputMethodController()->textInputInfo();
2710 EXPECT_EQ(4, info.selectionStart); 2729 EXPECT_EQ(4, info.selectionStart);
2711 EXPECT_EQ(10, info.selectionEnd); 2730 EXPECT_EQ(10, info.selectionEnd);
2712 EXPECT_EQ(8, info.compositionStart); 2731 EXPECT_EQ(8, info.compositionStart);
2713 EXPECT_EQ(12, info.compositionEnd); 2732 EXPECT_EQ(12, info.compositionEnd);
2714 2733
2715 // Clear the focus and track that the subsequent composition commit does not 2734 // Clear the focus and track that the subsequent composition commit does not
2716 // trigger a text changed notification for autofill. 2735 // trigger a text changed notification for autofill.
2717 client.clearChangeCounts(); 2736 client.clearChangeCounts();
2718 webView->setFocus(false); 2737 webView->setFocus(false);
2719 EXPECT_EQ(0, client.textChangesWhileNotIgnored()); 2738 EXPECT_EQ(0, client.textChangesWhileNotIgnored());
2720 2739
2721 frame->setAutofillClient(0); 2740 frame->setAutofillClient(0);
2722 } 2741 }
2723 2742
2724 static void verifySelectionAndComposition(WebView* webView, 2743 static void verifySelectionAndComposition(WebViewImpl* webView,
2725 int selectionStart, 2744 int selectionStart,
2726 int selectionEnd, 2745 int selectionEnd,
2727 int compositionStart, 2746 int compositionStart,
2728 int compositionEnd, 2747 int compositionEnd,
2729 const char* failMessage) { 2748 const char* failMessage) {
2730 WebTextInputInfo info = webView->textInputInfo(); 2749 WebTextInputInfo info =
2750 webView->mainFrameImpl()->inputMethodController()->textInputInfo();
2731 EXPECT_EQ(selectionStart, info.selectionStart) << failMessage; 2751 EXPECT_EQ(selectionStart, info.selectionStart) << failMessage;
2732 EXPECT_EQ(selectionEnd, info.selectionEnd) << failMessage; 2752 EXPECT_EQ(selectionEnd, info.selectionEnd) << failMessage;
2733 EXPECT_EQ(compositionStart, info.compositionStart) << failMessage; 2753 EXPECT_EQ(compositionStart, info.compositionStart) << failMessage;
2734 EXPECT_EQ(compositionEnd, info.compositionEnd) << failMessage; 2754 EXPECT_EQ(compositionEnd, info.compositionEnd) << failMessage;
2735 } 2755 }
2736 2756
2737 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) { 2757 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) {
2738 URLTestHelpers::registerMockedURLFromBaseURL( 2758 URLTestHelpers::registerMockedURLFromBaseURL(
2739 WebString::fromUTF8(m_baseURL.c_str()), 2759 WebString::fromUTF8(m_baseURL.c_str()),
2740 WebString::fromUTF8("composition_not_cancelled_by_backspace.html")); 2760 WebString::fromUTF8("composition_not_cancelled_by_backspace.html"));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2794 WebInputMethodController* activeInputMethodController = 2814 WebInputMethodController* activeInputMethodController =
2795 frame->frameWidget()->getActiveWebInputMethodController(); 2815 frame->frameWidget()->getActiveWebInputMethodController();
2796 // Set up a composition that needs to be committed. 2816 // Set up a composition that needs to be committed.
2797 std::string compositionText("testingtext"); 2817 std::string compositionText("testingtext");
2798 2818
2799 WebVector<WebCompositionUnderline> emptyUnderlines; 2819 WebVector<WebCompositionUnderline> emptyUnderlines;
2800 activeInputMethodController->setComposition( 2820 activeInputMethodController->setComposition(
2801 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 0, 2821 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 0,
2802 compositionText.length()); 2822 compositionText.length());
2803 2823
2804 WebTextInputInfo info = webView->textInputInfo(); 2824 WebTextInputInfo info = activeInputMethodController->textInputInfo();
2805 EXPECT_EQ(0, info.selectionStart); 2825 EXPECT_EQ(0, info.selectionStart);
2806 EXPECT_EQ((int)compositionText.length(), info.selectionEnd); 2826 EXPECT_EQ((int)compositionText.length(), info.selectionEnd);
2807 EXPECT_EQ(0, info.compositionStart); 2827 EXPECT_EQ(0, info.compositionStart);
2808 EXPECT_EQ((int)compositionText.length(), info.compositionEnd); 2828 EXPECT_EQ((int)compositionText.length(), info.compositionEnd);
2809 2829
2810 client.clearChangeCounts(); 2830 client.clearChangeCounts();
2811 activeInputMethodController->finishComposingText( 2831 activeInputMethodController->finishComposingText(
2812 WebInputMethodController::KeepSelection); 2832 WebInputMethodController::KeepSelection);
2813 EXPECT_EQ(0, client.textChangesWhileIgnored()); 2833 EXPECT_EQ(0, client.textChangesWhileIgnored());
2814 EXPECT_EQ(1, client.textChangesWhileNotIgnored()); 2834 EXPECT_EQ(1, client.textChangesWhileNotIgnored());
(...skipping 10 matching lines...) Expand all
2825 m_baseURL + "input_field_populated.html", true); 2845 m_baseURL + "input_field_populated.html", true);
2826 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 2846 WebLocalFrameImpl* frame = webView->mainFrameImpl();
2827 frame->setAutofillClient(&client); 2847 frame->setAutofillClient(&client);
2828 webView->setInitialFocus(false); 2848 webView->setInitialFocus(false);
2829 2849
2830 WebVector<WebCompositionUnderline> emptyUnderlines; 2850 WebVector<WebCompositionUnderline> emptyUnderlines;
2831 2851
2832 client.clearChangeCounts(); 2852 client.clearChangeCounts();
2833 frame->setCompositionFromExistingText(8, 12, emptyUnderlines); 2853 frame->setCompositionFromExistingText(8, 12, emptyUnderlines);
2834 2854
2835 WebTextInputInfo info = webView->textInputInfo(); 2855 WebTextInputInfo info = frame->inputMethodController()->textInputInfo();
2836 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", 2856 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz",
2837 std::string(info.value.utf8().data())); 2857 std::string(info.value.utf8().data()));
2838 EXPECT_EQ(8, info.compositionStart); 2858 EXPECT_EQ(8, info.compositionStart);
2839 EXPECT_EQ(12, info.compositionEnd); 2859 EXPECT_EQ(12, info.compositionEnd);
2840 2860
2841 EXPECT_EQ(0, client.textChangesWhileIgnored()); 2861 EXPECT_EQ(0, client.textChangesWhileIgnored());
2842 EXPECT_EQ(0, client.textChangesWhileNotIgnored()); 2862 EXPECT_EQ(0, client.textChangesWhileNotIgnored());
2843 2863
2844 WebDocument document = webView->mainFrame()->document(); 2864 WebDocument document = webView->mainFrame()->document();
2845 EXPECT_EQ(WebString::fromUTF8("none"), 2865 EXPECT_EQ(WebString::fromUTF8("none"),
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
3491 }; 3511 };
3492 3512
3493 // This test verifies the text input flags are correctly exposed to script. 3513 // This test verifies the text input flags are correctly exposed to script.
3494 TEST_P(WebViewTest, TextInputFlags) { 3514 TEST_P(WebViewTest, TextInputFlags) {
3495 std::string url = m_baseURL + "text_input_flags.html"; 3515 std::string url = m_baseURL + "text_input_flags.html";
3496 URLTestHelpers::registerMockedURLLoad(toKURL(url), "text_input_flags.html"); 3516 URLTestHelpers::registerMockedURLLoad(toKURL(url), "text_input_flags.html");
3497 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); 3517 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true);
3498 webViewImpl->setInitialFocus(false); 3518 webViewImpl->setInitialFocus(false);
3499 3519
3500 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl(); 3520 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl();
3521 WebInputMethodControllerImpl* activeInputMethodController =
3522 frame->inputMethodController();
3501 Document* document = frame->frame()->document(); 3523 Document* document = frame->frame()->document();
3502 3524
3503 // (A) <input> 3525 // (A) <input>
3504 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and 3526 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and
3505 // autocapitalize is set to none. 3527 // autocapitalize is set to none.
3506 HTMLInputElement* inputElement = 3528 HTMLInputElement* inputElement =
3507 toHTMLInputElement(document->getElementById("input")); 3529 toHTMLInputElement(document->getElementById("input"));
3508 document->setFocusedElement( 3530 document->setFocusedElement(
3509 inputElement, 3531 inputElement,
3510 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr)); 3532 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3511 webViewImpl->setFocus(true); 3533 webViewImpl->setFocus(true);
3512 WebTextInputInfo info1 = webViewImpl->textInputInfo(); 3534 WebTextInputInfo info1 = activeInputMethodController->textInputInfo();
3513 EXPECT_EQ(WebTextInputFlagAutocompleteOff | WebTextInputFlagAutocorrectOff | 3535 EXPECT_EQ(WebTextInputFlagAutocompleteOff | WebTextInputFlagAutocorrectOff |
3514 WebTextInputFlagSpellcheckOff | 3536 WebTextInputFlagSpellcheckOff |
3515 WebTextInputFlagAutocapitalizeNone, 3537 WebTextInputFlagAutocapitalizeNone,
3516 info1.flags); 3538 info1.flags);
3517 3539
3518 // (A.2) Verifies autocorrect/autocomplete/spellcheck flags are On and 3540 // (A.2) Verifies autocorrect/autocomplete/spellcheck flags are On and
3519 // autocapitalize is set to sentences. 3541 // autocapitalize is set to sentences.
3520 inputElement = toHTMLInputElement(document->getElementById("input2")); 3542 inputElement = toHTMLInputElement(document->getElementById("input2"));
3521 document->setFocusedElement( 3543 document->setFocusedElement(
3522 inputElement, 3544 inputElement,
3523 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr)); 3545 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3524 webViewImpl->setFocus(true); 3546 webViewImpl->setFocus(true);
3525 WebTextInputInfo info2 = webViewImpl->textInputInfo(); 3547 WebTextInputInfo info2 = activeInputMethodController->textInputInfo();
3526 EXPECT_EQ(WebTextInputFlagAutocompleteOn | WebTextInputFlagAutocorrectOn | 3548 EXPECT_EQ(WebTextInputFlagAutocompleteOn | WebTextInputFlagAutocorrectOn |
3527 WebTextInputFlagSpellcheckOn | 3549 WebTextInputFlagSpellcheckOn |
3528 WebTextInputFlagAutocapitalizeSentences, 3550 WebTextInputFlagAutocapitalizeSentences,
3529 info2.flags); 3551 info2.flags);
3530 3552
3531 // (B) <textarea> Verifies the default text input flags are 3553 // (B) <textarea> Verifies the default text input flags are
3532 // WebTextInputFlagAutocapitalizeSentences. 3554 // WebTextInputFlagAutocapitalizeSentences.
3533 HTMLTextAreaElement* textAreaElement = 3555 HTMLTextAreaElement* textAreaElement =
3534 toHTMLTextAreaElement(document->getElementById("textarea")); 3556 toHTMLTextAreaElement(document->getElementById("textarea"));
3535 document->setFocusedElement( 3557 document->setFocusedElement(
3536 textAreaElement, 3558 textAreaElement,
3537 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr)); 3559 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3538 webViewImpl->setFocus(true); 3560 webViewImpl->setFocus(true);
3539 WebTextInputInfo info3 = webViewImpl->textInputInfo(); 3561 WebTextInputInfo info3 = activeInputMethodController->textInputInfo();
3540 EXPECT_EQ(WebTextInputFlagAutocapitalizeSentences, info3.flags); 3562 EXPECT_EQ(WebTextInputFlagAutocapitalizeSentences, info3.flags);
3541 3563
3542 // (C) Verifies the WebTextInputInfo's don't equal. 3564 // (C) Verifies the WebTextInputInfo's don't equal.
3543 EXPECT_FALSE(info1.equals(info2)); 3565 EXPECT_FALSE(info1.equals(info2));
3544 EXPECT_FALSE(info2.equals(info3)); 3566 EXPECT_FALSE(info2.equals(info3));
3545 3567
3546 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. 3568 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient.
3547 m_webViewHelper.reset(); 3569 m_webViewHelper.reset();
3548 } 3570 }
3549 3571
(...skipping 23 matching lines...) Expand all
3573 toHTMLInputElement(document->getElementById("input")); 3595 toHTMLInputElement(document->getElementById("input"));
3574 document->setFocusedElement( 3596 document->setFocusedElement(
3575 inputElement, 3597 inputElement,
3576 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr)); 3598 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3577 webViewImpl->setFocus(true); 3599 webViewImpl->setFocus(true);
3578 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(inputElement)); 3600 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(inputElement));
3579 3601
3580 // Emulate value change from script. 3602 // Emulate value change from script.
3581 inputElement->setValue("testA"); 3603 inputElement->setValue("testA");
3582 EXPECT_TRUE(client.textIsUpdated()); 3604 EXPECT_TRUE(client.textIsUpdated());
3583 WebTextInputInfo info = webViewImpl->textInputInfo(); 3605 WebTextInputInfo info = activeInputMethodController->textInputInfo();
3584 EXPECT_EQ("testA", std::string(info.value.utf8().data())); 3606 EXPECT_EQ("testA", std::string(info.value.utf8().data()));
3585 3607
3586 // (A.2) Focused and user input modifies value. 3608 // (A.2) Focused and user input modifies value.
3587 client.reset(); 3609 client.reset();
3588 EXPECT_FALSE(client.textIsUpdated()); 3610 EXPECT_FALSE(client.textIsUpdated());
3589 3611
3590 WebVector<WebCompositionUnderline> emptyUnderlines; 3612 WebVector<WebCompositionUnderline> emptyUnderlines;
3591 activeInputMethodController->setComposition(WebString::fromUTF8("2"), 3613 activeInputMethodController->setComposition(WebString::fromUTF8("2"),
3592 emptyUnderlines, 1, 1); 3614 emptyUnderlines, 1, 1);
3593 activeInputMethodController->finishComposingText( 3615 activeInputMethodController->finishComposingText(
3594 WebInputMethodController::KeepSelection); 3616 WebInputMethodController::KeepSelection);
3595 EXPECT_FALSE(client.textIsUpdated()); 3617 EXPECT_FALSE(client.textIsUpdated());
3596 info = webViewImpl->textInputInfo(); 3618 info = activeInputMethodController->textInputInfo();
3597 EXPECT_EQ("testA2", std::string(info.value.utf8().data())); 3619 EXPECT_EQ("testA2", std::string(info.value.utf8().data()));
3598 3620
3599 // (A.3) Unfocused and value is changed by script. 3621 // (A.3) Unfocused and value is changed by script.
3600 client.reset(); 3622 client.reset();
3601 EXPECT_FALSE(client.textIsUpdated()); 3623 EXPECT_FALSE(client.textIsUpdated());
3602 document->clearFocusedElement(); 3624 document->clearFocusedElement();
3603 webViewImpl->setFocus(false); 3625 webViewImpl->setFocus(false);
3604 EXPECT_NE(document->focusedElement(), static_cast<Element*>(inputElement)); 3626 EXPECT_NE(document->focusedElement(), static_cast<Element*>(inputElement));
3605 inputElement->setValue("testA3"); 3627 inputElement->setValue("testA3");
3606 EXPECT_FALSE(client.textIsUpdated()); 3628 EXPECT_FALSE(client.textIsUpdated());
3607 3629
3608 // (B) <textarea> 3630 // (B) <textarea>
3609 // (B.1) Focused and value is changed by script. 3631 // (B.1) Focused and value is changed by script.
3610 client.reset(); 3632 client.reset();
3611 EXPECT_FALSE(client.textIsUpdated()); 3633 EXPECT_FALSE(client.textIsUpdated());
3612 HTMLTextAreaElement* textAreaElement = 3634 HTMLTextAreaElement* textAreaElement =
3613 toHTMLTextAreaElement(document->getElementById("textarea")); 3635 toHTMLTextAreaElement(document->getElementById("textarea"));
3614 document->setFocusedElement( 3636 document->setFocusedElement(
3615 textAreaElement, 3637 textAreaElement,
3616 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr)); 3638 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3617 webViewImpl->setFocus(true); 3639 webViewImpl->setFocus(true);
3618 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(textAreaElement)); 3640 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(textAreaElement));
3619 textAreaElement->setValue("testB"); 3641 textAreaElement->setValue("testB");
3620 EXPECT_TRUE(client.textIsUpdated()); 3642 EXPECT_TRUE(client.textIsUpdated());
3621 info = webViewImpl->textInputInfo(); 3643 info = activeInputMethodController->textInputInfo();
3622 EXPECT_EQ("testB", std::string(info.value.utf8().data())); 3644 EXPECT_EQ("testB", std::string(info.value.utf8().data()));
3623 3645
3624 // (B.2) Focused and user input modifies value. 3646 // (B.2) Focused and user input modifies value.
3625 client.reset(); 3647 client.reset();
3626 EXPECT_FALSE(client.textIsUpdated()); 3648 EXPECT_FALSE(client.textIsUpdated());
3627 activeInputMethodController->setComposition(WebString::fromUTF8("2"), 3649 activeInputMethodController->setComposition(WebString::fromUTF8("2"),
3628 emptyUnderlines, 1, 1); 3650 emptyUnderlines, 1, 1);
3629 activeInputMethodController->finishComposingText( 3651 activeInputMethodController->finishComposingText(
3630 WebInputMethodController::KeepSelection); 3652 WebInputMethodController::KeepSelection);
3631 info = webViewImpl->textInputInfo(); 3653 info = activeInputMethodController->textInputInfo();
3632 EXPECT_EQ("testB2", std::string(info.value.utf8().data())); 3654 EXPECT_EQ("testB2", std::string(info.value.utf8().data()));
3633 3655
3634 // (B.3) Unfocused and value is changed by script. 3656 // (B.3) Unfocused and value is changed by script.
3635 client.reset(); 3657 client.reset();
3636 EXPECT_FALSE(client.textIsUpdated()); 3658 EXPECT_FALSE(client.textIsUpdated());
3637 document->clearFocusedElement(); 3659 document->clearFocusedElement();
3638 webViewImpl->setFocus(false); 3660 webViewImpl->setFocus(false);
3639 EXPECT_NE(document->focusedElement(), static_cast<Element*>(textAreaElement)); 3661 EXPECT_NE(document->focusedElement(), static_cast<Element*>(textAreaElement));
3640 inputElement->setValue("testB3"); 3662 inputElement->setValue("testB3");
3641 EXPECT_FALSE(client.textIsUpdated()); 3663 EXPECT_FALSE(client.textIsUpdated());
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
4349 .translate(50, 55) 4371 .translate(50, 55)
4350 .scale(1. / 2.f); 4372 .scale(1. / 2.f);
4351 EXPECT_EQ(expectedMatrix, 4373 EXPECT_EQ(expectedMatrix,
4352 webViewImpl->getDeviceEmulationTransformForTesting()); 4374 webViewImpl->getDeviceEmulationTransformForTesting());
4353 // visibleContentRect doesn't change. 4375 // visibleContentRect doesn't change.
4354 EXPECT_EQ(IntRect(50, 55, 50, 75), 4376 EXPECT_EQ(IntRect(50, 55, 50, 75),
4355 *devToolsEmulator->visibleContentRectForPainting()); 4377 *devToolsEmulator->visibleContentRectForPainting());
4356 } 4378 }
4357 4379
4358 } // namespace blink 4380 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698