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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/editing_test.extjs

Issue 2945703002: add support for rich text selections (Closed)
Patch Set: Address comments. Created 3 years, 6 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 | « chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 test fixture. 5 // Include test fixture.
6 GEN_INCLUDE(['../../testing/chromevox_next_e2e_test_base.js', 6 GEN_INCLUDE(['../../testing/chromevox_next_e2e_test_base.js',
7 '../../testing/assert_additions.js']); 7 '../../testing/assert_additions.js']);
8 8
9 GEN_INCLUDE(['../../testing/mock_feedback.js']); 9 GEN_INCLUDE(['../../testing/mock_feedback.js']);
10 10
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 <p>hello <b>world</b></p> 485 <p>hello <b>world</b></p>
486 </div> 486 </div>
487 */}, function(root) { 487 */}, function(root) {
488 var thisIsATest = root.findAll({role: RoleType.PARAGRAPH})[0].firstChild; 488 var thisIsATest = root.findAll({role: RoleType.PARAGRAPH})[0].firstChild;
489 var hello = root.findAll({role: RoleType.PARAGRAPH})[1].firstChild; 489 var hello = root.findAll({role: RoleType.PARAGRAPH})[1].firstChild;
490 var world = root.findAll({role: RoleType.PARAGRAPH})[1].lastChild; 490 var world = root.findAll({role: RoleType.PARAGRAPH})[1].lastChild;
491 491
492 // The same position -- sanity check. 492 // The same position -- sanity check.
493 var e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 0); 493 var e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 0);
494 assertEquals('this ', e1.text); 494 assertEquals('this ', e1.text);
495 assertTrue(e1.equals(e1)); 495 assertTrue(e1.isSameLine(e1));
496 496
497 // Offset into the same soft line. 497 // Offset into the same soft line.
498 var e2 = new editing.EditableLine(thisIsATest, 1, thisIsATest, 1); 498 var e2 = new editing.EditableLine(thisIsATest, 1, thisIsATest, 1);
499 assertTrue(e1.equals(e2)); 499 assertTrue(e1.isSameLine(e2));
500 500
501 // Boundary. 501 // Boundary.
502 e2 = new editing.EditableLine(thisIsATest, 4, thisIsATest, 4); 502 e2 = new editing.EditableLine(thisIsATest, 4, thisIsATest, 4);
503 assertTrue(e1.equals(e2)); 503 assertTrue(e1.isSameLine(e2));
504 504
505 // Offsets into different soft lines. 505 // Offsets into different soft lines.
506 e2 = new editing.EditableLine(thisIsATest, 5, thisIsATest, 5); 506 e2 = new editing.EditableLine(thisIsATest, 5, thisIsATest, 5);
507 assertEquals('is ', e2.text); 507 assertEquals('is ', e2.text);
508 assertFalse(e1.equals(e2)); 508 assertFalse(e1.isSameLine(e2));
509 509
510 // Sanity check; second soft line. 510 // Sanity check; second soft line.
511 assertTrue(e2.equals(e2)); 511 assertTrue(e2.isSameLine(e2));
512 512
513 // Different offsets into second soft line. 513 // Different offsets into second soft line.
514 e1 = new editing.EditableLine(thisIsATest, 6, thisIsATest, 6); 514 e1 = new editing.EditableLine(thisIsATest, 6, thisIsATest, 6);
515 assertTrue(e1.equals(e2)); 515 assertTrue(e1.isSameLine(e2));
516 516
517 // Boundary. 517 // Boundary.
518 e1 = new editing.EditableLine(thisIsATest, 7, thisIsATest, 7); 518 e1 = new editing.EditableLine(thisIsATest, 7, thisIsATest, 7);
519 assertTrue(e1.equals(e2)); 519 assertTrue(e1.isSameLine(e2));
520 520
521 // Third line. 521 // Third line.
522 e1 = new editing.EditableLine(thisIsATest, 8, thisIsATest, 8); 522 e1 = new editing.EditableLine(thisIsATest, 8, thisIsATest, 8);
523 assertEquals('a ', e1.text); 523 assertEquals('a ', e1.text);
524 assertFalse(e1.equals(e2)); 524 assertFalse(e1.isSameLine(e2));
525 525
526 // Last line. 526 // Last line.
527 e2 = new editing.EditableLine(thisIsATest, 10, thisIsATest, 10); 527 e2 = new editing.EditableLine(thisIsATest, 10, thisIsATest, 10);
528 assertEquals('test', e2.text); 528 assertEquals('test', e2.text);
529 assertFalse(e1.equals(e2)); 529 assertFalse(e1.isSameLine(e2));
530 530
531 // Boundary. 531 // Boundary.
532 e1 = new editing.EditableLine(thisIsATest, 13, thisIsATest, 13); 532 e1 = new editing.EditableLine(thisIsATest, 13, thisIsATest, 13);
533 assertTrue(e1.equals(e2)); 533 assertTrue(e1.isSameLine(e2));
534 534
535 // Cross into new paragraph. 535 // Cross into new paragraph.
536 e2 = new editing.EditableLine(hello, 0, hello, 0); 536 e2 = new editing.EditableLine(hello, 0, hello, 0);
537 assertEquals('hello world', e2.text); 537 assertEquals('hello world', e2.text);
538 assertFalse(e1.equals(e2)); 538 assertFalse(e1.isSameLine(e2));
539 539
540 // On same node, with multi-static text line. 540 // On same node, with multi-static text line.
541 e1 = new editing.EditableLine(hello, 1, hello, 1); 541 e1 = new editing.EditableLine(hello, 1, hello, 1);
542 assertTrue(e1.equals(e2)); 542 assertTrue(e1.isSameLine(e2));
543 543
544 // On same node, with multi-static text line; boundary. 544 // On same node, with multi-static text line; boundary.
545 e1 = new editing.EditableLine(hello, 5, hello, 5); 545 e1 = new editing.EditableLine(hello, 5, hello, 5);
546 assertTrue(e1.equals(e2)); 546 assertTrue(e1.isSameLine(e2));
547 547
548 // On different node, with multi-static text line. 548 // On different node, with multi-static text line.
549 e1 = new editing.EditableLine(world, 1, world, 1); 549 e1 = new editing.EditableLine(world, 1, world, 1);
550 assertTrue(e1.equals(e2)); 550 assertTrue(e1.isSameLine(e2));
551 551
552 // Another mix of lines. 552 // Another mix of lines.
553 e2 = new editing.EditableLine(thisIsATest, 9, thisIsATest, 9); 553 e2 = new editing.EditableLine(thisIsATest, 9, thisIsATest, 9);
554 assertFalse(e1.equals(e2)); 554 assertFalse(e1.isSameLine(e2));
555 }); 555 });
556 }); 556 });
557
558 TEST_F('EditingTest', 'EditableLineStrictEquality', function() {
559 this.runWithLoadedTree(function() {/*!
560 <div contenteditable role="textbox">
561 <p style="word-spacing:100000px">this is a test</p>
562 <p>hello <b>world</b></p>
563 </div>
564 */}, function(root) {
565 var thisIsATest = root.findAll({role: RoleType.PARAGRAPH})[0].firstChild;
566 var hello = root.findAll({role: RoleType.PARAGRAPH})[1].firstChild;
567 var world = root.findAll({role: RoleType.PARAGRAPH})[1].lastChild;
568
569 // The same position -- sanity check.
570 var e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 0);
571 assertEquals('this ', e1.text);
572 assertTrue(e1.isSameLineAndSelection(e1));
573
574 // Offset into the same soft line.
575 var e2 = new editing.EditableLine(thisIsATest, 1, thisIsATest, 1);
576 assertFalse(e1.isSameLineAndSelection(e2));
577
578 // Boundary.
579 e2 = new editing.EditableLine(thisIsATest, 4, thisIsATest, 4);
580 assertFalse(e1.isSameLineAndSelection(e2));
581
582 // Offsets into different soft lines.
583 e2 = new editing.EditableLine(thisIsATest, 5, thisIsATest, 5);
584 assertEquals('is ', e2.text);
585 assertFalse(e1.isSameLineAndSelection(e2));
586
587 // Sanity check; second soft line.
588 assertTrue(e2.isSameLineAndSelection(e2));
589
590 // Different offsets into second soft line.
591 e1 = new editing.EditableLine(thisIsATest, 6, thisIsATest, 6);
592 assertFalse(e1.isSameLineAndSelection(e2));
593
594 // Boundary.
595 e1 = new editing.EditableLine(thisIsATest, 7, thisIsATest, 7);
596 assertFalse(e1.isSameLineAndSelection(e2));
597
598 // Cross into new paragraph.
599 e2 = new editing.EditableLine(hello, 0, hello, 0);
600 assertEquals('hello world', e2.text);
601 assertFalse(e1.isSameLineAndSelection(e2));
602
603 // On same node, with multi-static text line.
604 e1 = new editing.EditableLine(hello, 1, hello, 1);
605 assertFalse(e1.isSameLineAndSelection(e2));
606
607 // On same node, with multi-static text line; boundary.
608 e1 = new editing.EditableLine(hello, 5, hello, 5);
609 assertFalse(e1.isSameLineAndSelection(e2));
610 });
611 });
612
613 TEST_F('EditingTest', 'EditableLineBaseLineAnchorOrFocus', function() {
614 this.runWithLoadedTree(function() {/*!
615 <div contenteditable role="textbox">
616 <p style="word-spacing:100000px">this is a test</p>
617 <p>hello <b>world</b></p>
618 </div>
619 */}, function(root) {
620 var thisIsATest = root.findAll({role: RoleType.PARAGRAPH})[0].firstChild;
621 var hello = root.findAll({role: RoleType.PARAGRAPH})[1].firstChild;
622 var world = root.findAll({role: RoleType.PARAGRAPH})[1].lastChild;
623
624 // The same position -- sanity check.
625 var e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 0, true);
626 assertEquals('this ', e1.text);
627
628 // Offsets into different soft lines; base on focus (default).
629 e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 6);
630 assertEquals('is ', e1.text);
631 // Notice that the offset is truncated at the beginning of the line.
632 assertEquals(0, e1.startOffset);
633 // Notice that the end offset is properly retained.
634 assertEquals(1, e1.endOffset);
635
636 // Offsets into different soft lines; base on anchor.
637 e1 = new editing.EditableLine(thisIsATest, 0, thisIsATest, 6, true);
638 assertEquals('this ', e1.text);
639 assertEquals(0, e1.startOffset);
640 // Notice that the end offset is truncated up to the end of line.
641 assertEquals(5, e1.endOffset);
642
643 // Across paragraph selection with base line on focus.
644 e1 = new editing.EditableLine(thisIsATest, 5, hello, 2);
645 assertEquals('hello world', e1.text);
646 assertEquals(0, e1.startOffset);
647 assertEquals(2, e1.endOffset);
648
649 // Across paragraph selection with base line on anchor.
650 e1 = new editing.EditableLine(thisIsATest, 5, hello, 2, true);
651 assertEquals('is ', e1.text);
652 assertEquals(0, e1.startOffset);
653 assertEquals(3, e1.endOffset);
654 })
655 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698