Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1135)

Unified Diff: Source/devtools/front_end/sources/RevisionHistoryView.js

Issue 1336803005: DevTools: use diff_match_patch instead of jsdifflib for text diffing. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix file permissions Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/sources/RevisionHistoryView.js
diff --git a/Source/devtools/front_end/sources/RevisionHistoryView.js b/Source/devtools/front_end/sources/RevisionHistoryView.js
index ae7dd7ac8d7e12bae5604cd5a92f9ca2d0635ed3..b2b8e6e56fe0bf4a741c339c1903dad10c26eabc 100644
--- a/Source/devtools/front_end/sources/RevisionHistoryView.js
+++ b/Source/devtools/front_end/sources/RevisionHistoryView.js
@@ -240,40 +240,32 @@ WebInspector.RevisionHistoryTreeElement.prototype = {
*/
function step2(baseContent, newContent)
{
- var baseLines = difflib.stringAsLines(baseContent);
- var newLines = difflib.stringAsLines(newContent);
- var sm = new difflib.SequenceMatcher(baseLines, newLines);
- var opcodes = sm.get_opcodes();
+ var baseLines = baseContent.split("\n");
+ var newLines = newContent.split("\n");
+ var opcodes = WebInspector.Diff.lineDiff(baseLines, newLines);
var lastWasSeparator = false;
+ var baseLineNumber = 0;
+ var newLineNumber = 0;
for (var idx = 0; idx < opcodes.length; idx++) {
- var code = opcodes[idx];
- var change = code[0];
- var b = code[1];
- var be = code[2];
- var n = code[3];
- var ne = code[4];
- var rowCount = Math.max(be - b, ne - n);
- for (var i = 0; i < rowCount; i++) {
- if (change === "delete" || (change === "replace" && b < be)) {
- var lineNumber = b++;
- this._createLine(lineNumber, null, baseLines[lineNumber], "removed");
- lastWasSeparator = false;
- }
-
- if (change === "insert" || (change === "replace" && n < ne)) {
- var lineNumber = n++;
- this._createLine(null, lineNumber, newLines[lineNumber], "added");
- lastWasSeparator = false;
- }
-
- if (change === "equal") {
- b++;
- n++;
- if (!lastWasSeparator)
- this._createLine(null, null, " \u2026", "separator");
- lastWasSeparator = true;
- }
+ var code = opcodes[idx][0];
+ var rowCount = opcodes[idx][1].length;
+ if (code === WebInspector.Diff.Operation.Equal) {
+ baseLineNumber += rowCount;
+ newLineNumber += rowCount;
+ if (!lastWasSeparator)
+ this._createLine(null, null, " \u2026", "separator");
+ lastWasSeparator = true;
+ } else if (code === WebInspector.Diff.Operation.Delete) {
+ lastWasSeparator = false;
+ for (var i = 0; i < rowCount; ++i)
+ this._createLine(baseLineNumber + i, null, baseLines[baseLineNumber + i], "removed");
+ baseLineNumber += rowCount;
+ } else if (code === WebInspector.Diff.Operation.Insert) {
+ lastWasSeparator = false;
+ for (var i = 0; i < rowCount; ++i)
+ this._createLine(null, newLineNumber + i, newLines[newLineNumber + i], "added");
+ newLineNumber += rowCount;
}
}
}
« no previous file with comments | « Source/devtools/front_end/sources/FilteredItemSelectionDialog.js ('k') | Source/devtools/front_end/sources/jsdifflib.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698