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

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

Issue 2451613003: Get rid of createVisibleSelection() taking two Position (Closed)
Patch Set: 2016-10-26T15:09:55 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "bindings/core/v8/ExceptionStatePlaceholder.h" 5 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
6 #include "core/dom/Document.h" 6 #include "core/dom/Document.h"
7 #include "core/dom/Element.h" 7 #include "core/dom/Element.h"
8 #include "core/dom/Text.h" 8 #include "core/dom/Text.h"
9 #include "core/editing/FrameSelection.h" 9 #include "core/editing/FrameSelection.h"
10 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 p1 = Position(text2, selBegin - str1.length()); 270 p1 = Position(text2, selBegin - str1.length());
271 else 271 else
272 p1 = Position(text3, selBegin - str1.length() - str2.length()); 272 p1 = Position(text3, selBegin - str1.length() - str2.length());
273 if (selEnd < str1.length()) 273 if (selEnd < str1.length())
274 p2 = Position(text1, selEnd); 274 p2 = Position(text1, selEnd);
275 else if (selEnd < str1.length() + str2.length()) 275 else if (selEnd < str1.length() + str2.length())
276 p2 = Position(text2, selEnd - str1.length()); 276 p2 = Position(text2, selEnd - str1.length());
277 else 277 else
278 p2 = Position(text3, selEnd - str1.length() - str2.length()); 278 p2 = Position(text3, selEnd - str1.length() - str2.length());
279 279
280 selection().setSelection(createVisibleSelection(p1, p2)); 280 selection().setSelection(
281 SelectionInDOMTree::Builder().setBaseAndExtent(p1, p2).build());
281 } 282 }
282 283
283 void GranularityStrategyTest::setupVerticalAlign(String str1, 284 void GranularityStrategyTest::setupVerticalAlign(String str1,
284 String str2, 285 String str2,
285 String str3, 286 String str3,
286 size_t selBegin, 287 size_t selBegin,
287 size_t selEnd) { 288 size_t selEnd) {
288 setInnerHTML( 289 setInnerHTML(
289 "<html>" 290 "<html>"
290 "<head>" 291 "<head>"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 dummyPageHolder().frame().settings()->setSelectionStrategy( 498 dummyPageHolder().frame().settings()->setSelectionStrategy(
498 SelectionStrategy::Character); 499 SelectionStrategy::Character);
499 dummyPageHolder().frame().settings()->setDefaultFontSize(12); 500 dummyPageHolder().frame().settings()->setDefaultFontSize(12);
500 // "Foo Bar Baz," 501 // "Foo Bar Baz,"
501 Text* text = appendTextNode("Foo Bar Baz,"); 502 Text* text = appendTextNode("Foo Bar Baz,");
502 document().updateStyleAndLayout(); 503 document().updateStyleAndLayout();
503 504
504 // "Foo B^a|>r Baz," (^ means base, | means extent, , < means start, and > 505 // "Foo B^a|>r Baz," (^ means base, | means extent, , < means start, and >
505 // means end). 506 // means end).
506 selection().setSelection( 507 selection().setSelection(
507 createVisibleSelection(Position(text, 5), Position(text, 6))); 508 SelectionInDOMTree::Builder()
509 .setBaseAndExtent(Position(text, 5), Position(text, 6))
510 .build());
508 EXPECT_EQ_SELECTED_TEXT("a"); 511 EXPECT_EQ_SELECTED_TEXT("a");
509 // "Foo B^ar B|>az," 512 // "Foo B^ar B|>az,"
510 selection().moveRangeSelectionExtent( 513 selection().moveRangeSelectionExtent(
511 visiblePositionToContentsPoint(createVisiblePosition(Position(text, 9)))); 514 visiblePositionToContentsPoint(createVisiblePosition(Position(text, 9))));
512 EXPECT_EQ_SELECTED_TEXT("ar B"); 515 EXPECT_EQ_SELECTED_TEXT("ar B");
513 // "F<|oo B^ar Baz," 516 // "F<|oo B^ar Baz,"
514 selection().moveRangeSelectionExtent( 517 selection().moveRangeSelectionExtent(
515 visiblePositionToContentsPoint(createVisiblePosition(Position(text, 1)))); 518 visiblePositionToContentsPoint(createVisiblePosition(Position(text, 1))));
516 EXPECT_EQ_SELECTED_TEXT("oo B"); 519 EXPECT_EQ_SELECTED_TEXT("oo B");
517 } 520 }
518 521
519 // DirectionGranularityStrategy strategy on rotated text should revert to the 522 // DirectionGranularityStrategy strategy on rotated text should revert to the
520 // same behavior as CharacterGranularityStrategy 523 // same behavior as CharacterGranularityStrategy
521 TEST_F(GranularityStrategyTest, DirectionRotate) { 524 TEST_F(GranularityStrategyTest, DirectionRotate) {
522 Text* text = setupRotate("Foo Bar Baz,"); 525 Text* text = setupRotate("Foo Bar Baz,");
523 // "Foo B^a|>r Baz," (^ means base, | means extent, , < means start, and > 526 // "Foo B^a|>r Baz," (^ means base, | means extent, , < means start, and >
524 // means end). 527 // means end).
525 selection().setSelection( 528 selection().setSelection(
526 createVisibleSelection(Position(text, 5), Position(text, 6))); 529 SelectionInDOMTree::Builder()
530 .setBaseAndExtent(Position(text, 5), Position(text, 6))
531 .build());
527 EXPECT_EQ_SELECTED_TEXT("a"); 532 EXPECT_EQ_SELECTED_TEXT("a");
528 IntPoint p = m_letterPos[9]; 533 IntPoint p = m_letterPos[9];
529 // Need to move by one pixel, otherwise this point is not evaluated 534 // Need to move by one pixel, otherwise this point is not evaluated
530 // to the same line as the text by hit testing. 535 // to the same line as the text by hit testing.
531 p.move(1, 0); 536 p.move(1, 0);
532 // "Foo B^ar B|>az," 537 // "Foo B^ar B|>az,"
533 selection().moveRangeSelectionExtent(p); 538 selection().moveRangeSelectionExtent(p);
534 EXPECT_EQ_SELECTED_TEXT("ar B"); 539 EXPECT_EQ_SELECTED_TEXT("ar B");
535 p = m_letterPos[1]; 540 p = m_letterPos[1];
536 p.move(1, 0); 541 p.move(1, 0);
537 // "F<|oo B^ar Baz," 542 // "F<|oo B^ar Baz,"
538 selection().moveRangeSelectionExtent(p); 543 selection().moveRangeSelectionExtent(p);
539 EXPECT_EQ_SELECTED_TEXT("oo B"); 544 EXPECT_EQ_SELECTED_TEXT("oo B");
540 } 545 }
541 546
542 TEST_F(GranularityStrategyTest, DirectionExpandTranslateZ) { 547 TEST_F(GranularityStrategyTest, DirectionExpandTranslateZ) {
543 Text* text = setupTranslateZ("abcdef ghij kl mnopqr stuvwi inm mnii,"); 548 Text* text = setupTranslateZ("abcdef ghij kl mnopqr stuvwi inm mnii,");
544 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent, 549 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent,
545 // < means start, and > means end). 550 // < means start, and > means end).
546 selection().setSelection( 551 selection().setSelection(
547 createVisibleSelection(Position(text, 18), Position(text, 19))); 552 SelectionInDOMTree::Builder()
553 .setBaseAndExtent(Position(text, 18), Position(text, 19))
554 .build());
548 EXPECT_EQ_SELECTED_TEXT("p"); 555 EXPECT_EQ_SELECTED_TEXT("p");
549 testDirectionExpand(); 556 testDirectionExpand();
550 } 557 }
551 558
552 TEST_F(GranularityStrategyTest, DirectionExpandTransform) { 559 TEST_F(GranularityStrategyTest, DirectionExpandTransform) {
553 Text* text = setupTransform("abcdef ghij kl mnopqr stuvwi inm mnii,"); 560 Text* text = setupTransform("abcdef ghij kl mnopqr stuvwi inm mnii,");
554 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent, 561 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent,
555 // < means start, and > means end). 562 // < means start, and > means end).
556 selection().setSelection( 563 selection().setSelection(
557 createVisibleSelection(Position(text, 18), Position(text, 19))); 564 SelectionInDOMTree::Builder()
565 .setBaseAndExtent(Position(text, 18), Position(text, 19))
566 .build());
558 EXPECT_EQ_SELECTED_TEXT("p"); 567 EXPECT_EQ_SELECTED_TEXT("p");
559 testDirectionExpand(); 568 testDirectionExpand();
560 } 569 }
561 570
562 TEST_F(GranularityStrategyTest, DirectionExpandVerticalAlign) { 571 TEST_F(GranularityStrategyTest, DirectionExpandVerticalAlign) {
563 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent, 572 // "abcdef ghij kl mno^p|>qr stuvwi inm mnii," (^ means base, | means extent,
564 // < means start, and > means end). 573 // < means start, and > means end).
565 setupVerticalAlign("abcdef ghij kl m", "nopq", "r stuvwi inm mnii,", 18, 19); 574 setupVerticalAlign("abcdef ghij kl m", "nopq", "r stuvwi inm mnii,", 18, 19);
566 EXPECT_EQ_SELECTED_TEXT("p"); 575 EXPECT_EQ_SELECTED_TEXT("p");
567 testDirectionExpand(); 576 testDirectionExpand();
568 } 577 }
569 578
570 TEST_F(GranularityStrategyTest, DirectionExpandFontSizes) { 579 TEST_F(GranularityStrategyTest, DirectionExpandFontSizes) {
571 setupFontSize("abcdef ghij kl mnopqr st", "uv", "wi inm mnii,", 18, 19); 580 setupFontSize("abcdef ghij kl mnopqr st", "uv", "wi inm mnii,", 18, 19);
572 EXPECT_EQ_SELECTED_TEXT("p"); 581 EXPECT_EQ_SELECTED_TEXT("p");
573 testDirectionExpand(); 582 testDirectionExpand();
574 } 583 }
575 584
576 TEST_F(GranularityStrategyTest, DirectionShrinkTranslateZ) { 585 TEST_F(GranularityStrategyTest, DirectionShrinkTranslateZ) {
577 Text* text = setupTranslateZ("abcdef ghij kl mnopqr iiinmni, abc"); 586 Text* text = setupTranslateZ("abcdef ghij kl mnopqr iiinmni, abc");
578 selection().setSelection( 587 selection().setSelection(
579 createVisibleSelection(Position(text, 18), Position(text, 21))); 588 SelectionInDOMTree::Builder()
589 .setBaseAndExtent(Position(text, 18), Position(text, 21))
590 .build());
580 EXPECT_EQ_SELECTED_TEXT("pqr"); 591 EXPECT_EQ_SELECTED_TEXT("pqr");
581 testDirectionShrink(); 592 testDirectionShrink();
582 } 593 }
583 594
584 TEST_F(GranularityStrategyTest, DirectionShrinkTransform) { 595 TEST_F(GranularityStrategyTest, DirectionShrinkTransform) {
585 Text* text = setupTransform("abcdef ghij kl mnopqr iiinmni, abc"); 596 Text* text = setupTransform("abcdef ghij kl mnopqr iiinmni, abc");
586 selection().setSelection( 597 selection().setSelection(
587 createVisibleSelection(Position(text, 18), Position(text, 21))); 598 SelectionInDOMTree::Builder()
599 .setBaseAndExtent(Position(text, 18), Position(text, 21))
600 .build());
588 EXPECT_EQ_SELECTED_TEXT("pqr"); 601 EXPECT_EQ_SELECTED_TEXT("pqr");
589 testDirectionShrink(); 602 testDirectionShrink();
590 } 603 }
591 604
592 TEST_F(GranularityStrategyTest, DirectionShrinkVerticalAlign) { 605 TEST_F(GranularityStrategyTest, DirectionShrinkVerticalAlign) {
593 setupVerticalAlign("abcdef ghij kl mnopqr ii", "inm", "ni, abc", 18, 21); 606 setupVerticalAlign("abcdef ghij kl mnopqr ii", "inm", "ni, abc", 18, 21);
594 EXPECT_EQ_SELECTED_TEXT("pqr"); 607 EXPECT_EQ_SELECTED_TEXT("pqr");
595 testDirectionShrink(); 608 testDirectionShrink();
596 } 609 }
597 610
598 TEST_F(GranularityStrategyTest, DirectionShrinkFontSizes) { 611 TEST_F(GranularityStrategyTest, DirectionShrinkFontSizes) {
599 setupFontSize("abcdef ghij kl mnopqr ii", "inm", "ni, abc", 18, 21); 612 setupFontSize("abcdef ghij kl mnopqr ii", "inm", "ni, abc", 18, 21);
600 EXPECT_EQ_SELECTED_TEXT("pqr"); 613 EXPECT_EQ_SELECTED_TEXT("pqr");
601 testDirectionShrink(); 614 testDirectionShrink();
602 } 615 }
603 616
604 TEST_F(GranularityStrategyTest, DirectionSwitchSideTranslateZ) { 617 TEST_F(GranularityStrategyTest, DirectionSwitchSideTranslateZ) {
605 Text* text = setupTranslateZ("abcd efgh ijkl mnopqr iiinmni, abc"); 618 Text* text = setupTranslateZ("abcd efgh ijkl mnopqr iiinmni, abc");
606 selection().setSelection( 619 selection().setSelection(
607 createVisibleSelection(Position(text, 18), Position(text, 21))); 620 SelectionInDOMTree::Builder()
621 .setBaseAndExtent(Position(text, 18), Position(text, 21))
622 .build());
608 EXPECT_EQ_SELECTED_TEXT("pqr"); 623 EXPECT_EQ_SELECTED_TEXT("pqr");
609 testDirectionSwitchSide(); 624 testDirectionSwitchSide();
610 } 625 }
611 626
612 TEST_F(GranularityStrategyTest, DirectionSwitchSideTransform) { 627 TEST_F(GranularityStrategyTest, DirectionSwitchSideTransform) {
613 Text* text = setupTransform("abcd efgh ijkl mnopqr iiinmni, abc"); 628 Text* text = setupTransform("abcd efgh ijkl mnopqr iiinmni, abc");
614 selection().setSelection( 629 selection().setSelection(
615 createVisibleSelection(Position(text, 18), Position(text, 21))); 630 SelectionInDOMTree::Builder()
631 .setBaseAndExtent(Position(text, 18), Position(text, 21))
632 .build());
616 EXPECT_EQ_SELECTED_TEXT("pqr"); 633 EXPECT_EQ_SELECTED_TEXT("pqr");
617 testDirectionSwitchSide(); 634 testDirectionSwitchSide();
618 } 635 }
619 636
620 TEST_F(GranularityStrategyTest, DirectionSwitchSideVerticalAlign) { 637 TEST_F(GranularityStrategyTest, DirectionSwitchSideVerticalAlign) {
621 setupVerticalAlign("abcd efgh ijkl", " mnopqr", " iiinmni, abc", 18, 21); 638 setupVerticalAlign("abcd efgh ijkl", " mnopqr", " iiinmni, abc", 18, 21);
622 EXPECT_EQ_SELECTED_TEXT("pqr"); 639 EXPECT_EQ_SELECTED_TEXT("pqr");
623 testDirectionSwitchSide(); 640 testDirectionSwitchSide();
624 } 641 }
625 642
(...skipping 12 matching lines...) Expand all
638 document().body()->appendChild(text); 655 document().body()->appendChild(text);
639 document().updateStyleAndLayout(); 656 document().updateStyleAndLayout();
640 dummyPageHolder().frame().settings()->setSelectionStrategy( 657 dummyPageHolder().frame().settings()->setSelectionStrategy(
641 SelectionStrategy::Direction); 658 SelectionStrategy::Direction);
642 659
643 parseText(text); 660 parseText(text);
644 661
645 // "abcd efgh ijkl mno^pqr|> iiin, abc" (^ means base, | means extent, < means 662 // "abcd efgh ijkl mno^pqr|> iiin, abc" (^ means base, | means extent, < means
646 // start, and > means end). 663 // start, and > means end).
647 selection().setSelection( 664 selection().setSelection(
648 createVisibleSelection(Position(text, 18), Position(text, 21))); 665 SelectionInDOMTree::Builder()
666 .setBaseAndExtent(Position(text, 18), Position(text, 21))
667 .build());
649 EXPECT_EQ_SELECTED_TEXT("pqr"); 668 EXPECT_EQ_SELECTED_TEXT("pqr");
650 // Move to the middle of word #4 selecting it - this will set the offset to 669 // Move to the middle of word #4 selecting it - this will set the offset to
651 // be half the width of "iiin". 670 // be half the width of "iiin".
652 selection().moveRangeSelectionExtent(m_wordMiddles[4]); 671 selection().moveRangeSelectionExtent(m_wordMiddles[4]);
653 EXPECT_EQ_SELECTED_TEXT("pqr iiin"); 672 EXPECT_EQ_SELECTED_TEXT("pqr iiin");
654 // Move to the middle of word #2 - extent will switch over to the other 673 // Move to the middle of word #2 - extent will switch over to the other
655 // side of the base, and we should enter word granularity since we pass 674 // side of the base, and we should enter word granularity since we pass
656 // the word boundary. The offset should become negative since the width 675 // the word boundary. The offset should become negative since the width
657 // of "efghjkkl" is greater than that of "iiin". 676 // of "efghjkkl" is greater than that of "iiin".
658 int offset = m_letterPos[26].x() - m_wordMiddles[4].x(); 677 int offset = m_letterPos[26].x() - m_wordMiddles[4].x();
(...skipping 15 matching lines...) Expand all
674 document().body()->appendChild(text); 693 document().body()->appendChild(text);
675 document().updateStyleAndLayout(); 694 document().updateStyleAndLayout();
676 dummyPageHolder().frame().settings()->setSelectionStrategy( 695 dummyPageHolder().frame().settings()->setSelectionStrategy(
677 SelectionStrategy::Direction); 696 SelectionStrategy::Direction);
678 697
679 parseText(text); 698 parseText(text);
680 699
681 // "ab cd efghijkl ^mnopqr |>stuvwi inm," (^ means base and | means extent, 700 // "ab cd efghijkl ^mnopqr |>stuvwi inm," (^ means base and | means extent,
682 // > means end). 701 // > means end).
683 selection().setSelection( 702 selection().setSelection(
684 createVisibleSelection(Position(text, 15), Position(text, 22))); 703 SelectionInDOMTree::Builder()
704 .setBaseAndExtent(Position(text, 15), Position(text, 22))
705 .build());
685 EXPECT_EQ_SELECTED_TEXT("mnopqr "); 706 EXPECT_EQ_SELECTED_TEXT("mnopqr ");
686 selection().moveRangeSelectionExtent(m_wordMiddles[4]); 707 selection().moveRangeSelectionExtent(m_wordMiddles[4]);
687 EXPECT_EQ_SELECTED_TEXT("mnopqr iiin"); 708 EXPECT_EQ_SELECTED_TEXT("mnopqr iiin");
688 } 709 }
689 710
690 } // namespace blink 711 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698