Changeset 164401 in webkit
- Timestamp:
- Feb 19, 2014 4:12:59 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r164394 r164401 1 2014-02-18 Ryosuke Niwa <rniwa@webkit.org> 2 3 Changing selection shouldn't synchronously update editor UI components 4 https://bugs.webkit.org/show_bug.cgi?id=129024 5 6 Reviewed by Brent Fulgham. 7 8 Many tests now calls internals.updateEditorUINowIfScheduled() to update the spellchecker states, and uses 9 setTimeout() to make things testable in the browser. 10 11 * editing/spelling/script-tests/spelling-backspace-between-lines.js: 12 (testTwoLinesMisspellings): Uses updateEditorUINowIfScheduled and setTimeout to make spellchecker recognize 13 two selection changes. This is okay since the user never moves selection multiple times in a single task. 14 * editing/spelling/spellcheck-attribute.html: Ditto. 15 16 * platform/mac/editing/deleting/deletionUI-click-on-delete-button.html: Use intenals.findEditingDeleteButton 17 which updates delete button controller states synchronously instead of getElementById which doesn't do that. 18 * platform/mac/editing/deleting/id-in-deletebutton-expected.txt: 19 * platform/mac/editing/deleting/id-in-deletebutton.html: Ditto. Also did some cleanups. 20 * platform/mac/editing/deleting/resources/deletionUI-helpers.js: 21 (deletionUIDeleteButtonForElement): Ditto. 22 23 * platform/mac/editing/spelling/editing-word-with-marker-1.html: Again, we must notify the spellchecker 24 synchronously here because we're expecting spellchecker to use the old selection set by setSelectionRange 25 in Editor::editorUIUpdateTimerFired triggered by the pasting command. This is, again, not a problem in 26 practice since user never pastes content synchronously after changing selection like this in a single task. 27 1 28 2014-02-19 Brent Fulgham <bfulgham@apple.com> 2 29 -
trunk/LayoutTests/editing/spelling/script-tests/spelling-backspace-between-lines.js
r163615 r164401 34 34 35 35 sel.modify("move", "forward", "line"); // ^OK zz OK 36 for (var i = 0; i < 3; i++) 37 sel.modify("move", "forward", "word"); 36 if (window.internals) 37 internals.updateEditorUINowIfScheduled(); 38 setTimeout(function () { 39 for (var i = 0; i < 3; i++) 40 sel.modify("move", "forward", "word"); 38 41 39 shouldBeEqualToString("firstLineText('target1')", "OK"); 40 shouldBeEqualToString("sel.anchorNode.data", "OK zz OK"); 41 if (window.internals) 42 shouldBecomeEqual("internals.hasSpellingMarker(3, 2)", "true", done); 43 else 44 done(); 42 shouldBeEqualToString("firstLineText('target1')", "OK"); 43 shouldBeEqualToString("sel.anchorNode.data", "OK zz OK"); 44 if (window.internals) 45 shouldBecomeEqual("internals.hasSpellingMarker(3, 2)", "true", done); 46 else 47 done(); 48 }, 100); 45 49 } 46 50 -
trunk/LayoutTests/editing/spelling/spellcheck-attribute.html
r163432 r164401 49 49 input.focus(); 50 50 // Activate spellchecking. 51 moveSelectionForwardByWordCommand(); 51 if (window.internals) 52 internals.updateEditorUINowIfScheduled(); 53 setTimeout(function () { 54 moveSelectionForwardByWordCommand(); 52 55 53 logMarkup(id, spellcheck, true);56 logMarkup(id, spellcheck, true); 54 57 55 if (window.internals) 56 shouldBecomeEqual('internals.hasSpellingMarker(0, 2)', shouldBeMisspelled ? 'true' : 'false', done); 57 else 58 done(); 58 if (window.internals) 59 shouldBecomeEqual('internals.hasSpellingMarker(0, 2)', shouldBeMisspelled ? 'true' : 'false', done); 60 else 61 done(); 62 }, 10); 59 63 } 60 64 -
trunk/LayoutTests/platform/mac/editing/deleting/deletionUI-click-on-delete-button.html
r142559 r164401 15 15 16 16 if (window.testRunner) { 17 deleteButton = document.getElementById("WebKit-Editing-Delete-Button");17 deleteButton = internals.findEditingDeleteButton(); 18 18 x = deleteButton.offsetParent.offsetLeft + deleteButton.offsetParent.offsetParent.offsetLeft + deleteButton.offsetLeft + deleteButton.offsetWidth / 2; 19 19 y = deleteButton.offsetParent.offsetTop + deleteButton.offsetParent.offsetParent.offsetTop + deleteButton.offsetTop + deleteButton.offsetHeight / 2; … … 21 21 eventSender.mouseDown(); 22 22 eventSender.mouseUp(); 23 deleteButton = document.getElementById("WebKit-Editing-Delete-Button");23 deleteButton = internals.findEditingDeleteButton(); 24 24 testContainer = document.getElementById("test"); 25 25 Markup.description("There should be no visible content in the markup below. This test is for a bug where the delete button wouldn't work because it had -webkit-user-select:none instead of -webkit-user-select:ignore."); -
trunk/LayoutTests/platform/mac/editing/deleting/id-in-deletebutton-expected.txt
r142599 r164401 4 4 5 5 6 PASS deleteButtonis non-null.6 PASS internals.findEditingDeleteButton(); document.getElementById("WebKit-Editing-Delete-Button") is non-null. 7 7 PASS successfullyParsed is true 8 8 -
trunk/LayoutTests/platform/mac/editing/deleting/id-in-deletebutton.html
r155282 r164401 1 1 <html> 2 <head>3 <script src="../../../../resources/js-test-pre.js"></script>4 </head>5 2 <body> 6 7 3 <div contenteditable="true"> 8 4 <ul class="needsDeletionUI"><li>1</li><li id="li">2</li></ul> 9 5 <script src="../../../../resources/js-test-pre.js"></script> 10 6 <script> 11 7 description('Test document.getElementById("WebKit-Editing-Delete-Button")'); … … 15 11 sel.setPosition(li, 0); 16 12 17 if (window.testRunner) { 18 deleteButton = document.getElementById("WebKit-Editing-Delete-Button"); 19 shouldBeNonNull('deleteButton'); 20 } 13 if (window.testRunner) 14 shouldBeNonNull('internals.findEditingDeleteButton(); document.getElementById("WebKit-Editing-Delete-Button")'); 15 16 var successfullyParsed = true; 17 21 18 </script> 22 19 <script src="../../../../resources/js-test-post.js"></script> -
trunk/LayoutTests/platform/mac/editing/deleting/resources/deletionUI-helpers.js
r120173 r164401 11 11 function deletionUIDeleteButtonForElement(id) 12 12 { 13 if (!window.internals) 14 return null; 13 15 var sel = window.getSelection(); 14 16 var selElement = document.getElementById(id); 15 17 sel.setPosition(selElement, 0); 16 var deleteButton = document.getElementById("WebKit-Editing-Delete-Button"); 17 return deleteButton; 18 return internals.findEditingDeleteButton(); 18 19 } 19 20 -
trunk/LayoutTests/platform/mac/editing/spelling/editing-word-with-marker-1.html
r158113 r164401 149 149 execCopyCommand(); 150 150 textarea.setSelectionRange(15, 15); 151 if (window.internals) 152 internals.updateEditorUINowIfScheduled(); 151 153 execPasteCommand(); 152 154 if (window.internals && window.internals.hasSpellingMarker) { -
trunk/Source/WebCore/ChangeLog
r164391 r164401 1 2014-02-18 Ryosuke Niwa <rniwa@webkit.org> 2 3 Changing selection shouldn't synchronously update editor UI components 4 https://bugs.webkit.org/show_bug.cgi?id=129024 5 6 Reviewed by Brent Fulgham. 7 8 Make updates to spellchecker, alternative text controller (correction pane), and delete button controller 9 asynchronous for programmatically triggered selection changes. 10 11 We continue to update their states synchronously immediately after we have applied, unapplied, or reapplied 12 editing commands to keep states in spell checker and alternative text controller consistent. We should be 13 able to make them asynchronous as well in the future but that should be done in a separate patch. 14 15 * WebCore.exp.in: 16 * editing/AlternativeTextController.cpp: 17 (WebCore::AlternativeTextController::respondToChangedSelection): This function used to enumerate all document 18 makers and call respondToMarkerAtEndOfWord on each one of them only to exit early when SetSelectionOptions 19 had DictationTriggered. This condition is now checked in Editor::respondToChangedSelection to avoid all the 20 unnecessary work and remove the dependency on SetSelectionOptions. 21 (WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): Ditto. 22 * editing/AlternativeTextController.h: 23 24 * editing/Editor.cpp: 25 (WebCore::Editor::appliedEditing): Calls updateEditorUINowIfScheduled before calling respondToAppliedEditing 26 on the alternative text controller. 27 (WebCore::Editor::unappliedEditing): Ditto. 28 (WebCore::Editor::reappliedEditing): Ditto. 29 (WebCore::Editor::Editor): Initializes newly added booleans. 30 (WebCore::Editor::respondToChangedSelection): Continue to call respondToChangedSelection (for API consistency) 31 and setStartNewKillRingSequence but defer the "editor UI updates" to spellchecker, alternative text controller 32 and delete button controller by firing a newly added one shot timer. 33 (WebCore::Editor::updateEditorUINowIfScheduled): Synchronously update the pending editor UI updates. 34 (WebCore::Editor::editorUIUpdateTimerFired): Extracted from respondToChangedSelection. 35 * editing/Editor.h: 36 37 * testing/Internals.cpp: 38 (WebCore::Internals::markerCountForNode): Calls updateEditorUINowIfScheduled() to update document markers. 39 (WebCore::Internals::markerAt): Ditto. 40 (WebCore::Internals::updateEditorUINowIfScheduled): Added. 41 (WebCore::Internals::findEditingDeleteButton): Added. Updates delete button controller synchronously. 42 (WebCore::Internals::hasSpellingMarker): Calls updateEditorUINowIfScheduled() to update document markers. 43 (WebCore::Internals::hasAutocorrectedMarker): Ditto. 44 * testing/Internals.h: 45 * testing/Internals.idl: 46 1 47 2014-02-19 Anders Carlsson <andersca@apple.com> 2 48 -
trunk/Source/WebCore/WebCore.exp.in
r164364 r164401 1117 1117 __ZN7WebCore6Editor26writeSelectionToPasteboardERNS_10PasteboardE 1118 1118 __ZN7WebCore6Editor28replaceSelectionWithFragmentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbb 1119 __ZN7WebCore6Editor28updateEditorUINowIfScheduledEv 1119 1120 __ZN7WebCore6Editor29canDecreaseSelectionListLevelEv 1120 1121 __ZN7WebCore6Editor29canIncreaseSelectionListLevelEv -
trunk/Source/WebCore/editing/AlternativeTextController.cpp
r163721 r164401 441 441 } 442 442 443 void AlternativeTextController::respondToChangedSelection(const VisibleSelection& oldSelection , FrameSelection::SetSelectionOptions options)443 void AlternativeTextController::respondToChangedSelection(const VisibleSelection& oldSelection) 444 444 { 445 445 VisibleSelection currentSelection(m_frame.selection().selection()); … … 474 474 continue; 475 475 476 if (respondToMarkerAtEndOfWord(*marker, position , options))476 if (respondToMarkerAtEndOfWord(*marker, position)) 477 477 break; 478 478 } … … 626 626 } 627 627 628 bool AlternativeTextController::respondToMarkerAtEndOfWord(const DocumentMarker& marker, const Position& endOfWordPosition, FrameSelection::SetSelectionOptions options) 629 { 630 if (options & FrameSelection::DictationTriggered) 631 return false; 628 bool AlternativeTextController::respondToMarkerAtEndOfWord(const DocumentMarker& marker, const Position& endOfWordPosition) 629 { 632 630 if (!shouldStartTimerFor(marker, endOfWordPosition.offsetInContainerNode())) 633 631 return false; -
trunk/Source/WebCore/editing/AlternativeTextController.h
r161768 r164401 109 109 void respondToAppliedEditing(CompositeEditCommand*) UNLESS_ENABLED({ }) 110 110 void respondToUnappliedEditing(EditCommandComposition*) UNLESS_ENABLED({ }) 111 void respondToChangedSelection(const VisibleSelection& oldSelection , FrameSelection::SetSelectionOptions) UNLESS_ENABLED({ UNUSED_PARAM(oldSelection); })111 void respondToChangedSelection(const VisibleSelection& oldSelection) UNLESS_ENABLED({ UNUSED_PARAM(oldSelection); }) 112 112 113 113 void stopPendingCorrection(const VisibleSelection& oldSelection) UNLESS_ENABLED({ UNUSED_PARAM(oldSelection); }) … … 145 145 146 146 bool shouldStartTimerFor(const DocumentMarker&, int endOffset) const; 147 bool respondToMarkerAtEndOfWord(const DocumentMarker&, const Position& endOfWordPosition , FrameSelection::SetSelectionOptions);147 bool respondToMarkerAtEndOfWord(const DocumentMarker&, const Position& endOfWordPosition); 148 148 149 149 AlternativeTextClient* alternativeTextClient(); -
trunk/Source/WebCore/editing/Editor.cpp
r164358 r164401 1067 1067 VisibleSelection newSelection(cmd->endingSelection()); 1068 1068 1069 m_alternativeTextController->respondToAppliedEditing(cmd.get());1070 1071 1069 notifyTextFromControls(composition->startingRootEditableElement(), composition->endingRootEditableElement()); 1072 1070 … … 1075 1073 changeSelectionAfterCommand(newSelection, options); 1076 1074 dispatchEditableContentChangedEvents(composition->startingRootEditableElement(), composition->endingRootEditableElement()); 1075 1076 updateEditorUINowIfScheduled(); 1077 1078 m_alternativeTextController->respondToAppliedEditing(cmd.get()); 1077 1079 1078 1080 if (!cmd->preservesTypingStyle()) … … 1103 1105 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd->endingRootEditableElement()); 1104 1106 1107 updateEditorUINowIfScheduled(); 1108 1105 1109 m_alternativeTextController->respondToUnappliedEditing(cmd.get()); 1106 1110 … … 1120 1124 changeSelectionAfterCommand(newSelection, FrameSelection::defaultSetSelectionOptions()); 1121 1125 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd->endingRootEditableElement()); 1126 1127 updateEditorUINowIfScheduled(); 1122 1128 1123 1129 m_lastEditCommand = 0; … … 1142 1148 , m_defaultParagraphSeparator(EditorParagraphSeparatorIsDiv) 1143 1149 , m_overwriteModeEnabled(false) 1150 , m_editorUIUpdateTimer(this, &Editor::editorUIUpdateTimerFired) 1151 , m_editorUIUpdateTimerShouldCheckSpellingAndGrammar(false) 1152 , m_editorUIUpdateTimerWasTriggeredByDictation(false) 1144 1153 { 1145 1154 } … … 3295 3304 } 3296 3305 3297 void Editor::respondToChangedSelection(const VisibleSelection& oldSelection, FrameSelection::SetSelectionOptions options)3306 void Editor::respondToChangedSelection(const VisibleSelection&, FrameSelection::SetSelectionOptions options) 3298 3307 { 3299 3308 #if PLATFORM(IOS) … … 3303 3312 #endif 3304 3313 3314 if (client()) 3315 client()->respondToChangedSelection(&m_frame); 3316 setStartNewKillRingSequence(true); 3317 3318 if (m_editorUIUpdateTimer.isActive()) 3319 return; 3320 3321 // Don't check spelling and grammar if the change of selection is triggered by spelling correction itself. 3322 m_editorUIUpdateTimerShouldCheckSpellingAndGrammar = options & FrameSelection::CloseTyping 3323 && !(options & FrameSelection::SpellCorrectionTriggered); 3324 m_editorUIUpdateTimerWasTriggeredByDictation = options & FrameSelection::DictationTriggered; 3325 m_editorUIUpdateTimer.startOneShot(0); 3326 } 3327 3328 void Editor::updateEditorUINowIfScheduled() 3329 { 3330 if (!m_editorUIUpdateTimer.isActive()) 3331 return; 3332 m_editorUIUpdateTimer.stop(); 3333 editorUIUpdateTimerFired(m_editorUIUpdateTimer); 3334 } 3335 3336 void Editor::editorUIUpdateTimerFired(Timer<Editor>&) 3337 { 3338 VisibleSelection oldSelection = m_oldSelectionForEditorUIUpdate; 3339 3305 3340 m_alternativeTextController->stopPendingCorrection(oldSelection); 3306 3307 bool closeTyping = options & FrameSelection::CloseTyping; 3341 3308 3342 bool isContinuousSpellCheckingEnabled = this->isContinuousSpellCheckingEnabled(); 3309 3343 bool isContinuousGrammarCheckingEnabled = isContinuousSpellCheckingEnabled && isGrammarCheckingEnabled(); … … 3332 3366 } 3333 3367 3334 // Don't check spelling and grammar if the change of selection is triggered by spelling correction itself.3335 bool shouldCheckSpellingAndGrammar = !(options & FrameSelection::SpellCorrectionTriggered);3336 3337 3368 // When typing we check spelling elsewhere, so don't redo it here. 3338 3369 // If this is a change in selection resulting from a delete operation, 3339 3370 // oldSelection may no longer be in the document. 3340 if ( shouldCheckSpellingAndGrammar && closeTyping&& oldSelection.isContentEditable() && oldSelection.start().deprecatedNode() && oldSelection.start().anchorNode()->inDocument()) {3371 if (m_editorUIUpdateTimerShouldCheckSpellingAndGrammar && oldSelection.isContentEditable() && oldSelection.start().deprecatedNode() && oldSelection.start().anchorNode()->inDocument()) { 3341 3372 VisiblePosition oldStart(oldSelection.visibleStart()); 3342 3373 VisibleSelection oldAdjacentWords = VisibleSelection(startOfWord(oldStart, LeftWordIfOnBoundary), endOfWord(oldStart, RightWordIfOnBoundary)); … … 3366 3397 document().markers().removeMarkers(DocumentMarker::Grammar); 3367 3398 3368 if (client())3369 client()->respondToChangedSelection(&m_frame);3370 setStartNewKillRingSequence(true);3371 3399 #if ENABLE(DELETION_UI) 3372 3400 m_deleteButtonController->respondToChangedSelection(oldSelection); 3373 3401 #endif 3374 m_alternativeTextController->respondToChangedSelection(oldSelection, options); 3402 if (m_editorUIUpdateTimerWasTriggeredByDictation) 3403 m_alternativeTextController->respondToChangedSelection(oldSelection); 3404 3405 m_oldSelectionForEditorUIUpdate = m_frame.selection().selection(); 3375 3406 } 3376 3407 -
trunk/Source/WebCore/editing/Editor.h
r164331 r164401 363 363 364 364 void respondToChangedSelection(const VisibleSelection& oldSelection, FrameSelection::SetSelectionOptions); 365 void updateEditorUINowIfScheduled(); 365 366 bool shouldChangeSelection(const VisibleSelection& oldSelection, const VisibleSelection& newSelection, EAffinity, bool stillSelecting) const; 366 367 unsigned countMatchesForText(const String&, Range*, FindOptions, unsigned limit, bool markMatches, Vector<RefPtr<Range>>*); … … 464 465 465 466 void changeSelectionAfterCommand(const VisibleSelection& newSelection, FrameSelection::SetSelectionOptions); 467 468 void editorUIUpdateTimerFired(Timer<Editor>&); 466 469 467 470 Node* findEventTargetFromSelection() const; … … 496 499 EditorParagraphSeparator m_defaultParagraphSeparator; 497 500 bool m_overwriteModeEnabled; 501 502 VisibleSelection m_oldSelectionForEditorUIUpdate; 503 Timer<Editor> m_editorUIUpdateTimer; 504 bool m_editorUIUpdateTimerShouldCheckSpellingAndGrammar; 505 bool m_editorUIUpdateTimerWasTriggeredByDictation; 498 506 }; 499 507 -
trunk/Source/WebCore/testing/Internals.cpp
r164251 r164401 749 749 } 750 750 751 node->document().frame()->editor().updateEditorUINowIfScheduled(); 752 751 753 return node->document().markers().markersFor(node, markerTypes).size(); 752 754 } … … 765 767 return 0; 766 768 } 769 770 node->document().frame()->editor().updateEditorUINowIfScheduled(); 767 771 768 772 Vector<DocumentMarker*> markers = node->document().markers().markersFor(node, markerTypes); … … 1296 1300 } 1297 1301 1302 void Internals::updateEditorUINowIfScheduled() 1303 { 1304 if (Document* document = contextDocument()) { 1305 if (Frame* frame = document->frame()) 1306 frame->editor().updateEditorUINowIfScheduled(); 1307 } 1308 } 1309 1310 Node* Internals::findEditingDeleteButton() 1311 { 1312 Document* document = contextDocument(); 1313 if (!document || !document->frame()) 1314 return 0; 1315 1316 updateEditorUINowIfScheduled(); 1317 1318 // FIXME: We shouldn't pollute the id namespace with this name. 1319 return document->getElementById("WebKit-Editing-Delete-Button"); 1320 } 1321 1298 1322 bool Internals::hasSpellingMarker(int from, int length, ExceptionCode&) 1299 1323 { … … 1301 1325 if (!document || !document->frame()) 1302 1326 return 0; 1327 1328 updateEditorUINowIfScheduled(); 1303 1329 1304 1330 return document->frame()->editor().selectionStartHasMarkerFor(DocumentMarker::Spelling, from, length); … … 1310 1336 if (!document || !document->frame()) 1311 1337 return 0; 1312 1338 1339 updateEditorUINowIfScheduled(); 1340 1313 1341 return document->frame()->editor().selectionStartHasMarkerFor(DocumentMarker::Autocorrected, from, length); 1314 1342 } -
trunk/Source/WebCore/testing/Internals.h
r164131 r164401 170 170 String parserMetaData(Deprecated::ScriptValue = Deprecated::ScriptValue()); 171 171 172 Node* findEditingDeleteButton(); 173 void updateEditorUINowIfScheduled(); 174 172 175 bool hasSpellingMarker(int from, int length, ExceptionCode&); 173 176 bool hasGrammarMarker(int from, int length, ExceptionCode&); -
trunk/Source/WebCore/testing/Internals.idl
r164131 r164401 130 130 DOMString parserMetaData(optional any func); 131 131 132 void updateEditorUINowIfScheduled(); 133 134 Node findEditingDeleteButton(); 135 132 136 [RaisesException] boolean hasSpellingMarker(long from, long length); 133 137 [RaisesException] boolean hasGrammarMarker(long from, long length); -
trunk/Source/WebKit/ChangeLog
r164245 r164401 1 2014-02-18 Ryosuke Niwa <rniwa@webkit.org> 2 3 Changing selection shouldn't synchronously update editor UI components 4 https://bugs.webkit.org/show_bug.cgi?id=129024 5 6 Reviewed by Brent Fulgham. 7 8 Added symbols for internals. 9 10 * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: 11 1 12 2014-02-17 Sergio Correia <sergio.correia@openbossa.org> 2 13 -
trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in
r164245 r164401 205 205 symbolWithPointer(?getCachedDOMStructure@WebCore@@YAPAVStructure@JSC@@PAVJSDOMGlobalObject@1@PBUClassInfo@3@@Z, ?getCachedDOMStructure@WebCore@@YAPEAVStructure@JSC@@PEAVJSDOMGlobalObject@1@PEBUClassInfo@3@@Z) 206 206 symbolWithPointer(?getData16SlowCase@StringImpl@WTF@@ABEPB_WXZ, ?getData16SlowCase@StringImpl@WTF@@AEBAPEB_WXZ) 207 symbolWithPointer(?getElementById@TreeScope@WebCore@@QBEPAVElement@2@ABVAtomicString@WTF@@@Z) 207 208 symbolWithPointer(?getLocationAndLengthFromRange@TextIterator@WebCore@@SA_NPAVNode@2@PBVRange@2@AAI2@Z, ?getLocationAndLengthFromRange@TextIterator@WebCore@@SA_NPEAVNode@2@PEBVRange@2@AEA_K2@Z) 208 209 symbolWithPointer(?hitTest@RenderView@WebCore@@QAE_NABVHitTestRequest@2@AAVHitTestResult@2@@Z, ?hitTest@RenderView@WebCore@@QEAA_NAEBVHitTestRequest@2@AEAVHitTestResult@2@@Z) … … 324 325 symbolWithPointer(?toRange@WebCore@@YAPAVRange@1@VJSValue@JSC@@@Z, ?toRange@WebCore@@YAPEAVRange@1@VJSValue@JSC@@@Z) 325 326 symbolWithPointer(?isTreeScope@Node@WebCore@@QBE_NXZ, ?isTreeScope@Node@WebCore@@QEBA_NXZ) 327 symbolWithPointer(?updateEditorUINowIfScheduled@Editor@WebCore@@QAEXXZ) 326 328 symbolWithPointer(?updateLayoutIgnorePendingStylesheets@Document@WebCore@@QAEXXZ, ?updateLayoutIgnorePendingStylesheets@Document@WebCore@@QEAAXXZ) 327 329 symbolWithPointer(?updateStyleIfNeeded@Document@WebCore@@QAEXXZ, ?updateStyleIfNeeded@Document@WebCore@@QEAAXXZ)
Note: See TracChangeset
for help on using the changeset viewer.