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

Side by Side Diff: third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp

Issue 2399663003: Reflow comments in //third_party/WebKit/Source/core/editing (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "core/editing/EditingUtilities.h" 5 #include "core/editing/EditingUtilities.h"
6 6
7 #include "core/dom/StaticNodeList.h" 7 #include "core/dom/StaticNodeList.h"
8 #include "core/editing/EditingTestBase.h" 8 #include "core/editing/EditingTestBase.h"
9 9
10 namespace blink { 10 namespace blink {
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1)); 340 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
341 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2)); 341 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
342 setBodyContent("<p id='target'>a&#x0A;b</p>"); // LF 342 setBodyContent("<p id='target'>a&#x0A;b</p>"); // LF
343 node = document().getElementById("target")->firstChild(); 343 node = document().getElementById("target")->firstChild();
344 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3)); 344 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
345 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 345 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
346 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 346 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
347 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 347 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
348 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1)); 348 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
349 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2)); 349 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
350 setBodyContent( 350 // U+00AD(SOFT HYPHEN) has Control property.
351 "<p id='target'>a&#xAD;b</p>"); // U+00AD(SOFT HYPHEN) has Control proper ty. 351 setBodyContent("<p id='target'>a&#xAD;b</p>");
352 node = document().getElementById("target")->firstChild(); 352 node = document().getElementById("target")->firstChild();
353 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3)); 353 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
354 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 354 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
355 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 355 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
356 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 356 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
357 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1)); 357 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
358 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2)); 358 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
359 359
360 // GB6: Don't break Hangul sequence. 360 // GB6: Don't break Hangul sequence.
361 const std::string L = 361 const std::string L =
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 node = document().getElementById("target")->firstChild(); 448 node = document().getElementById("target")->firstChild();
449 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4)); 449 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
450 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3)); 450 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
451 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 451 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
452 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 452 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
453 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1)); 453 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
454 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3)); 454 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
455 455
456 // Break other Hangul syllable combination. See test of GB999. 456 // Break other Hangul syllable combination. See test of GB999.
457 457
458 // GB8a: Don't break between regional indicator if there are even numbered reg ional indicator symbols before. 458 // GB8a: Don't break between regional indicator if there are even numbered
459 // regional indicator symbols before.
459 // U+1F1FA is REGIONAL INDICATOR SYMBOL LETTER U. 460 // U+1F1FA is REGIONAL INDICATOR SYMBOL LETTER U.
460 // U+1F1F8 is REGIONAL INDICATOR SYMBOL LETTER S. 461 // U+1F1F8 is REGIONAL INDICATOR SYMBOL LETTER S.
461 const std::string flag = "&#x1F1FA;&#x1F1F8;"; // US flag. 462 const std::string flag = "&#x1F1FA;&#x1F1F8;"; // US flag.
462 setBodyContent("<p id='target'>" + flag + flag + flag + flag + 463 // ^(RI RI)* RI x RI
463 "a</p>"); // ^(RI RI)* RI x RI 464 setBodyContent("<p id='target'>" + flag + flag + flag + flag + "a</p>");
464 node = document().getElementById("target")->firstChild(); 465 node = document().getElementById("target")->firstChild();
465 EXPECT_EQ(16, previousGraphemeBoundaryOf(node, 17)); 466 EXPECT_EQ(16, previousGraphemeBoundaryOf(node, 17));
466 EXPECT_EQ(12, previousGraphemeBoundaryOf(node, 16)); 467 EXPECT_EQ(12, previousGraphemeBoundaryOf(node, 16));
467 EXPECT_EQ(8, previousGraphemeBoundaryOf(node, 12)); 468 EXPECT_EQ(8, previousGraphemeBoundaryOf(node, 12));
468 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 8)); 469 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 8));
469 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 4)); 470 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 4));
470 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 0)); 471 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 0));
471 EXPECT_EQ(8, nextGraphemeBoundaryOf(node, 4)); 472 EXPECT_EQ(8, nextGraphemeBoundaryOf(node, 4));
472 EXPECT_EQ(12, nextGraphemeBoundaryOf(node, 8)); 473 EXPECT_EQ(12, nextGraphemeBoundaryOf(node, 8));
473 EXPECT_EQ(16, nextGraphemeBoundaryOf(node, 12)); 474 EXPECT_EQ(16, nextGraphemeBoundaryOf(node, 12));
474 EXPECT_EQ(17, nextGraphemeBoundaryOf(node, 16)); 475 EXPECT_EQ(17, nextGraphemeBoundaryOf(node, 16));
475 476
476 // GB8c: Don't break between regional indicator if there are even numbered reg ional indicator symbols before. 477 // GB8c: Don't break between regional indicator if there are even numbered
477 setBodyContent("<p id='target'>a" + flag + flag + flag + flag + 478 // regional indicator symbols before.
478 "b</p>"); // [^RI] (RI RI)* RI x RI 479 // [^RI] (RI RI)* RI x RI
480 setBodyContent("<p id='target'>a" + flag + flag + flag + flag + "b</p>");
479 node = document().getElementById("target")->firstChild(); 481 node = document().getElementById("target")->firstChild();
480 EXPECT_EQ(17, previousGraphemeBoundaryOf(node, 18)); 482 EXPECT_EQ(17, previousGraphemeBoundaryOf(node, 18));
481 EXPECT_EQ(13, previousGraphemeBoundaryOf(node, 17)); 483 EXPECT_EQ(13, previousGraphemeBoundaryOf(node, 17));
482 EXPECT_EQ(9, previousGraphemeBoundaryOf(node, 13)); 484 EXPECT_EQ(9, previousGraphemeBoundaryOf(node, 13));
483 EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 9)); 485 EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 9));
484 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5)); 486 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5));
485 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 487 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
486 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 488 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
487 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1)); 489 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1));
488 EXPECT_EQ(9, nextGraphemeBoundaryOf(node, 5)); 490 EXPECT_EQ(9, nextGraphemeBoundaryOf(node, 5));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 // The break should happens after Thai character. 543 // The break should happens after Thai character.
542 setBodyContent("<p id='target'>a&#x0E40;b</p>"); 544 setBodyContent("<p id='target'>a&#x0E40;b</p>");
543 node = document().getElementById("target")->firstChild(); 545 node = document().getElementById("target")->firstChild();
544 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3)); 546 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
545 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 547 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
546 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 548 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
547 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 549 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
548 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1)); 550 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
549 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2)); 551 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
550 552
551 // Blink customization: Don't break before Japanese half-width katakana voiced marks. 553 // Blink customization: Don't break before Japanese half-width katakana voiced
554 // marks.
552 setBodyContent("<p id='target'>a&#xFF76;&#xFF9E;b</p>"); 555 setBodyContent("<p id='target'>a&#xFF76;&#xFF9E;b</p>");
553 node = document().getElementById("target")->firstChild(); 556 node = document().getElementById("target")->firstChild();
554 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4)); 557 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
555 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3)); 558 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
556 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 559 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
557 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 560 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
558 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1)); 561 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
559 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3)); 562 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
560 563
561 // Additional rule for IndicSyllabicCategory=Virama: Do not break after that. 564 // Additional rule for IndicSyllabicCategory=Virama: Do not break after that.
562 // See http://www.unicode.org/Public/9.0.0/ucd/IndicSyllabicCategory-9.0.0d2.t xt 565 // See
566 // http://www.unicode.org/Public/9.0.0/ucd/IndicSyllabicCategory-9.0.0d2.txt
563 // U+0905 is DEVANAGARI LETTER A. This has Extend property. 567 // U+0905 is DEVANAGARI LETTER A. This has Extend property.
564 // U+094D is DEVANAGARI SIGN VIRAMA. This has Virama property. 568 // U+094D is DEVANAGARI SIGN VIRAMA. This has Virama property.
565 // U+0915 is DEVANAGARI LETTER KA. 569 // U+0915 is DEVANAGARI LETTER KA.
566 setBodyContent("<p id='target'>a&#x0905;&#x094D;&#x0915;b</p>"); 570 setBodyContent("<p id='target'>a&#x0905;&#x094D;&#x0915;b</p>");
567 node = document().getElementById("target")->firstChild(); 571 node = document().getElementById("target")->firstChild();
568 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5)); 572 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5));
569 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 4)); 573 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 4));
570 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 574 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
571 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 575 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
572 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 1)); 576 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 1));
573 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4)); 577 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4));
574 // U+0E01 is THAI CHARACTER KO KAI 578 // U+0E01 is THAI CHARACTER KO KAI
575 // U+0E3A is THAI CHARACTER PHINTHU 579 // U+0E3A is THAI CHARACTER PHINTHU
576 // Should break after U+0E3A since U+0E3A has Virama property but not listed i n 580 // Should break after U+0E3A since U+0E3A has Virama property but not listed
577 // IndicSyllabicCategory=Virama. 581 // in IndicSyllabicCategory=Virama.
578 setBodyContent("<p id='target'>a&#x0E01;&#x0E3A;&#x0E01;b</p>"); 582 setBodyContent("<p id='target'>a&#x0E01;&#x0E3A;&#x0E01;b</p>");
579 node = document().getElementById("target")->firstChild(); 583 node = document().getElementById("target")->firstChild();
580 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5)); 584 EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5));
581 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4)); 585 EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
582 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3)); 586 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
583 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1)); 587 EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
584 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 588 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
585 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1)); 589 EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
586 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3)); 590 EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
587 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4)); 591 EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 694 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
691 setBodyContent("<p id='target'>" + T + LV + "</p>"); 695 setBodyContent("<p id='target'>" + T + LV + "</p>");
692 node = document().getElementById("target")->firstChild(); 696 node = document().getElementById("target")->firstChild();
693 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 697 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
694 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 698 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
695 setBodyContent("<p id='target'>" + T + LVT + "</p>"); 699 setBodyContent("<p id='target'>" + T + LVT + "</p>");
696 node = document().getElementById("target")->firstChild(); 700 node = document().getElementById("target")->firstChild();
697 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 701 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
698 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 702 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
699 703
700 // For GB10, if base emoji character is not E_Base or EBG, break happens befor e E_Modifier. 704 // For GB10, if base emoji character is not E_Base or EBG, break happens
705 // before E_Modifier.
701 setBodyContent("<p id='target'>a&#x1F3FB;</p>"); 706 setBodyContent("<p id='target'>a&#x1F3FB;</p>");
702 node = document().getElementById("target")->firstChild(); 707 node = document().getElementById("target")->firstChild();
703 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3)); 708 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
704 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 709 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
705 // U+1F5FA(WORLD MAP) doesn't have either E_Base or EBG property. 710 // U+1F5FA(WORLD MAP) doesn't have either E_Base or EBG property.
706 setBodyContent("<p id='target'>&#x1F5FA;&#x1F3FB;</p>"); 711 setBodyContent("<p id='target'>&#x1F5FA;&#x1F3FB;</p>");
707 node = document().getElementById("target")->firstChild(); 712 node = document().getElementById("target")->firstChild();
708 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 4)); 713 EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 4));
709 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0)); 714 EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0));
710 715
711 // For GB11, if trailing character is not Glue_After_Zwj or EBG, break happens after ZWJ. 716 // For GB11, if trailing character is not Glue_After_Zwj or EBG, break happens
717 // after ZWJ.
712 // U+1F5FA(WORLD MAP) doesn't have either Glue_After_Zwj or EBG. 718 // U+1F5FA(WORLD MAP) doesn't have either Glue_After_Zwj or EBG.
713 setBodyContent("<p id='target'>&#x200D;a</p>"); 719 setBodyContent("<p id='target'>&#x200D;a</p>");
714 node = document().getElementById("target")->firstChild(); 720 node = document().getElementById("target")->firstChild();
715 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2)); 721 EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
716 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0)); 722 EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
717 } 723 }
718 724
719 TEST_F(EditingUtilitiesTest, previousPositionOf_Backspace) { 725 TEST_F(EditingUtilitiesTest, previousPositionOf_Backspace) {
720 // BMP characters. Only one code point should be deleted. 726 // BMP characters. Only one code point should be deleted.
721 setBodyContent("<p id='target'>abc</p>"); 727 setBodyContent("<p id='target'>abc</p>");
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 PositionMoveType::BackwardDeletion)); 823 PositionMoveType::BackwardDeletion));
818 824
819 // Edge case: broken surrogate pairs. 825 // Edge case: broken surrogate pairs.
820 setBodyContent( 826 setBodyContent(
821 "<p id='target'>&#xD83D;</p>"); // &#xD83D; is unpaired lead surrogate. 827 "<p id='target'>&#xD83D;</p>"); // &#xD83D; is unpaired lead surrogate.
822 node = document().getElementById("target")->firstChild(); 828 node = document().getElementById("target")->firstChild();
823 EXPECT_EQ(Position(node, 0), 829 EXPECT_EQ(Position(node, 0),
824 previousPositionOf(Position(node, 1), 830 previousPositionOf(Position(node, 1),
825 PositionMoveType::BackwardDeletion)); 831 PositionMoveType::BackwardDeletion));
826 832
827 setBodyContent( 833 // &#xD83D; is unpaired lead surrogate.
828 "<p id='target'>&#x1F441;&#xD83D;&#x1F441;</p>"); // &#xD83D; is unpaired lead surrogate. 834 setBodyContent("<p id='target'>&#x1F441;&#xD83D;&#x1F441;</p>");
829 node = document().getElementById("target")->firstChild(); 835 node = document().getElementById("target")->firstChild();
830 EXPECT_EQ(Position(node, 3), 836 EXPECT_EQ(Position(node, 3),
831 previousPositionOf(Position(node, 5), 837 previousPositionOf(Position(node, 5),
832 PositionMoveType::BackwardDeletion)); 838 PositionMoveType::BackwardDeletion));
833 EXPECT_EQ(Position(node, 2), 839 EXPECT_EQ(Position(node, 2),
834 previousPositionOf(Position(node, 3), 840 previousPositionOf(Position(node, 3),
835 PositionMoveType::BackwardDeletion)); 841 PositionMoveType::BackwardDeletion));
836 EXPECT_EQ(Position(node, 0), 842 EXPECT_EQ(Position(node, 0),
837 previousPositionOf(Position(node, 2), 843 previousPositionOf(Position(node, 2),
838 PositionMoveType::BackwardDeletion)); 844 PositionMoveType::BackwardDeletion));
(...skipping 11 matching lines...) Expand all
850 previousPositionOf(Position(node, 1), 856 previousPositionOf(Position(node, 1),
851 PositionMoveType::BackwardDeletion)); 857 PositionMoveType::BackwardDeletion));
852 858
853 setBodyContent( 859 setBodyContent(
854 "<p id='target'>&#xDC41;</p>"); // &#xDC41; is unpaired trail surrogate. 860 "<p id='target'>&#xDC41;</p>"); // &#xDC41; is unpaired trail surrogate.
855 node = document().getElementById("target")->firstChild(); 861 node = document().getElementById("target")->firstChild();
856 EXPECT_EQ(Position(node, 0), 862 EXPECT_EQ(Position(node, 0),
857 previousPositionOf(Position(node, 1), 863 previousPositionOf(Position(node, 1),
858 PositionMoveType::BackwardDeletion)); 864 PositionMoveType::BackwardDeletion));
859 865
860 setBodyContent( 866 // &#xDC41; is unpaired trail surrogate.
861 "<p id='target'>&#x1F441;&#xDC41;&#x1F441;</p>"); // &#xDC41; is unpaired trail surrogate. 867 setBodyContent("<p id='target'>&#x1F441;&#xDC41;&#x1F441;</p>");
862 node = document().getElementById("target")->firstChild(); 868 node = document().getElementById("target")->firstChild();
863 EXPECT_EQ(Position(node, 3), 869 EXPECT_EQ(Position(node, 3),
864 previousPositionOf(Position(node, 5), 870 previousPositionOf(Position(node, 5),
865 PositionMoveType::BackwardDeletion)); 871 PositionMoveType::BackwardDeletion));
866 EXPECT_EQ(Position(node, 2), 872 EXPECT_EQ(Position(node, 2),
867 previousPositionOf(Position(node, 3), 873 previousPositionOf(Position(node, 3),
868 PositionMoveType::BackwardDeletion)); 874 PositionMoveType::BackwardDeletion));
869 EXPECT_EQ(Position(node, 0), 875 EXPECT_EQ(Position(node, 0),
870 previousPositionOf(Position(node, 2), 876 previousPositionOf(Position(node, 2),
871 PositionMoveType::BackwardDeletion)); 877 PositionMoveType::BackwardDeletion));
872 878
873 setBodyContent( 879 // &#xDC41; is unpaired trail surrogate.
874 "<p id='target'>a&#xDC41;a</p>"); // &#xDC41; is unpaired trail surrogate . 880 setBodyContent("<p id='target'>a&#xDC41;a</p>");
875 node = document().getElementById("target")->firstChild(); 881 node = document().getElementById("target")->firstChild();
876 EXPECT_EQ(Position(node, 2), 882 EXPECT_EQ(Position(node, 2),
877 previousPositionOf(Position(node, 3), 883 previousPositionOf(Position(node, 3),
878 PositionMoveType::BackwardDeletion)); 884 PositionMoveType::BackwardDeletion));
879 EXPECT_EQ(Position(node, 1), 885 EXPECT_EQ(Position(node, 1),
880 previousPositionOf(Position(node, 2), 886 previousPositionOf(Position(node, 2),
881 PositionMoveType::BackwardDeletion)); 887 PositionMoveType::BackwardDeletion));
882 EXPECT_EQ(Position(node, 0), 888 EXPECT_EQ(Position(node, 0),
883 previousPositionOf(Position(node, 1), 889 previousPositionOf(Position(node, 1),
884 PositionMoveType::BackwardDeletion)); 890 PositionMoveType::BackwardDeletion));
885 891
886 // Edge case: specify middle of surrogate pairs. 892 // Edge case: specify middle of surrogate pairs.
887 setBodyContent("<p id='target'>&#x1F441;&#x1F441;&#x1F441</p>"); 893 setBodyContent("<p id='target'>&#x1F441;&#x1F441;&#x1F441</p>");
888 node = document().getElementById("target")->firstChild(); 894 node = document().getElementById("target")->firstChild();
889 EXPECT_EQ(Position(node, 4), 895 EXPECT_EQ(Position(node, 4),
890 previousPositionOf(Position(node, 5), 896 previousPositionOf(Position(node, 5),
891 PositionMoveType::BackwardDeletion)); 897 PositionMoveType::BackwardDeletion));
892 EXPECT_EQ(Position(node, 2), 898 EXPECT_EQ(Position(node, 2),
893 previousPositionOf(Position(node, 3), 899 previousPositionOf(Position(node, 3),
894 PositionMoveType::BackwardDeletion)); 900 PositionMoveType::BackwardDeletion));
895 EXPECT_EQ(Position(node, 0), 901 EXPECT_EQ(Position(node, 0),
896 previousPositionOf(Position(node, 1), 902 previousPositionOf(Position(node, 1),
897 PositionMoveType::BackwardDeletion)); 903 PositionMoveType::BackwardDeletion));
898 } 904 }
899 905
900 } // namespace blink 906 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/EditingUtilities.cpp ('k') | third_party/WebKit/Source/core/editing/Editor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698