| Index: third_party/WebKit/Source/devtools/front_end/sources/RevisionHistoryView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/RevisionHistoryView.js b/third_party/WebKit/Source/devtools/front_end/sources/RevisionHistoryView.js
|
| index d16641529a76c75ec032c3d079b46b636d43ab8d..94769ca5df004d76c72c61c9a5cb360c22299f22 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sources/RevisionHistoryView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/RevisionHistoryView.js
|
| @@ -27,18 +27,16 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| + * @unrestricted
|
| */
|
| -WebInspector.RevisionHistoryView = function()
|
| -{
|
| - WebInspector.VBox.call(this);
|
| +WebInspector.RevisionHistoryView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super();
|
| this._uiSourceCodeItems = new Map();
|
|
|
| this._treeOutline = new TreeOutlineInShadow();
|
| - this._treeOutline.registerRequiredCSS("sources/revisionHistory.css");
|
| + this._treeOutline.registerRequiredCSS('sources/revisionHistory.css');
|
| this._treeOutline.makeDense();
|
| this.element.appendChild(this._treeOutline.element);
|
|
|
| @@ -46,259 +44,258 @@ WebInspector.RevisionHistoryView = function()
|
| * @param {!WebInspector.UISourceCode} uiSourceCode
|
| * @this {WebInspector.RevisionHistoryView}
|
| */
|
| - function populateRevisions(uiSourceCode)
|
| - {
|
| - if (uiSourceCode.history.length)
|
| - this._createUISourceCodeItem(uiSourceCode);
|
| + function populateRevisions(uiSourceCode) {
|
| + if (uiSourceCode.history.length)
|
| + this._createUISourceCodeItem(uiSourceCode);
|
| }
|
|
|
| WebInspector.workspace.uiSourceCodes().forEach(populateRevisions.bind(this));
|
| - WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.WorkingCopyCommittedByUser, this._revisionAdded, this);
|
| - WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
|
| + WebInspector.workspace.addEventListener(
|
| + WebInspector.Workspace.Events.WorkingCopyCommittedByUser, this._revisionAdded, this);
|
| + WebInspector.workspace.addEventListener(
|
| + WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
|
| WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this);
|
| -};
|
| -
|
| -/**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| -WebInspector.RevisionHistoryView.showHistory = function(uiSourceCode)
|
| -{
|
| - WebInspector.viewManager.showView("sources.history");
|
| - var historyView = /** @type {!WebInspector.RevisionHistoryView} */ (self.runtime.sharedInstance(WebInspector.RevisionHistoryView));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + static showHistory(uiSourceCode) {
|
| + WebInspector.viewManager.showView('sources.history');
|
| + var historyView = /** @type {!WebInspector.RevisionHistoryView} */ (
|
| + self.runtime.sharedInstance(WebInspector.RevisionHistoryView));
|
| historyView._revealUISourceCode(uiSourceCode);
|
| -};
|
| -
|
| -WebInspector.RevisionHistoryView.prototype = {
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _createUISourceCodeItem: function(uiSourceCode)
|
| - {
|
| - var uiSourceCodeItem = new TreeElement(uiSourceCode.displayName(), true);
|
| - uiSourceCodeItem.selectable = false;
|
| -
|
| - // Insert in sorted order
|
| - var rootElement = this._treeOutline.rootElement();
|
| - for (var i = 0; i < rootElement.childCount(); ++i) {
|
| - if (rootElement.childAt(i).title.localeCompare(uiSourceCode.displayName()) > 0) {
|
| - rootElement.insertChild(uiSourceCodeItem, i);
|
| - break;
|
| - }
|
| - }
|
| - if (i === rootElement.childCount())
|
| - rootElement.appendChild(uiSourceCodeItem);
|
| -
|
| - this._uiSourceCodeItems.set(uiSourceCode, uiSourceCodeItem);
|
| -
|
| - var revisionCount = uiSourceCode.history.length;
|
| - for (var i = revisionCount - 1; i >= 0; --i) {
|
| - var revision = uiSourceCode.history[i];
|
| - var historyItem = new WebInspector.RevisionHistoryTreeElement(revision, uiSourceCode.history[i - 1], i !== revisionCount - 1);
|
| - uiSourceCodeItem.appendChild(historyItem);
|
| - }
|
| -
|
| - var linkItem = new TreeElement();
|
| - linkItem.selectable = false;
|
| - uiSourceCodeItem.appendChild(linkItem);
|
| -
|
| - var revertToOriginal = linkItem.listItemElement.createChild("span", "revision-history-link revision-history-link-row");
|
| - revertToOriginal.textContent = WebInspector.UIString("apply original content");
|
| - revertToOriginal.addEventListener("click", this._revertToOriginal.bind(this, uiSourceCode));
|
| -
|
| - var clearHistoryElement = uiSourceCodeItem.listItemElement.createChild("span", "revision-history-link");
|
| - clearHistoryElement.textContent = WebInspector.UIString("revert");
|
| - clearHistoryElement.addEventListener("click", this._clearHistory.bind(this, uiSourceCode));
|
| - return uiSourceCodeItem;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _revertToOriginal: function(uiSourceCode)
|
| - {
|
| - uiSourceCode.revertToOriginal();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _clearHistory: function(uiSourceCode)
|
| - {
|
| - uiSourceCode.revertAndClearHistory(this._removeUISourceCode.bind(this));
|
| - },
|
| -
|
| - _revisionAdded: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.uiSourceCode);
|
| - var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| - if (!uiSourceCodeItem) {
|
| - uiSourceCodeItem = this._createUISourceCodeItem(uiSourceCode);
|
| - return;
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _createUISourceCodeItem(uiSourceCode) {
|
| + var uiSourceCodeItem = new TreeElement(uiSourceCode.displayName(), true);
|
| + uiSourceCodeItem.selectable = false;
|
| +
|
| + // Insert in sorted order
|
| + var rootElement = this._treeOutline.rootElement();
|
| + for (var i = 0; i < rootElement.childCount(); ++i) {
|
| + if (rootElement.childAt(i).title.localeCompare(uiSourceCode.displayName()) > 0) {
|
| + rootElement.insertChild(uiSourceCodeItem, i);
|
| + break;
|
| + }
|
| + }
|
| + if (i === rootElement.childCount())
|
| + rootElement.appendChild(uiSourceCodeItem);
|
|
|
| - var historyLength = uiSourceCode.history.length;
|
| - var historyItem = new WebInspector.RevisionHistoryTreeElement(uiSourceCode.history[historyLength - 1], uiSourceCode.history[historyLength - 2], false);
|
| - if (uiSourceCodeItem.firstChild())
|
| - uiSourceCodeItem.firstChild().allowRevert();
|
| - uiSourceCodeItem.insertChild(historyItem, 0);
|
| - },
|
| + this._uiSourceCodeItems.set(uiSourceCode, uiSourceCodeItem);
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _revealUISourceCode: function(uiSourceCode)
|
| - {
|
| - var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| - if (uiSourceCodeItem) {
|
| - uiSourceCodeItem.reveal();
|
| - uiSourceCodeItem.expand();
|
| - }
|
| - },
|
| + var revisionCount = uiSourceCode.history.length;
|
| + for (var i = revisionCount - 1; i >= 0; --i) {
|
| + var revision = uiSourceCode.history[i];
|
| + var historyItem =
|
| + new WebInspector.RevisionHistoryTreeElement(revision, uiSourceCode.history[i - 1], i !== revisionCount - 1);
|
| + uiSourceCodeItem.appendChild(historyItem);
|
| + }
|
|
|
| - _uiSourceCodeRemoved: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| - this._removeUISourceCode(uiSourceCode);
|
| - },
|
| + var linkItem = new TreeElement();
|
| + linkItem.selectable = false;
|
| + uiSourceCodeItem.appendChild(linkItem);
|
| +
|
| + var revertToOriginal =
|
| + linkItem.listItemElement.createChild('span', 'revision-history-link revision-history-link-row');
|
| + revertToOriginal.textContent = WebInspector.UIString('apply original content');
|
| + revertToOriginal.addEventListener('click', this._revertToOriginal.bind(this, uiSourceCode));
|
| +
|
| + var clearHistoryElement = uiSourceCodeItem.listItemElement.createChild('span', 'revision-history-link');
|
| + clearHistoryElement.textContent = WebInspector.UIString('revert');
|
| + clearHistoryElement.addEventListener('click', this._clearHistory.bind(this, uiSourceCode));
|
| + return uiSourceCodeItem;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _revertToOriginal(uiSourceCode) {
|
| + uiSourceCode.revertToOriginal();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _clearHistory(uiSourceCode) {
|
| + uiSourceCode.revertAndClearHistory(this._removeUISourceCode.bind(this));
|
| + }
|
| +
|
| + _revisionAdded(event) {
|
| + var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.uiSourceCode);
|
| + var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| + if (!uiSourceCodeItem) {
|
| + uiSourceCodeItem = this._createUISourceCodeItem(uiSourceCode);
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _removeUISourceCode: function(uiSourceCode)
|
| - {
|
| - var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| - if (!uiSourceCodeItem)
|
| - return;
|
| - this._treeOutline.removeChild(uiSourceCodeItem);
|
| - this._uiSourceCodeItems.remove(uiSourceCode);
|
| - },
|
| -
|
| - _projectRemoved: function(event)
|
| - {
|
| - var project = event.data;
|
| - project.uiSourceCodes().forEach(this._removeUISourceCode.bind(this));
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| + var historyLength = uiSourceCode.history.length;
|
| + var historyItem = new WebInspector.RevisionHistoryTreeElement(
|
| + uiSourceCode.history[historyLength - 1], uiSourceCode.history[historyLength - 2], false);
|
| + if (uiSourceCodeItem.firstChild())
|
| + uiSourceCodeItem.firstChild().allowRevert();
|
| + uiSourceCodeItem.insertChild(historyItem, 0);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _revealUISourceCode(uiSourceCode) {
|
| + var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| + if (uiSourceCodeItem) {
|
| + uiSourceCodeItem.reveal();
|
| + uiSourceCodeItem.expand();
|
| + }
|
| + }
|
| +
|
| + _uiSourceCodeRemoved(event) {
|
| + var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| + this._removeUISourceCode(uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _removeUISourceCode(uiSourceCode) {
|
| + var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode);
|
| + if (!uiSourceCodeItem)
|
| + return;
|
| + this._treeOutline.removeChild(uiSourceCodeItem);
|
| + this._uiSourceCodeItems.remove(uiSourceCode);
|
| + }
|
| +
|
| + _projectRemoved(event) {
|
| + var project = event.data;
|
| + project.uiSourceCodes().forEach(this._removeUISourceCode.bind(this));
|
| + }
|
| };
|
|
|
| +
|
| /**
|
| - * @constructor
|
| - * @extends {TreeElement}
|
| - * @param {!WebInspector.Revision} revision
|
| - * @param {!WebInspector.Revision} baseRevision
|
| - * @param {boolean} allowRevert
|
| + * @unrestricted
|
| */
|
| -WebInspector.RevisionHistoryTreeElement = function(revision, baseRevision, allowRevert)
|
| -{
|
| - TreeElement.call(this, revision.timestamp.toLocaleTimeString(), true);
|
| +WebInspector.RevisionHistoryTreeElement = class extends TreeElement {
|
| + /**
|
| + * @param {!WebInspector.Revision} revision
|
| + * @param {!WebInspector.Revision} baseRevision
|
| + * @param {boolean} allowRevert
|
| + */
|
| + constructor(revision, baseRevision, allowRevert) {
|
| + super(revision.timestamp.toLocaleTimeString(), true);
|
| this.selectable = false;
|
|
|
| this._revision = revision;
|
| this._baseRevision = baseRevision;
|
|
|
| - this._revertElement = createElement("span");
|
| - this._revertElement.className = "revision-history-link";
|
| - this._revertElement.textContent = WebInspector.UIString("apply revision content");
|
| - this._revertElement.addEventListener("click", event => {this._revision.revertToThis();}, false);
|
| + this._revertElement = createElement('span');
|
| + this._revertElement.className = 'revision-history-link';
|
| + this._revertElement.textContent = WebInspector.UIString('apply revision content');
|
| + this._revertElement.addEventListener('click', event => {
|
| + this._revision.revertToThis();
|
| + }, false);
|
| if (!allowRevert)
|
| - this._revertElement.classList.add("hidden");
|
| -};
|
| -
|
| -WebInspector.RevisionHistoryTreeElement.prototype = {
|
| - onattach: function()
|
| - {
|
| - this.listItemElement.classList.add("revision-history-revision");
|
| - },
|
| -
|
| - onpopulate: function()
|
| - {
|
| - this.listItemElement.appendChild(this._revertElement);
|
| -
|
| - this.childrenListElement.classList.add("source-code");
|
| - Promise.all([
|
| - this._baseRevision ? this._baseRevision.requestContent() : this._revision.uiSourceCode.requestOriginalContent(),
|
| - this._revision.requestContent()
|
| - ]).spread(diff.bind(this));
|
| -
|
| - /**
|
| - * @param {?string} baseContent
|
| - * @param {?string} newContent
|
| - * @this {WebInspector.RevisionHistoryTreeElement}
|
| - */
|
| - function diff(baseContent, newContent)
|
| - {
|
| - 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][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;
|
| - }
|
| - }
|
| - }
|
| - },
|
| -
|
| - oncollapse: function()
|
| - {
|
| - this._revertElement.remove();
|
| - },
|
| + this._revertElement.classList.add('hidden');
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onattach() {
|
| + this.listItemElement.classList.add('revision-history-revision');
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onpopulate() {
|
| + this.listItemElement.appendChild(this._revertElement);
|
| +
|
| + this.childrenListElement.classList.add('source-code');
|
| + Promise
|
| + .all([
|
| + this._baseRevision ? this._baseRevision.requestContent() :
|
| + this._revision.uiSourceCode.requestOriginalContent(),
|
| + this._revision.requestContent()
|
| + ])
|
| + .spread(diff.bind(this));
|
|
|
| /**
|
| - * @param {?number} baseLineNumber
|
| - * @param {?number} newLineNumber
|
| - * @param {string} lineContent
|
| - * @param {string} changeType
|
| + * @param {?string} baseContent
|
| + * @param {?string} newContent
|
| + * @this {WebInspector.RevisionHistoryTreeElement}
|
| */
|
| - _createLine: function(baseLineNumber, newLineNumber, lineContent, changeType)
|
| - {
|
| - var child = new TreeElement();
|
| - child.selectable = false;
|
| - this.appendChild(child);
|
| -
|
| - function appendLineNumber(lineNumber)
|
| - {
|
| - var numberString = lineNumber !== null ? numberToStringWithSpacesPadding(lineNumber + 1, 4) : spacesPadding(4);
|
| - var lineNumberSpan = createElement("span");
|
| - lineNumberSpan.classList.add("webkit-line-number");
|
| - lineNumberSpan.textContent = numberString;
|
| - child.listItemElement.appendChild(lineNumberSpan);
|
| + function diff(baseContent, newContent) {
|
| + 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][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;
|
| }
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + oncollapse() {
|
| + this._revertElement.remove();
|
| + }
|
| +
|
| + /**
|
| + * @param {?number} baseLineNumber
|
| + * @param {?number} newLineNumber
|
| + * @param {string} lineContent
|
| + * @param {string} changeType
|
| + */
|
| + _createLine(baseLineNumber, newLineNumber, lineContent, changeType) {
|
| + var child = new TreeElement();
|
| + child.selectable = false;
|
| + this.appendChild(child);
|
| +
|
| + function appendLineNumber(lineNumber) {
|
| + var numberString = lineNumber !== null ? numberToStringWithSpacesPadding(lineNumber + 1, 4) : spacesPadding(4);
|
| + var lineNumberSpan = createElement('span');
|
| + lineNumberSpan.classList.add('webkit-line-number');
|
| + lineNumberSpan.textContent = numberString;
|
| + child.listItemElement.appendChild(lineNumberSpan);
|
| + }
|
|
|
| - appendLineNumber(baseLineNumber);
|
| - appendLineNumber(newLineNumber);
|
| -
|
| - var contentSpan = createElement("span");
|
| - contentSpan.textContent = lineContent;
|
| - child.listItemElement.appendChild(contentSpan);
|
| - child.listItemElement.classList.add("revision-history-line");
|
| - contentSpan.classList.add("revision-history-line-" + changeType);
|
| - },
|
| + appendLineNumber(baseLineNumber);
|
| + appendLineNumber(newLineNumber);
|
|
|
| - allowRevert: function()
|
| - {
|
| - this._revertElement.classList.remove("hidden");
|
| - },
|
| + var contentSpan = createElement('span');
|
| + contentSpan.textContent = lineContent;
|
| + child.listItemElement.appendChild(contentSpan);
|
| + child.listItemElement.classList.add('revision-history-line');
|
| + contentSpan.classList.add('revision-history-line-' + changeType);
|
| + }
|
|
|
| - __proto__: TreeElement.prototype
|
| + allowRevert() {
|
| + this._revertElement.classList.remove('hidden');
|
| + }
|
| };
|
|
|