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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1315 | 1315 |
1316 case IME_SETFOCUS: | 1316 case IME_SETFOCUS: |
1317 // Update the window focus. | 1317 // Update the window focus. |
1318 view()->OnSetFocus(ime_message->enable); | 1318 view()->OnSetFocus(ime_message->enable); |
1319 break; | 1319 break; |
1320 | 1320 |
1321 case IME_SETCOMPOSITION: | 1321 case IME_SETCOMPOSITION: |
1322 view()->OnImeSetComposition( | 1322 view()->OnImeSetComposition( |
1323 base::WideToUTF16(ime_message->ime_string), | 1323 base::WideToUTF16(ime_message->ime_string), |
1324 std::vector<blink::WebCompositionUnderline>(), | 1324 std::vector<blink::WebCompositionUnderline>(), |
| 1325 gfx::Range::InvalidRange(), |
1325 ime_message->selection_start, | 1326 ime_message->selection_start, |
1326 ime_message->selection_end); | 1327 ime_message->selection_end); |
1327 break; | 1328 break; |
1328 | 1329 |
1329 case IME_CONFIRMCOMPOSITION: | 1330 case IME_CONFIRMCOMPOSITION: |
1330 view()->OnImeConfirmComposition( | 1331 view()->OnImeConfirmComposition( |
1331 base::WideToUTF16(ime_message->ime_string), | 1332 base::WideToUTF16(ime_message->ime_string), |
1332 gfx::Range::InvalidRange(), | 1333 gfx::Range::InvalidRange(), |
1333 false); | 1334 false); |
1334 break; | 1335 break; |
1335 | 1336 |
1336 case IME_CANCELCOMPOSITION: | 1337 case IME_CANCELCOMPOSITION: |
1337 view()->OnImeSetComposition( | 1338 view()->OnImeSetComposition( |
1338 base::string16(), | 1339 base::string16(), |
1339 std::vector<blink::WebCompositionUnderline>(), | 1340 std::vector<blink::WebCompositionUnderline>(), |
| 1341 gfx::Range::InvalidRange(), |
1340 0, 0); | 1342 0, 0); |
1341 break; | 1343 break; |
1342 } | 1344 } |
1343 | 1345 |
1344 // Update the status of our IME back-end. | 1346 // Update the status of our IME back-end. |
1345 // TODO(hbono): we should verify messages to be sent from the back-end. | 1347 // TODO(hbono): we should verify messages to be sent from the back-end. |
1346 view()->UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME); | 1348 view()->UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME); |
1347 ProcessPendingMessages(); | 1349 ProcessPendingMessages(); |
1348 render_thread_->sink().ClearMessages(); | 1350 render_thread_->sink().ClearMessages(); |
1349 | 1351 |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1937 LoadHTML("<textarea id=\"test\"></textarea>"); | 1939 LoadHTML("<textarea id=\"test\"></textarea>"); |
1938 ExecuteJavaScriptForTests("document.getElementById('test').focus();"); | 1940 ExecuteJavaScriptForTests("document.getElementById('test').focus();"); |
1939 | 1941 |
1940 const base::string16 empty_string; | 1942 const base::string16 empty_string; |
1941 const std::vector<blink::WebCompositionUnderline> empty_underline; | 1943 const std::vector<blink::WebCompositionUnderline> empty_underline; |
1942 std::vector<gfx::Rect> bounds; | 1944 std::vector<gfx::Rect> bounds; |
1943 view()->OnSetFocus(true); | 1945 view()->OnSetFocus(true); |
1944 | 1946 |
1945 // ASCII composition | 1947 // ASCII composition |
1946 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo"); | 1948 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo"); |
1947 view()->OnImeSetComposition(ascii_composition, empty_underline, 0, 0); | 1949 view()->OnImeSetComposition(ascii_composition, empty_underline, |
| 1950 gfx::Range::InvalidRange(), 0, 0); |
1948 view()->GetCompositionCharacterBounds(&bounds); | 1951 view()->GetCompositionCharacterBounds(&bounds); |
1949 ASSERT_EQ(ascii_composition.size(), bounds.size()); | 1952 ASSERT_EQ(ascii_composition.size(), bounds.size()); |
1950 | 1953 |
1951 for (size_t i = 0; i < bounds.size(); ++i) | 1954 for (size_t i = 0; i < bounds.size(); ++i) |
1952 EXPECT_LT(0, bounds[i].width()); | 1955 EXPECT_LT(0, bounds[i].width()); |
1953 view()->OnImeConfirmComposition( | 1956 view()->OnImeConfirmComposition( |
1954 empty_string, gfx::Range::InvalidRange(), false); | 1957 empty_string, gfx::Range::InvalidRange(), false); |
1955 | 1958 |
1956 // Non surrogate pair unicode character. | 1959 // Non surrogate pair unicode character. |
1957 const base::string16 unicode_composition = base::UTF8ToUTF16( | 1960 const base::string16 unicode_composition = base::UTF8ToUTF16( |
1958 "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A"); | 1961 "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A"); |
1959 view()->OnImeSetComposition(unicode_composition, empty_underline, 0, 0); | 1962 view()->OnImeSetComposition(unicode_composition, empty_underline, |
| 1963 gfx::Range::InvalidRange(), 0, 0); |
1960 view()->GetCompositionCharacterBounds(&bounds); | 1964 view()->GetCompositionCharacterBounds(&bounds); |
1961 ASSERT_EQ(unicode_composition.size(), bounds.size()); | 1965 ASSERT_EQ(unicode_composition.size(), bounds.size()); |
1962 for (size_t i = 0; i < bounds.size(); ++i) | 1966 for (size_t i = 0; i < bounds.size(); ++i) |
1963 EXPECT_LT(0, bounds[i].width()); | 1967 EXPECT_LT(0, bounds[i].width()); |
1964 view()->OnImeConfirmComposition( | 1968 view()->OnImeConfirmComposition( |
1965 empty_string, gfx::Range::InvalidRange(), false); | 1969 empty_string, gfx::Range::InvalidRange(), false); |
1966 | 1970 |
1967 // Surrogate pair character. | 1971 // Surrogate pair character. |
1968 const base::string16 surrogate_pair_char = | 1972 const base::string16 surrogate_pair_char = |
1969 base::UTF8ToUTF16("\xF0\xA0\xAE\x9F"); | 1973 base::UTF8ToUTF16("\xF0\xA0\xAE\x9F"); |
1970 view()->OnImeSetComposition(surrogate_pair_char, | 1974 view()->OnImeSetComposition(surrogate_pair_char, |
1971 empty_underline, | 1975 empty_underline, |
| 1976 gfx::Range::InvalidRange(), |
1972 0, | 1977 0, |
1973 0); | 1978 0); |
1974 view()->GetCompositionCharacterBounds(&bounds); | 1979 view()->GetCompositionCharacterBounds(&bounds); |
1975 ASSERT_EQ(surrogate_pair_char.size(), bounds.size()); | 1980 ASSERT_EQ(surrogate_pair_char.size(), bounds.size()); |
1976 EXPECT_LT(0, bounds[0].width()); | 1981 EXPECT_LT(0, bounds[0].width()); |
1977 EXPECT_EQ(0, bounds[1].width()); | 1982 EXPECT_EQ(0, bounds[1].width()); |
1978 view()->OnImeConfirmComposition( | 1983 view()->OnImeConfirmComposition( |
1979 empty_string, gfx::Range::InvalidRange(), false); | 1984 empty_string, gfx::Range::InvalidRange(), false); |
1980 | 1985 |
1981 // Mixed string. | 1986 // Mixed string. |
1982 const base::string16 surrogate_pair_mixed_composition = | 1987 const base::string16 surrogate_pair_mixed_composition = |
1983 surrogate_pair_char + base::UTF8ToUTF16("\xE3\x81\x82") + | 1988 surrogate_pair_char + base::UTF8ToUTF16("\xE3\x81\x82") + |
1984 surrogate_pair_char + base::UTF8ToUTF16("b") + surrogate_pair_char; | 1989 surrogate_pair_char + base::UTF8ToUTF16("b") + surrogate_pair_char; |
1985 const size_t utf16_length = 8UL; | 1990 const size_t utf16_length = 8UL; |
1986 const bool is_surrogate_pair_empty_rect[8] = { | 1991 const bool is_surrogate_pair_empty_rect[8] = { |
1987 false, true, false, false, true, false, false, true }; | 1992 false, true, false, false, true, false, false, true }; |
1988 view()->OnImeSetComposition(surrogate_pair_mixed_composition, | 1993 view()->OnImeSetComposition(surrogate_pair_mixed_composition, |
1989 empty_underline, | 1994 empty_underline, |
| 1995 gfx::Range::InvalidRange(), |
1990 0, | 1996 0, |
1991 0); | 1997 0); |
1992 view()->GetCompositionCharacterBounds(&bounds); | 1998 view()->GetCompositionCharacterBounds(&bounds); |
1993 ASSERT_EQ(utf16_length, bounds.size()); | 1999 ASSERT_EQ(utf16_length, bounds.size()); |
1994 for (size_t i = 0; i < utf16_length; ++i) { | 2000 for (size_t i = 0; i < utf16_length; ++i) { |
1995 if (is_surrogate_pair_empty_rect[i]) { | 2001 if (is_surrogate_pair_empty_rect[i]) { |
1996 EXPECT_EQ(0, bounds[i].width()); | 2002 EXPECT_EQ(0, bounds[i].width()); |
1997 } else { | 2003 } else { |
1998 EXPECT_LT(0, bounds[i].width()); | 2004 EXPECT_LT(0, bounds[i].width()); |
1999 } | 2005 } |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2660 LoadHTML("<textarea id=\"test\"></textarea>"); | 2666 LoadHTML("<textarea id=\"test\"></textarea>"); |
2661 ExecuteJavaScriptForTests("document.getElementById('test').focus();"); | 2667 ExecuteJavaScriptForTests("document.getElementById('test').focus();"); |
2662 | 2668 |
2663 const base::string16 empty_string; | 2669 const base::string16 empty_string; |
2664 const std::vector<blink::WebCompositionUnderline> empty_underline; | 2670 const std::vector<blink::WebCompositionUnderline> empty_underline; |
2665 std::vector<gfx::Rect> bounds_at_1x; | 2671 std::vector<gfx::Rect> bounds_at_1x; |
2666 view()->OnSetFocus(true); | 2672 view()->OnSetFocus(true); |
2667 | 2673 |
2668 // ASCII composition | 2674 // ASCII composition |
2669 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo"); | 2675 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo"); |
2670 view()->OnImeSetComposition(ascii_composition, empty_underline, 0, 0); | 2676 view()->OnImeSetComposition(ascii_composition, empty_underline, |
| 2677 gfx::Range::InvalidRange(), 0, 0); |
2671 view()->GetCompositionCharacterBounds(&bounds_at_1x); | 2678 view()->GetCompositionCharacterBounds(&bounds_at_1x); |
2672 ASSERT_EQ(ascii_composition.size(), bounds_at_1x.size()); | 2679 ASSERT_EQ(ascii_composition.size(), bounds_at_1x.size()); |
2673 | 2680 |
2674 SetDeviceScaleFactor(2.f); | 2681 SetDeviceScaleFactor(2.f); |
2675 std::vector<gfx::Rect> bounds_at_2x; | 2682 std::vector<gfx::Rect> bounds_at_2x; |
2676 view()->GetCompositionCharacterBounds(&bounds_at_2x); | 2683 view()->GetCompositionCharacterBounds(&bounds_at_2x); |
2677 ASSERT_EQ(bounds_at_1x.size(), bounds_at_2x.size()); | 2684 ASSERT_EQ(bounds_at_1x.size(), bounds_at_2x.size()); |
2678 for (size_t i = 0; i < bounds_at_1x.size(); i++) { | 2685 for (size_t i = 0; i < bounds_at_1x.size(); i++) { |
2679 const gfx::Rect& b1 = bounds_at_1x[i]; | 2686 const gfx::Rect& b1 = bounds_at_1x[i]; |
2680 const gfx::Rect& b2 = bounds_at_2x[i]; | 2687 const gfx::Rect& b2 = bounds_at_2x[i]; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2742 FROM_HERE, | 2749 FROM_HERE, |
2743 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); | 2750 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); |
2744 ExecuteJavaScriptForTests("debugger;"); | 2751 ExecuteJavaScriptForTests("debugger;"); |
2745 | 2752 |
2746 // CloseWhilePaused should resume execution and continue here. | 2753 // CloseWhilePaused should resume execution and continue here. |
2747 EXPECT_FALSE(IsPaused()); | 2754 EXPECT_FALSE(IsPaused()); |
2748 Detach(); | 2755 Detach(); |
2749 } | 2756 } |
2750 | 2757 |
2751 } // namespace content | 2758 } // namespace content |
OLD | NEW |