| OLD | NEW |
| 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 /** | 5 /** |
| 6 * @fileoverview Low-level DOM traversal utility functions to find the | 6 * @fileoverview Low-level DOM traversal utility functions to find the |
| 7 * next (or previous) character, word, sentence, line, or paragraph, | 7 * next (or previous) character, word, sentence, line, or paragraph, |
| 8 * in a completely stateless manner without actually manipulating the | 8 * in a completely stateless manner without actually manipulating the |
| 9 * selection. | 9 * selection. |
| 10 */ | 10 */ |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 return true; | 104 return true; |
| 105 } | 105 } |
| 106 return false; | 106 return false; |
| 107 }; | 107 }; |
| 108 | 108 |
| 109 /** | 109 /** |
| 110 * Moves the cursor forwards until it has crossed exactly one character. | 110 * Moves the cursor forwards until it has crossed exactly one character. |
| 111 * @param {cvox.Cursor} cursor The cursor location where the search should | 111 * @param {cvox.Cursor} cursor The cursor location where the search should |
| 112 * start. On exit, the cursor will be immediately to the right of the | 112 * start. On exit, the cursor will be immediately to the right of the |
| 113 * character returned. | 113 * character returned. |
| 114 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 114 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 115 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 115 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 116 * @return {?string} The character found, or null if the bottom of the | 116 * @return {?string} The character found, or null if the bottom of the |
| 117 * document has been reached. | 117 * document has been reached. |
| 118 */ | 118 */ |
| 119 cvox.TraverseUtil.forwardsChar = function( | 119 cvox.TraverseUtil.forwardsChar = function( |
| 120 cursor, elementsEntered, elementsLeft) { | 120 cursor, elementsEntered, elementsLeft) { |
| 121 while (true) { | 121 while (true) { |
| 122 // Move down until we get to a leaf node. | 122 // Move down until we get to a leaf node. |
| 123 var childNode = null; | 123 var childNode = null; |
| 124 if (!cvox.TraverseUtil.treatAsLeafNode(cursor.node)) { | 124 if (!cvox.TraverseUtil.treatAsLeafNode(cursor.node)) { |
| 125 for (var i = cursor.index; i < cursor.node.childNodes.length; i++) { | 125 for (var i = cursor.index; i < cursor.node.childNodes.length; i++) { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 } | 198 } |
| 199 } | 199 } |
| 200 } | 200 } |
| 201 }; | 201 }; |
| 202 | 202 |
| 203 /** | 203 /** |
| 204 * Moves the cursor backwards until it has crossed exactly one character. | 204 * Moves the cursor backwards until it has crossed exactly one character. |
| 205 * @param {cvox.Cursor} cursor The cursor location where the search should | 205 * @param {cvox.Cursor} cursor The cursor location where the search should |
| 206 * start. On exit, the cursor will be immediately to the left of the | 206 * start. On exit, the cursor will be immediately to the left of the |
| 207 * character returned. | 207 * character returned. |
| 208 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 208 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 209 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 209 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 210 * @return {?string} The previous character, or null if the top of the | 210 * @return {?string} The previous character, or null if the top of the |
| 211 * document has been reached. | 211 * document has been reached. |
| 212 */ | 212 */ |
| 213 cvox.TraverseUtil.backwardsChar = function( | 213 cvox.TraverseUtil.backwardsChar = function( |
| 214 cursor, elementsEntered, elementsLeft) { | 214 cursor, elementsEntered, elementsLeft) { |
| 215 while (true) { | 215 while (true) { |
| 216 // Move down until we get to a leaf node. | 216 // Move down until we get to a leaf node. |
| 217 var childNode = null; | 217 var childNode = null; |
| 218 if (!cvox.TraverseUtil.treatAsLeafNode(cursor.node)) { | 218 if (!cvox.TraverseUtil.treatAsLeafNode(cursor.node)) { |
| 219 for (var i = cursor.index - 1; i >= 0; i--) { | 219 for (var i = cursor.index - 1; i >= 0; i--) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 /** | 303 /** |
| 304 * Finds the next character, starting from endCursor. Upon exit, startCursor | 304 * Finds the next character, starting from endCursor. Upon exit, startCursor |
| 305 * and endCursor will surround the next character. If skipWhitespace is | 305 * and endCursor will surround the next character. If skipWhitespace is |
| 306 * true, will skip until a real character is found. Otherwise, it will | 306 * true, will skip until a real character is found. Otherwise, it will |
| 307 * attempt to select all of the whitespace between the initial position | 307 * attempt to select all of the whitespace between the initial position |
| 308 * of endCursor and the next non-whitespace character. | 308 * of endCursor and the next non-whitespace character. |
| 309 * @param {!cvox.Cursor} startCursor On exit, points to the position before | 309 * @param {!cvox.Cursor} startCursor On exit, points to the position before |
| 310 * the char. | 310 * the char. |
| 311 * @param {!cvox.Cursor} endCursor The position to start searching for the next | 311 * @param {!cvox.Cursor} endCursor The position to start searching for the next |
| 312 * char. On exit, will point to the position past the char. | 312 * char. On exit, will point to the position past the char. |
| 313 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 313 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 314 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 314 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 315 * initial and final cursor position will be pushed onto this array. | 315 * initial and final cursor position will be pushed onto this array. |
| 316 * @param {boolean} skipWhitespace If true, will keep scanning until a | 316 * @param {boolean} skipWhitespace If true, will keep scanning until a |
| 317 * non-whitespace character is found. | 317 * non-whitespace character is found. |
| 318 * @return {?string} The next char, or null if the bottom of the | 318 * @return {?string} The next char, or null if the bottom of the |
| 319 * document has been reached. | 319 * document has been reached. |
| 320 */ | 320 */ |
| 321 cvox.TraverseUtil.getNextChar = function( | 321 cvox.TraverseUtil.getNextChar = function( |
| 322 startCursor, endCursor, elementsEntered, elementsLeft, skipWhitespace) { | 322 startCursor, endCursor, elementsEntered, elementsLeft, skipWhitespace) { |
| 323 | 323 |
| 324 // Save the starting position and get the first character. | 324 // Save the starting position and get the first character. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 /** | 366 /** |
| 367 * Finds the previous character, starting from startCursor. Upon exit, | 367 * Finds the previous character, starting from startCursor. Upon exit, |
| 368 * startCursor and endCursor will surround the previous character. | 368 * startCursor and endCursor will surround the previous character. |
| 369 * If skipWhitespace is true, will skip until a real character is found. | 369 * If skipWhitespace is true, will skip until a real character is found. |
| 370 * Otherwise, it will attempt to select all of the whitespace between | 370 * Otherwise, it will attempt to select all of the whitespace between |
| 371 * the initial position of endCursor and the next non-whitespace character. | 371 * the initial position of endCursor and the next non-whitespace character. |
| 372 * @param {!cvox.Cursor} startCursor The position to start searching for the | 372 * @param {!cvox.Cursor} startCursor The position to start searching for the |
| 373 * char. On exit, will point to the position before the char. | 373 * char. On exit, will point to the position before the char. |
| 374 * @param {!cvox.Cursor} endCursor The position to start searching for the next | 374 * @param {!cvox.Cursor} endCursor The position to start searching for the next |
| 375 * char. On exit, will point to the position past the char. | 375 * char. On exit, will point to the position past the char. |
| 376 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 376 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 377 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 377 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 378 * initial and final cursor position will be pushed onto this array. | 378 * initial and final cursor position will be pushed onto this array. |
| 379 * @param {boolean} skipWhitespace If true, will keep scanning until a | 379 * @param {boolean} skipWhitespace If true, will keep scanning until a |
| 380 * non-whitespace character is found. | 380 * non-whitespace character is found. |
| 381 * @return {?string} The previous char, or null if the top of the | 381 * @return {?string} The previous char, or null if the top of the |
| 382 * document has been reached. | 382 * document has been reached. |
| 383 */ | 383 */ |
| 384 cvox.TraverseUtil.getPreviousChar = function( | 384 cvox.TraverseUtil.getPreviousChar = function( |
| 385 startCursor, endCursor, elementsEntered, elementsLeft, skipWhitespace) { | 385 startCursor, endCursor, elementsEntered, elementsLeft, skipWhitespace) { |
| 386 | 386 |
| 387 // Save the starting position and get the first character. | 387 // Save the starting position and get the first character. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 }; | 424 }; |
| 425 | 425 |
| 426 /** | 426 /** |
| 427 * Finds the next word, starting from endCursor. Upon exit, startCursor | 427 * Finds the next word, starting from endCursor. Upon exit, startCursor |
| 428 * and endCursor will surround the next word. A word is defined to be | 428 * and endCursor will surround the next word. A word is defined to be |
| 429 * a string of 1 or more non-whitespace characters in the same DOM node. | 429 * a string of 1 or more non-whitespace characters in the same DOM node. |
| 430 * @param {cvox.Cursor} startCursor On exit, will point to the beginning of the | 430 * @param {cvox.Cursor} startCursor On exit, will point to the beginning of the |
| 431 * word returned. | 431 * word returned. |
| 432 * @param {cvox.Cursor} endCursor The position to start searching for the next | 432 * @param {cvox.Cursor} endCursor The position to start searching for the next |
| 433 * word. On exit, will point to the end of the word returned. | 433 * word. On exit, will point to the end of the word returned. |
| 434 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 434 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 435 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 435 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 436 * @return {?string} The next word, or null if the bottom of the | 436 * @return {?string} The next word, or null if the bottom of the |
| 437 * document has been reached. | 437 * document has been reached. |
| 438 */ | 438 */ |
| 439 cvox.TraverseUtil.getNextWord = function(startCursor, endCursor, | 439 cvox.TraverseUtil.getNextWord = function(startCursor, endCursor, |
| 440 elementsEntered, elementsLeft) { | 440 elementsEntered, elementsLeft) { |
| 441 | 441 |
| 442 // Find the first non-whitespace or non-skipped character. | 442 // Find the first non-whitespace or non-skipped character. |
| 443 var cursor = endCursor.clone(); | 443 var cursor = endCursor.clone(); |
| 444 var c = cvox.TraverseUtil.forwardsChar(cursor, elementsEntered, elementsLeft); | 444 var c = cvox.TraverseUtil.forwardsChar(cursor, elementsEntered, elementsLeft); |
| 445 if (c == null) | 445 if (c == null) |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 | 485 |
| 486 /** | 486 /** |
| 487 * Finds the previous word, starting from startCursor. Upon exit, startCursor | 487 * Finds the previous word, starting from startCursor. Upon exit, startCursor |
| 488 * and endCursor will surround the previous word. A word is defined to be | 488 * and endCursor will surround the previous word. A word is defined to be |
| 489 * a string of 1 or more non-whitespace characters in the same DOM node. | 489 * a string of 1 or more non-whitespace characters in the same DOM node. |
| 490 * @param {cvox.Cursor} startCursor The position to start searching for the | 490 * @param {cvox.Cursor} startCursor The position to start searching for the |
| 491 * previous word. On exit, will point to the beginning of the | 491 * previous word. On exit, will point to the beginning of the |
| 492 * word returned. | 492 * word returned. |
| 493 * @param {cvox.Cursor} endCursor On exit, will point to the end of the | 493 * @param {cvox.Cursor} endCursor On exit, will point to the end of the |
| 494 * word returned. | 494 * word returned. |
| 495 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 495 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 496 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 496 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 497 * @return {?string} The previous word, or null if the bottom of the | 497 * @return {?string} The previous word, or null if the bottom of the |
| 498 * document has been reached. | 498 * document has been reached. |
| 499 */ | 499 */ |
| 500 cvox.TraverseUtil.getPreviousWord = function(startCursor, endCursor, | 500 cvox.TraverseUtil.getPreviousWord = function(startCursor, endCursor, |
| 501 elementsEntered, elementsLeft) { | 501 elementsEntered, elementsLeft) { |
| 502 // Find the first non-whitespace or non-skipped character. | 502 // Find the first non-whitespace or non-skipped character. |
| 503 var cursor = startCursor.clone(); | 503 var cursor = startCursor.clone(); |
| 504 var c = cvox.TraverseUtil.backwardsChar( | 504 var c = cvox.TraverseUtil.backwardsChar( |
| 505 cursor, elementsEntered, elementsLeft); | 505 cursor, elementsEntered, elementsLeft); |
| 506 if (c == null) | 506 if (c == null) |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 return word; | 539 return word; |
| 540 } | 540 } |
| 541 | 541 |
| 542 return word; | 542 return word; |
| 543 }; | 543 }; |
| 544 | 544 |
| 545 | 545 |
| 546 /** | 546 /** |
| 547 * Given elements entered and left, and break tags, returns true if the | 547 * Given elements entered and left, and break tags, returns true if the |
| 548 * current word should break. | 548 * current word should break. |
| 549 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 549 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 550 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 550 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 551 * @param {Object.<string, boolean>} breakTags Associative array of tags | 551 * @param {Object<string, boolean>} breakTags Associative array of tags |
| 552 * that should break. | 552 * that should break. |
| 553 * @return {boolean} True if elementsEntered or elementsLeft include an | 553 * @return {boolean} True if elementsEntered or elementsLeft include an |
| 554 * element with one of these tags. | 554 * element with one of these tags. |
| 555 */ | 555 */ |
| 556 cvox.TraverseUtil.includesBreakTagOrSkippedNode = function( | 556 cvox.TraverseUtil.includesBreakTagOrSkippedNode = function( |
| 557 elementsEntered, elementsLeft, breakTags) { | 557 elementsEntered, elementsLeft, breakTags) { |
| 558 for (var i = 0; i < elementsEntered.length; i++) { | 558 for (var i = 0; i < elementsEntered.length; i++) { |
| 559 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { | 559 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { |
| 560 return true; | 560 return true; |
| 561 } | 561 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 577 | 577 |
| 578 | 578 |
| 579 /** | 579 /** |
| 580 * Finds the next sentence, starting from endCursor. Upon exit, | 580 * Finds the next sentence, starting from endCursor. Upon exit, |
| 581 * startCursor and endCursor will surround the next sentence. | 581 * startCursor and endCursor will surround the next sentence. |
| 582 * | 582 * |
| 583 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the | 583 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the |
| 584 * sentence. | 584 * sentence. |
| 585 * @param {cvox.Cursor} endCursor The position to start searching for the next | 585 * @param {cvox.Cursor} endCursor The position to start searching for the next |
| 586 * sentence. On exit, will point to the end of the returned string. | 586 * sentence. On exit, will point to the end of the returned string. |
| 587 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 587 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 588 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 588 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 589 * @param {Object.<string, boolean>} breakTags Associative array of tags | 589 * @param {Object<string, boolean>} breakTags Associative array of tags |
| 590 * that should break the sentence. | 590 * that should break the sentence. |
| 591 * @return {?string} The next sentence, or null if the bottom of the | 591 * @return {?string} The next sentence, or null if the bottom of the |
| 592 * document has been reached. | 592 * document has been reached. |
| 593 */ | 593 */ |
| 594 cvox.TraverseUtil.getNextSentence = function( | 594 cvox.TraverseUtil.getNextSentence = function( |
| 595 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { | 595 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { |
| 596 return cvox.TraverseUtil.getNextString( | 596 return cvox.TraverseUtil.getNextString( |
| 597 startCursor, endCursor, elementsEntered, elementsLeft, | 597 startCursor, endCursor, elementsEntered, elementsLeft, |
| 598 function(str, word, elementsEntered, elementsLeft) { | 598 function(str, word, elementsEntered, elementsLeft) { |
| 599 if (str.substr(-1) == '.') | 599 if (str.substr(-1) == '.') |
| 600 return true; | 600 return true; |
| 601 return cvox.TraverseUtil.includesBreakTagOrSkippedNode( | 601 return cvox.TraverseUtil.includesBreakTagOrSkippedNode( |
| 602 elementsEntered, elementsLeft, breakTags); | 602 elementsEntered, elementsLeft, breakTags); |
| 603 }); | 603 }); |
| 604 }; | 604 }; |
| 605 | 605 |
| 606 /** | 606 /** |
| 607 * Finds the previous sentence, starting from startCursor. Upon exit, | 607 * Finds the previous sentence, starting from startCursor. Upon exit, |
| 608 * startCursor and endCursor will surround the previous sentence. | 608 * startCursor and endCursor will surround the previous sentence. |
| 609 * | 609 * |
| 610 * @param {cvox.Cursor} startCursor The position to start searching for the next | 610 * @param {cvox.Cursor} startCursor The position to start searching for the next |
| 611 * sentence. On exit, will point to the start of the returned string. | 611 * sentence. On exit, will point to the start of the returned string. |
| 612 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. | 612 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. |
| 613 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 613 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 614 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 614 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 615 * @param {Object.<string, boolean>} breakTags Associative array of tags | 615 * @param {Object<string, boolean>} breakTags Associative array of tags |
| 616 * that should break the sentence. | 616 * that should break the sentence. |
| 617 * @return {?string} The previous sentence, or null if the bottom of the | 617 * @return {?string} The previous sentence, or null if the bottom of the |
| 618 * document has been reached. | 618 * document has been reached. |
| 619 */ | 619 */ |
| 620 cvox.TraverseUtil.getPreviousSentence = function( | 620 cvox.TraverseUtil.getPreviousSentence = function( |
| 621 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { | 621 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { |
| 622 return cvox.TraverseUtil.getPreviousString( | 622 return cvox.TraverseUtil.getPreviousString( |
| 623 startCursor, endCursor, elementsEntered, elementsLeft, | 623 startCursor, endCursor, elementsEntered, elementsLeft, |
| 624 function(str, word, elementsEntered, elementsLeft) { | 624 function(str, word, elementsEntered, elementsLeft) { |
| 625 if (word.substr(-1) == '.') | 625 if (word.substr(-1) == '.') |
| 626 return true; | 626 return true; |
| 627 return cvox.TraverseUtil.includesBreakTagOrSkippedNode( | 627 return cvox.TraverseUtil.includesBreakTagOrSkippedNode( |
| 628 elementsEntered, elementsLeft, breakTags); | 628 elementsEntered, elementsLeft, breakTags); |
| 629 }); | 629 }); |
| 630 }; | 630 }; |
| 631 | 631 |
| 632 /** | 632 /** |
| 633 * Finds the next line, starting from endCursor. Upon exit, | 633 * Finds the next line, starting from endCursor. Upon exit, |
| 634 * startCursor and endCursor will surround the next line. | 634 * startCursor and endCursor will surround the next line. |
| 635 * | 635 * |
| 636 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the line. | 636 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the line. |
| 637 * @param {cvox.Cursor} endCursor The position to start searching for the next | 637 * @param {cvox.Cursor} endCursor The position to start searching for the next |
| 638 * line. On exit, will point to the end of the returned string. | 638 * line. On exit, will point to the end of the returned string. |
| 639 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 639 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 640 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 640 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 641 * @param {Object.<string, boolean>} breakTags Associative array of tags | 641 * @param {Object<string, boolean>} breakTags Associative array of tags |
| 642 * that should break the line. | 642 * that should break the line. |
| 643 * @return {?string} The next line, or null if the bottom of the | 643 * @return {?string} The next line, or null if the bottom of the |
| 644 * document has been reached. | 644 * document has been reached. |
| 645 */ | 645 */ |
| 646 cvox.TraverseUtil.getNextLine = function( | 646 cvox.TraverseUtil.getNextLine = function( |
| 647 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { | 647 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { |
| 648 var range = document.createRange(); | 648 var range = document.createRange(); |
| 649 var currentRect = null; | 649 var currentRect = null; |
| 650 var rightMostRect = null; | 650 var rightMostRect = null; |
| 651 var prevCursor = endCursor.clone(); | 651 var prevCursor = endCursor.clone(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 675 }); | 675 }); |
| 676 }; | 676 }; |
| 677 | 677 |
| 678 /** | 678 /** |
| 679 * Finds the previous line, starting from startCursor. Upon exit, | 679 * Finds the previous line, starting from startCursor. Upon exit, |
| 680 * startCursor and endCursor will surround the previous line. | 680 * startCursor and endCursor will surround the previous line. |
| 681 * | 681 * |
| 682 * @param {cvox.Cursor} startCursor The position to start searching for the next | 682 * @param {cvox.Cursor} startCursor The position to start searching for the next |
| 683 * line. On exit, will point to the start of the returned string. | 683 * line. On exit, will point to the start of the returned string. |
| 684 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. | 684 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. |
| 685 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 685 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 686 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 686 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 687 * @param {Object.<string, boolean>} breakTags Associative array of tags | 687 * @param {Object<string, boolean>} breakTags Associative array of tags |
| 688 * that should break the line. | 688 * that should break the line. |
| 689 * @return {?string} The previous line, or null if the bottom of the | 689 * @return {?string} The previous line, or null if the bottom of the |
| 690 * document has been reached. | 690 * document has been reached. |
| 691 */ | 691 */ |
| 692 cvox.TraverseUtil.getPreviousLine = function( | 692 cvox.TraverseUtil.getPreviousLine = function( |
| 693 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { | 693 startCursor, endCursor, elementsEntered, elementsLeft, breakTags) { |
| 694 var range = document.createRange(); | 694 var range = document.createRange(); |
| 695 var currentRect = null; | 695 var currentRect = null; |
| 696 var leftMostRect = null; | 696 var leftMostRect = null; |
| 697 var prevCursor = startCursor.clone(); | 697 var prevCursor = startCursor.clone(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 722 }; | 722 }; |
| 723 | 723 |
| 724 /** | 724 /** |
| 725 * Finds the next paragraph, starting from endCursor. Upon exit, | 725 * Finds the next paragraph, starting from endCursor. Upon exit, |
| 726 * startCursor and endCursor will surround the next paragraph. | 726 * startCursor and endCursor will surround the next paragraph. |
| 727 * | 727 * |
| 728 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the | 728 * @param {cvox.Cursor} startCursor On exit, marks the beginning of the |
| 729 * paragraph. | 729 * paragraph. |
| 730 * @param {cvox.Cursor} endCursor The position to start searching for the next | 730 * @param {cvox.Cursor} endCursor The position to start searching for the next |
| 731 * paragraph. On exit, will point to the end of the returned string. | 731 * paragraph. On exit, will point to the end of the returned string. |
| 732 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 732 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 733 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 733 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 734 * @return {?string} The next paragraph, or null if the bottom of the | 734 * @return {?string} The next paragraph, or null if the bottom of the |
| 735 * document has been reached. | 735 * document has been reached. |
| 736 */ | 736 */ |
| 737 cvox.TraverseUtil.getNextParagraph = function(startCursor, endCursor, | 737 cvox.TraverseUtil.getNextParagraph = function(startCursor, endCursor, |
| 738 elementsEntered, elementsLeft) { | 738 elementsEntered, elementsLeft) { |
| 739 return cvox.TraverseUtil.getNextString( | 739 return cvox.TraverseUtil.getNextString( |
| 740 startCursor, endCursor, elementsEntered, elementsLeft, | 740 startCursor, endCursor, elementsEntered, elementsLeft, |
| 741 function(str, word, elementsEntered, elementsLeft) { | 741 function(str, word, elementsEntered, elementsLeft) { |
| 742 for (var i = 0; i < elementsEntered.length; i++) { | 742 for (var i = 0; i < elementsEntered.length; i++) { |
| 743 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { | 743 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 758 }); | 758 }); |
| 759 }; | 759 }; |
| 760 | 760 |
| 761 /** | 761 /** |
| 762 * Finds the previous paragraph, starting from startCursor. Upon exit, | 762 * Finds the previous paragraph, starting from startCursor. Upon exit, |
| 763 * startCursor and endCursor will surround the previous paragraph. | 763 * startCursor and endCursor will surround the previous paragraph. |
| 764 * | 764 * |
| 765 * @param {cvox.Cursor} startCursor The position to start searching for the next | 765 * @param {cvox.Cursor} startCursor The position to start searching for the next |
| 766 * paragraph. On exit, will point to the start of the returned string. | 766 * paragraph. On exit, will point to the start of the returned string. |
| 767 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. | 767 * @param {cvox.Cursor} endCursor On exit, the end of the returned string. |
| 768 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 768 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 769 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 769 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 770 * @return {?string} The previous paragraph, or null if the bottom of the | 770 * @return {?string} The previous paragraph, or null if the bottom of the |
| 771 * document has been reached. | 771 * document has been reached. |
| 772 */ | 772 */ |
| 773 cvox.TraverseUtil.getPreviousParagraph = function( | 773 cvox.TraverseUtil.getPreviousParagraph = function( |
| 774 startCursor, endCursor, elementsEntered, elementsLeft) { | 774 startCursor, endCursor, elementsEntered, elementsLeft) { |
| 775 return cvox.TraverseUtil.getPreviousString( | 775 return cvox.TraverseUtil.getPreviousString( |
| 776 startCursor, endCursor, elementsEntered, elementsLeft, | 776 startCursor, endCursor, elementsEntered, elementsLeft, |
| 777 function(str, word, elementsEntered, elementsLeft) { | 777 function(str, word, elementsEntered, elementsLeft) { |
| 778 for (var i = 0; i < elementsEntered.length; i++) { | 778 for (var i = 0; i < elementsEntered.length; i++) { |
| 779 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { | 779 if (cvox.TraverseUtil.isHidden(elementsEntered[i])) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 808 * next word: | 808 * next word: |
| 809 * str The string so far. | 809 * str The string so far. |
| 810 * word The next word to be added. | 810 * word The next word to be added. |
| 811 * elementsEntered The elements entered in reaching this next word. | 811 * elementsEntered The elements entered in reaching this next word. |
| 812 * elementsLeft The elements left in reaching this next word. | 812 * elementsLeft The elements left in reaching this next word. |
| 813 * | 813 * |
| 814 * @param {cvox.Cursor} startCursor On exit, will point to the beginning of the | 814 * @param {cvox.Cursor} startCursor On exit, will point to the beginning of the |
| 815 * next string. | 815 * next string. |
| 816 * @param {cvox.Cursor} endCursor The position to start searching for the next | 816 * @param {cvox.Cursor} endCursor The position to start searching for the next |
| 817 * string. On exit, will point to the end of the returned string. | 817 * string. On exit, will point to the end of the returned string. |
| 818 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 818 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 819 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 819 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 820 * @param {function(string, string, Array.<Element>, Array.<Element>)} | 820 * @param {function(string, string, Array<Element>, Array<Element>)} |
| 821 * breakBefore Function that takes the string so far, next word to be | 821 * breakBefore Function that takes the string so far, next word to be |
| 822 * added, and elements entered and left, and returns true if the string | 822 * added, and elements entered and left, and returns true if the string |
| 823 * should be ended before adding this word. | 823 * should be ended before adding this word. |
| 824 * @return {?string} The next string, or null if the bottom of the | 824 * @return {?string} The next string, or null if the bottom of the |
| 825 * document has been reached. | 825 * document has been reached. |
| 826 */ | 826 */ |
| 827 cvox.TraverseUtil.getNextString = function( | 827 cvox.TraverseUtil.getNextString = function( |
| 828 startCursor, endCursor, elementsEntered, elementsLeft, breakBefore) { | 828 startCursor, endCursor, elementsEntered, elementsLeft, breakBefore) { |
| 829 // Get the first word and set the start cursor to the start of the | 829 // Get the first word and set the start cursor to the start of the |
| 830 // first word. | 830 // first word. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 * the next. See getNextString, above, for more details. | 870 * the next. See getNextString, above, for more details. |
| 871 * | 871 * |
| 872 * Finds the previous contiguous string, starting from startCursor. Upon exit, | 872 * Finds the previous contiguous string, starting from startCursor. Upon exit, |
| 873 * startCursor and endCursor will surround the next string. | 873 * startCursor and endCursor will surround the next string. |
| 874 * | 874 * |
| 875 * @param {cvox.Cursor} startCursor The position to start searching for the | 875 * @param {cvox.Cursor} startCursor The position to start searching for the |
| 876 * previous string. On exit, will point to the beginning of the | 876 * previous string. On exit, will point to the beginning of the |
| 877 * string returned. | 877 * string returned. |
| 878 * @param {cvox.Cursor} endCursor On exit, will point to the end of the | 878 * @param {cvox.Cursor} endCursor On exit, will point to the end of the |
| 879 * string returned. | 879 * string returned. |
| 880 * @param {Array.<Element>} elementsEntered Any HTML elements entered. | 880 * @param {Array<Element>} elementsEntered Any HTML elements entered. |
| 881 * @param {Array.<Element>} elementsLeft Any HTML elements left. | 881 * @param {Array<Element>} elementsLeft Any HTML elements left. |
| 882 * @param {function(string, string, Array.<Element>, Array.<Element>)} | 882 * @param {function(string, string, Array<Element>, Array<Element>)} |
| 883 * breakBefore Function that takes the string so far, the word to be | 883 * breakBefore Function that takes the string so far, the word to be |
| 884 * added, and nodes crossed, and returns true if the string should be | 884 * added, and nodes crossed, and returns true if the string should be |
| 885 * ended before adding this word. | 885 * ended before adding this word. |
| 886 * @return {?string} The next string, or null if the top of the | 886 * @return {?string} The next string, or null if the top of the |
| 887 * document has been reached. | 887 * document has been reached. |
| 888 */ | 888 */ |
| 889 cvox.TraverseUtil.getPreviousString = function( | 889 cvox.TraverseUtil.getPreviousString = function( |
| 890 startCursor, endCursor, elementsEntered, elementsLeft, breakBefore) { | 890 startCursor, endCursor, elementsEntered, elementsLeft, breakBefore) { |
| 891 // Get the first word and set the end cursor to the end of the | 891 // Get the first word and set the end cursor to the end of the |
| 892 // first word. | 892 // first word. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 918 newEntered = []; | 918 newEntered = []; |
| 919 newLeft = []; | 919 newLeft = []; |
| 920 word = cvox.TraverseUtil.getPreviousWord( | 920 word = cvox.TraverseUtil.getPreviousWord( |
| 921 wordStartCursor, wordEndCursor, newEntered, newLeft); | 921 wordStartCursor, wordEndCursor, newEntered, newLeft); |
| 922 if (word == null) | 922 if (word == null) |
| 923 return str; | 923 return str; |
| 924 } | 924 } |
| 925 | 925 |
| 926 return str; | 926 return str; |
| 927 }; | 927 }; |
| OLD | NEW |