OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. |
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 return; | 493 return; |
494 const EphemeralRange& paragraphRange = fullParagraphToCheck.paragraphRange(); | 494 const EphemeralRange& paragraphRange = fullParagraphToCheck.paragraphRange(); |
495 | 495 |
496 // Since the text may be quite big chunk it up and adjust to the sentence | 496 // Since the text may be quite big chunk it up and adjust to the sentence |
497 // boundary. | 497 // boundary. |
498 const int kChunkSize = 16 * 1024; | 498 const int kChunkSize = 16 * 1024; |
499 | 499 |
500 // Check the full paragraph instead if the paragraph is short, which saves | 500 // Check the full paragraph instead if the paragraph is short, which saves |
501 // the cost on sentence boundary finding. | 501 // the cost on sentence boundary finding. |
502 if (fullParagraphToCheck.rangeLength() <= kChunkSize) { | 502 if (fullParagraphToCheck.rangeLength() <= kChunkSize) { |
503 SpellCheckRequest* request = SpellCheckRequest::create(paragraphRange, 0); | 503 m_spellCheckRequester->requestCheckingFor(paragraphRange); |
504 if (request) | |
505 m_spellCheckRequester->requestCheckingFor(request); | |
506 return; | 504 return; |
507 } | 505 } |
508 | 506 |
509 CharacterIterator checkRangeIterator( | 507 CharacterIterator checkRangeIterator( |
510 fullParagraphToCheck.checkingRange(), | 508 fullParagraphToCheck.checkingRange(), |
511 TextIteratorBehavior::Builder() | 509 TextIteratorBehavior::Builder() |
512 .setEmitsObjectReplacementCharacter(true) | 510 .setEmitsObjectReplacementCharacter(true) |
513 .build()); | 511 .build()); |
514 for (int requestNum = 0; !checkRangeIterator.atEnd(); requestNum++) { | 512 for (int requestNum = 0; !checkRangeIterator.atEnd(); requestNum++) { |
515 EphemeralRange chunkRange = | 513 EphemeralRange chunkRange = |
516 checkRangeIterator.calculateCharacterSubrange(0, kChunkSize); | 514 checkRangeIterator.calculateCharacterSubrange(0, kChunkSize); |
517 EphemeralRange checkRange = requestNum | 515 EphemeralRange checkRange = requestNum |
518 ? expandEndToSentenceBoundary(chunkRange) | 516 ? expandEndToSentenceBoundary(chunkRange) |
519 : expandRangeToSentenceBoundary(chunkRange); | 517 : expandRangeToSentenceBoundary(chunkRange); |
520 | 518 |
521 SpellCheckRequest* request = | 519 m_spellCheckRequester->requestCheckingFor(checkRange, requestNum); |
522 SpellCheckRequest::create(checkRange, requestNum); | |
523 if (request) | |
524 m_spellCheckRequester->requestCheckingFor(request); | |
525 | 520 |
526 if (!checkRangeIterator.atEnd()) { | 521 if (!checkRangeIterator.atEnd()) { |
527 checkRangeIterator.advance(1); | 522 checkRangeIterator.advance(1); |
528 // The layout should be already update due to the initialization of | 523 // The layout should be already update due to the initialization of |
529 // checkRangeIterator, so comparePositions can be directly called. | 524 // checkRangeIterator, so comparePositions can be directly called. |
530 if (comparePositions(chunkRange.endPosition(), checkRange.endPosition()) < | 525 if (comparePositions(chunkRange.endPosition(), checkRange.endPosition()) < |
531 0) | 526 0) |
532 checkRangeIterator.advance(TextIterator::rangeLength( | 527 checkRangeIterator.advance(TextIterator::rangeLength( |
533 chunkRange.endPosition(), checkRange.endPosition())); | 528 chunkRange.endPosition(), checkRange.endPosition())); |
534 } | 529 } |
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 if (!input.isFocusedElementInDocument()) | 1196 if (!input.isFocusedElementInDocument()) |
1202 return false; | 1197 return false; |
1203 } | 1198 } |
1204 } | 1199 } |
1205 HTMLElement* element = | 1200 HTMLElement* element = |
1206 Traversal<HTMLElement>::firstAncestorOrSelf(*position.anchorNode()); | 1201 Traversal<HTMLElement>::firstAncestorOrSelf(*position.anchorNode()); |
1207 return element && element->isSpellCheckingEnabled(); | 1202 return element && element->isSpellCheckingEnabled(); |
1208 } | 1203 } |
1209 | 1204 |
1210 } // namespace blink | 1205 } // namespace blink |
OLD | NEW |