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 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 void SpellChecker::markMisspellingsAfterTypingToWord( | 487 void SpellChecker::markMisspellingsAfterTypingToWord( |
488 const VisiblePosition& wordStart) { | 488 const VisiblePosition& wordStart) { |
489 TRACE_EVENT0("blink", "SpellChecker::markMisspellingsAfterTypingToWord"); | 489 TRACE_EVENT0("blink", "SpellChecker::markMisspellingsAfterTypingToWord"); |
490 | 490 |
491 VisibleSelection adjacentWords = | 491 VisibleSelection adjacentWords = |
492 createVisibleSelection(selectWord(wordStart)); | 492 createVisibleSelection(selectWord(wordStart)); |
493 markMisspellingsInternal(adjacentWords); | 493 markMisspellingsInternal(adjacentWords); |
494 } | 494 } |
495 | 495 |
496 bool SpellChecker::isSpellCheckingEnabledInFocusedNode() const { | 496 bool SpellChecker::isSpellCheckingEnabledInFocusedNode() const { |
497 Node* focusedNode = frame().selection().start().anchorNode(); | 497 // To avoid regression on speedometer benchmark[1] test, we should not |
| 498 // update layout tree in this code block. |
| 499 // [1] http://browserbench.org/Speedometer/ |
| 500 DocumentLifecycle::DisallowTransitionScope disallowTransition( |
| 501 frame().document()->lifecycle()); |
| 502 |
| 503 Node* focusedNode = frame() |
| 504 .selection() |
| 505 .selectionInDOMTree() |
| 506 .computeStartPosition() |
| 507 .anchorNode(); |
498 if (!focusedNode) | 508 if (!focusedNode) |
499 return false; | 509 return false; |
500 const Element* focusedElement = focusedNode->isElementNode() | 510 const Element* focusedElement = focusedNode->isElementNode() |
501 ? toElement(focusedNode) | 511 ? toElement(focusedNode) |
502 : focusedNode->parentElement(); | 512 : focusedNode->parentElement(); |
503 if (!focusedElement) | 513 if (!focusedElement) |
504 return false; | 514 return false; |
505 return focusedElement->isSpellCheckingEnabled(); | 515 return focusedElement->isSpellCheckingEnabled(); |
506 } | 516 } |
507 | 517 |
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1177 startOfNextParagraph(createVisiblePosition(paragraphEnd)); | 1187 startOfNextParagraph(createVisiblePosition(paragraphEnd)); |
1178 paragraphStart = newParagraphStart.toParentAnchoredPosition(); | 1188 paragraphStart = newParagraphStart.toParentAnchoredPosition(); |
1179 paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); | 1189 paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); |
1180 firstIteration = false; | 1190 firstIteration = false; |
1181 totalLengthProcessed += currentLength; | 1191 totalLengthProcessed += currentLength; |
1182 } | 1192 } |
1183 return std::make_pair(firstFoundItem, firstFoundOffset); | 1193 return std::make_pair(firstFoundItem, firstFoundOffset); |
1184 } | 1194 } |
1185 | 1195 |
1186 } // namespace blink | 1196 } // namespace blink |
OLD | NEW |