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

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 2568093003: Support parsing BackgroundSpans and UnderlineSpans in Android IME's commitText() (Closed)
Patch Set: Use addCompositionUnderlines() where I said I couldn't Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (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 #include <tuple> 7 #include <tuple>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 1239 matching lines...) Expand 10 before | Expand all | Expand 10 after
1250 view()->OnImeSetComposition( 1250 view()->OnImeSetComposition(
1251 base::WideToUTF16(ime_message->ime_string), 1251 base::WideToUTF16(ime_message->ime_string),
1252 std::vector<blink::WebCompositionUnderline>(), 1252 std::vector<blink::WebCompositionUnderline>(),
1253 gfx::Range::InvalidRange(), 1253 gfx::Range::InvalidRange(),
1254 ime_message->selection_start, 1254 ime_message->selection_start,
1255 ime_message->selection_end); 1255 ime_message->selection_end);
1256 break; 1256 break;
1257 1257
1258 case IME_COMMITTEXT: 1258 case IME_COMMITTEXT:
1259 view()->OnImeCommitText(base::WideToUTF16(ime_message->ime_string), 1259 view()->OnImeCommitText(base::WideToUTF16(ime_message->ime_string),
1260 std::vector<blink::WebCompositionUnderline>(),
1260 gfx::Range::InvalidRange(), 0); 1261 gfx::Range::InvalidRange(), 0);
1261 break; 1262 break;
1262 1263
1263 case IME_FINISHCOMPOSINGTEXT: 1264 case IME_FINISHCOMPOSINGTEXT:
1264 view()->OnImeFinishComposingText(false); 1265 view()->OnImeFinishComposingText(false);
1265 break; 1266 break;
1266 1267
1267 case IME_CANCELCOMPOSITION: 1268 case IME_CANCELCOMPOSITION:
1268 view()->OnImeSetComposition( 1269 view()->OnImeSetComposition(
1269 base::string16(), 1270 base::string16(),
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1511 1512
1512 // ASCII composition 1513 // ASCII composition
1513 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo"); 1514 const base::string16 ascii_composition = base::UTF8ToUTF16("aiueo");
1514 view()->OnImeSetComposition(ascii_composition, empty_underline, 1515 view()->OnImeSetComposition(ascii_composition, empty_underline,
1515 gfx::Range::InvalidRange(), 0, 0); 1516 gfx::Range::InvalidRange(), 0, 0);
1516 view()->GetCompositionCharacterBounds(&bounds); 1517 view()->GetCompositionCharacterBounds(&bounds);
1517 ASSERT_EQ(ascii_composition.size(), bounds.size()); 1518 ASSERT_EQ(ascii_composition.size(), bounds.size());
1518 1519
1519 for (size_t i = 0; i < bounds.size(); ++i) 1520 for (size_t i = 0; i < bounds.size(); ++i)
1520 EXPECT_LT(0, bounds[i].width()); 1521 EXPECT_LT(0, bounds[i].width());
1521 view()->OnImeCommitText(empty_string, gfx::Range::InvalidRange(), 0); 1522 view()->OnImeCommitText(empty_string,
1523 std::vector<blink::WebCompositionUnderline>(),
1524 gfx::Range::InvalidRange(), 0);
1522 1525
1523 // Non surrogate pair unicode character. 1526 // Non surrogate pair unicode character.
1524 const base::string16 unicode_composition = base::UTF8ToUTF16( 1527 const base::string16 unicode_composition = base::UTF8ToUTF16(
1525 "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A"); 1528 "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A");
1526 view()->OnImeSetComposition(unicode_composition, empty_underline, 1529 view()->OnImeSetComposition(unicode_composition, empty_underline,
1527 gfx::Range::InvalidRange(), 0, 0); 1530 gfx::Range::InvalidRange(), 0, 0);
1528 view()->GetCompositionCharacterBounds(&bounds); 1531 view()->GetCompositionCharacterBounds(&bounds);
1529 ASSERT_EQ(unicode_composition.size(), bounds.size()); 1532 ASSERT_EQ(unicode_composition.size(), bounds.size());
1530 for (size_t i = 0; i < bounds.size(); ++i) 1533 for (size_t i = 0; i < bounds.size(); ++i)
1531 EXPECT_LT(0, bounds[i].width()); 1534 EXPECT_LT(0, bounds[i].width());
1532 view()->OnImeCommitText(empty_string, gfx::Range::InvalidRange(), 0); 1535 view()->OnImeCommitText(empty_string, empty_underline,
1536 gfx::Range::InvalidRange(), 0);
1533 1537
1534 // Surrogate pair character. 1538 // Surrogate pair character.
1535 const base::string16 surrogate_pair_char = 1539 const base::string16 surrogate_pair_char =
1536 base::UTF8ToUTF16("\xF0\xA0\xAE\x9F"); 1540 base::UTF8ToUTF16("\xF0\xA0\xAE\x9F");
1537 view()->OnImeSetComposition(surrogate_pair_char, 1541 view()->OnImeSetComposition(surrogate_pair_char,
1538 empty_underline, 1542 empty_underline,
1539 gfx::Range::InvalidRange(), 1543 gfx::Range::InvalidRange(),
1540 0, 1544 0,
1541 0); 1545 0);
1542 view()->GetCompositionCharacterBounds(&bounds); 1546 view()->GetCompositionCharacterBounds(&bounds);
1543 ASSERT_EQ(surrogate_pair_char.size(), bounds.size()); 1547 ASSERT_EQ(surrogate_pair_char.size(), bounds.size());
1544 EXPECT_LT(0, bounds[0].width()); 1548 EXPECT_LT(0, bounds[0].width());
1545 EXPECT_EQ(0, bounds[1].width()); 1549 EXPECT_EQ(0, bounds[1].width());
1546 view()->OnImeCommitText(empty_string, gfx::Range::InvalidRange(), 0); 1550 view()->OnImeCommitText(empty_string, empty_underline,
1551 gfx::Range::InvalidRange(), 0);
1547 1552
1548 // Mixed string. 1553 // Mixed string.
1549 const base::string16 surrogate_pair_mixed_composition = 1554 const base::string16 surrogate_pair_mixed_composition =
1550 surrogate_pair_char + base::UTF8ToUTF16("\xE3\x81\x82") + 1555 surrogate_pair_char + base::UTF8ToUTF16("\xE3\x81\x82") +
1551 surrogate_pair_char + base::UTF8ToUTF16("b") + surrogate_pair_char; 1556 surrogate_pair_char + base::UTF8ToUTF16("b") + surrogate_pair_char;
1552 const size_t utf16_length = 8UL; 1557 const size_t utf16_length = 8UL;
1553 const bool is_surrogate_pair_empty_rect[8] = { 1558 const bool is_surrogate_pair_empty_rect[8] = {
1554 false, true, false, false, true, false, false, true }; 1559 false, true, false, false, true, false, false, true };
1555 view()->OnImeSetComposition(surrogate_pair_mixed_composition, 1560 view()->OnImeSetComposition(surrogate_pair_mixed_composition,
1556 empty_underline, 1561 empty_underline,
1557 gfx::Range::InvalidRange(), 1562 gfx::Range::InvalidRange(),
1558 0, 1563 0,
1559 0); 1564 0);
1560 view()->GetCompositionCharacterBounds(&bounds); 1565 view()->GetCompositionCharacterBounds(&bounds);
1561 ASSERT_EQ(utf16_length, bounds.size()); 1566 ASSERT_EQ(utf16_length, bounds.size());
1562 for (size_t i = 0; i < utf16_length; ++i) { 1567 for (size_t i = 0; i < utf16_length; ++i) {
1563 if (is_surrogate_pair_empty_rect[i]) { 1568 if (is_surrogate_pair_empty_rect[i]) {
1564 EXPECT_EQ(0, bounds[i].width()); 1569 EXPECT_EQ(0, bounds[i].width());
1565 } else { 1570 } else {
1566 EXPECT_LT(0, bounds[i].width()); 1571 EXPECT_LT(0, bounds[i].width());
1567 } 1572 }
1568 } 1573 }
1569 view()->OnImeCommitText(empty_string, gfx::Range::InvalidRange(), 0); 1574 view()->OnImeCommitText(empty_string, empty_underline,
1575 gfx::Range::InvalidRange(), 0);
1570 } 1576 }
1571 #endif 1577 #endif
1572 1578
1573 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { 1579 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) {
1574 // Load an HTML page consisting of an input field. 1580 // Load an HTML page consisting of an input field.
1575 LoadHTML("<html>" 1581 LoadHTML("<html>"
1576 "<head>" 1582 "<head>"
1577 "</head>" 1583 "</head>"
1578 "<body>" 1584 "<body>"
1579 "<input id=\"test1\" value=\"some test text hello\"></input>" 1585 "<input id=\"test1\" value=\"some test text hello\"></input>"
(...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after
2559 ExpectPauseAndResume(3); 2565 ExpectPauseAndResume(3);
2560 blink::WebScriptSource source2( 2566 blink::WebScriptSource source2(
2561 WebString::fromUTF8("function func2() { func1(); }; func2();")); 2567 WebString::fromUTF8("function func2() { func1(); }; func2();"));
2562 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1, 1); 2568 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1, 1);
2563 2569
2564 EXPECT_FALSE(IsPaused()); 2570 EXPECT_FALSE(IsPaused());
2565 Detach(); 2571 Detach();
2566 } 2572 }
2567 2573
2568 } // namespace content 2574 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698