Changeset 136145 in webkit
- Timestamp:
- Nov 29, 2012, 12:06:37 PM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
inspector/front-end/DOMExtension.js (modified) (1 diff)
-
inspector/front-end/DefaultTextEditor.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r136144 r136145 1 2012-11-29 Pavel Feldman <pfeldman@chromium.org> 2 3 Web Inspector: introduce fast case for within-chunk edit 4 https://bugs.webkit.org/show_bug.cgi?id=103545 5 6 Reviewed by Vsevolod Vlasov. 7 8 Special-casing edits within the chunk for faster operation. 9 10 * inspector/front-end/DOMExtension.js: 11 (removeSubsequentNodes): 12 * inspector/front-end/DefaultTextEditor.js: 13 (WebInspector.TextEditorMainPanel.prototype._updateChunksForRanges): 14 1 15 2012-11-29 Pavel Feldman <pfeldman@chromium.org> 2 16 -
trunk/Source/WebCore/inspector/front-end/DOMExtension.js
r135683 r136145 196 196 } 197 197 198 /** 199 * @param {Node} fromNode 200 * @param {Node} toNode 201 */ 202 function removeSubsequentNodes(fromNode, toNode) 203 { 204 for (var node = fromNode; node && node !== toNode; ) { 205 var nodeToRemove = node; 206 node = node.nextSibling; 207 nodeToRemove.remove(); 208 } 209 } 198 210 199 211 /** -
trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js
r135606 r136145 2416 2416 var lastUndamagedChunk = firstDamagedChunkNumber > 0 ? this._textChunks[firstDamagedChunkNumber - 1] : null; 2417 2417 var firstUndamagedChunk = lastDamagedChunkNumber + 1 < this._textChunks.length ? this._textChunks[lastDamagedChunkNumber + 1] : null; 2418 2418 2419 var removeDOMFromNode = lastUndamagedChunk ? lastUndamagedChunk.lastElement().nextSibling : this._container.firstChild; 2419 2420 var removeDOMToNode = firstUndamagedChunk ? firstUndamagedChunk.firstElement() : null; 2420 for (var node = removeDOMFromNode; node && node !== removeDOMToNode; ) { 2421 var nodeToRemove = node; 2422 node = node.nextSibling; 2423 nodeToRemove.remove(); 2424 } 2421 2422 // Fast case - patch single expanded chunk that did not grow / shrink during edit. 2423 if (!linesDiff && firstDamagedChunk === lastDamagedChunk && firstDamagedChunk._expandedLineRows) { 2424 var lastUndamagedLineRow = lastDamagedChunk.expandedLineRow(oldRange.startLine - 1); 2425 var firstUndamagedLineRow = firstDamagedChunk.expandedLineRow(oldRange.endLine + 1); 2426 var localRemoveDOMFromNode = lastUndamagedLineRow ? lastUndamagedLineRow.nextSibling : removeDOMFromNode; 2427 var localRemoveDOMToNode = firstUndamagedLineRow || removeDOMToNode; 2428 removeSubsequentNodes(localRemoveDOMFromNode, localRemoveDOMToNode); 2429 for (var i = newRange.startLine; i < newRange.endLine + 1; ++i) { 2430 var row = firstDamagedChunk._createRow(i); 2431 firstDamagedChunk._expandedLineRows[i - firstDamagedChunk.startLine] = row; 2432 this._container.insertBefore(row, localRemoveDOMToNode); 2433 } 2434 firstDamagedChunk.updateCollapsedLineRow(); 2435 this._assertDOMMatchesTextModel(); 2436 return; 2437 } 2438 2439 removeSubsequentNodes(removeDOMFromNode, removeDOMToNode); 2425 2440 this._textChunks.splice(firstDamagedChunkNumber, lastDamagedChunkNumber - firstDamagedChunkNumber + 1); 2426 2441
Note:
See TracChangeset
for help on using the changeset viewer.