Title: [136145] trunk/Source/WebCore
- Revision
- 136145
- Author
- [email protected]
- Date
- 2012-11-29 12:06:37 -0800 (Thu, 29 Nov 2012)
Log Message
Web Inspector: introduce fast case for within-chunk edit
https://bugs.webkit.org/show_bug.cgi?id=103545
Reviewed by Vsevolod Vlasov.
Special-casing edits within the chunk for faster operation.
* inspector/front-end/DOMExtension.js:
(removeSubsequentNodes):
* inspector/front-end/DefaultTextEditor.js:
(WebInspector.TextEditorMainPanel.prototype._updateChunksForRanges):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (136144 => 136145)
--- trunk/Source/WebCore/ChangeLog 2012-11-29 19:59:14 UTC (rev 136144)
+++ trunk/Source/WebCore/ChangeLog 2012-11-29 20:06:37 UTC (rev 136145)
@@ -1,5 +1,19 @@
2012-11-29 Pavel Feldman <[email protected]>
+ Web Inspector: introduce fast case for within-chunk edit
+ https://bugs.webkit.org/show_bug.cgi?id=103545
+
+ Reviewed by Vsevolod Vlasov.
+
+ Special-casing edits within the chunk for faster operation.
+
+ * inspector/front-end/DOMExtension.js:
+ (removeSubsequentNodes):
+ * inspector/front-end/DefaultTextEditor.js:
+ (WebInspector.TextEditorMainPanel.prototype._updateChunksForRanges):
+
+2012-11-29 Pavel Feldman <[email protected]>
+
Web Inspector: Console: hovering node wrappers in object tree should highlight them on the page
https://bugs.webkit.org/show_bug.cgi?id=101150
Modified: trunk/Source/WebCore/inspector/front-end/DOMExtension.js (136144 => 136145)
--- trunk/Source/WebCore/inspector/front-end/DOMExtension.js 2012-11-29 19:59:14 UTC (rev 136144)
+++ trunk/Source/WebCore/inspector/front-end/DOMExtension.js 2012-11-29 20:06:37 UTC (rev 136145)
@@ -195,6 +195,18 @@
this.parentElement.removeChild(this);
}
+/**
+ * @param {Node} fromNode
+ * @param {Node} toNode
+ */
+function removeSubsequentNodes(fromNode, toNode)
+{
+ for (var node = fromNode; node && node !== toNode; ) {
+ var nodeToRemove = node;
+ node = node.nextSibling;
+ nodeToRemove.remove();
+ }
+}
/**
* @constructor
Modified: trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js (136144 => 136145)
--- trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js 2012-11-29 19:59:14 UTC (rev 136144)
+++ trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js 2012-11-29 20:06:37 UTC (rev 136145)
@@ -2415,13 +2415,28 @@
// Remove damaged chunks from DOM and from textChunks model.
var lastUndamagedChunk = firstDamagedChunkNumber > 0 ? this._textChunks[firstDamagedChunkNumber - 1] : null;
var firstUndamagedChunk = lastDamagedChunkNumber + 1 < this._textChunks.length ? this._textChunks[lastDamagedChunkNumber + 1] : null;
+
var removeDOMFromNode = lastUndamagedChunk ? lastUndamagedChunk.lastElement().nextSibling : this._container.firstChild;
var removeDOMToNode = firstUndamagedChunk ? firstUndamagedChunk.firstElement() : null;
- for (var node = removeDOMFromNode; node && node !== removeDOMToNode; ) {
- var nodeToRemove = node;
- node = node.nextSibling;
- nodeToRemove.remove();
+
+ // Fast case - patch single expanded chunk that did not grow / shrink during edit.
+ if (!linesDiff && firstDamagedChunk === lastDamagedChunk && firstDamagedChunk._expandedLineRows) {
+ var lastUndamagedLineRow = lastDamagedChunk.expandedLineRow(oldRange.startLine - 1);
+ var firstUndamagedLineRow = firstDamagedChunk.expandedLineRow(oldRange.endLine + 1);
+ var localRemoveDOMFromNode = lastUndamagedLineRow ? lastUndamagedLineRow.nextSibling : removeDOMFromNode;
+ var localRemoveDOMToNode = firstUndamagedLineRow || removeDOMToNode;
+ removeSubsequentNodes(localRemoveDOMFromNode, localRemoveDOMToNode);
+ for (var i = newRange.startLine; i < newRange.endLine + 1; ++i) {
+ var row = firstDamagedChunk._createRow(i);
+ firstDamagedChunk._expandedLineRows[i - firstDamagedChunk.startLine] = row;
+ this._container.insertBefore(row, localRemoveDOMToNode);
+ }
+ firstDamagedChunk.updateCollapsedLineRow();
+ this._assertDOMMatchesTextModel();
+ return;
}
+
+ removeSubsequentNodes(removeDOMFromNode, removeDOMToNode);
this._textChunks.splice(firstDamagedChunkNumber, lastDamagedChunkNumber - firstDamagedChunkNumber + 1);
// Compute damaged chunks span
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes