| Index: third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js b/third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js
|
| index a717eb2723486a60656d1b4d4fa913b0d37a9019..e21ccfac1f4a60627e133ba27fc04079f77d3e2d 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js
|
| @@ -27,31 +27,32 @@
|
| * (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.Object}
|
| * @implements {WebInspector.ContentProvider}
|
| - * @param {!WebInspector.Project} project
|
| - * @param {string} url
|
| - * @param {!WebInspector.ResourceType} contentType
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCode = function(project, url, contentType)
|
| -{
|
| +WebInspector.UISourceCode = class extends WebInspector.Object {
|
| + /**
|
| + * @param {!WebInspector.Project} project
|
| + * @param {string} url
|
| + * @param {!WebInspector.ResourceType} contentType
|
| + */
|
| + constructor(project, url, contentType) {
|
| + super();
|
| this._project = project;
|
| this._url = url;
|
|
|
| var parsedURL = url.asParsedURL();
|
| if (parsedURL) {
|
| - this._origin = parsedURL.securityOrigin();
|
| - this._parentURL = this._origin + parsedURL.folderPathComponents;
|
| - this._name = parsedURL.lastPathComponent;
|
| - if (parsedURL.queryParams)
|
| - this._name += "?" + parsedURL.queryParams;
|
| + this._origin = parsedURL.securityOrigin();
|
| + this._parentURL = this._origin + parsedURL.folderPathComponents;
|
| + this._name = parsedURL.lastPathComponent;
|
| + if (parsedURL.queryParams)
|
| + this._name += '?' + parsedURL.queryParams;
|
| } else {
|
| - this._origin = "";
|
| - this._parentURL = "";
|
| - this._name = url;
|
| + this._origin = '';
|
| + this._parentURL = '';
|
| + this._name = url;
|
| }
|
|
|
| this._contentType = contentType;
|
| @@ -67,926 +68,863 @@ WebInspector.UISourceCode = function(project, url, contentType)
|
|
|
| /** @type {!Array<!WebInspector.UISourceCode.Message>} */
|
| this._messages = [];
|
| -};
|
| -
|
| -/** @enum {symbol} */
|
| -WebInspector.UISourceCode.Events = {
|
| - WorkingCopyChanged: Symbol("WorkingCopyChanged"),
|
| - WorkingCopyCommitted: Symbol("WorkingCopyCommitted"),
|
| - TitleChanged: Symbol("TitleChanged"),
|
| - SourceMappingChanged: Symbol("SourceMappingChanged"),
|
| - MessageAdded: Symbol("MessageAdded"),
|
| - MessageRemoved: Symbol("MessageRemoved"),
|
| - LineDecorationAdded: Symbol("LineDecorationAdded"),
|
| - LineDecorationRemoved: Symbol("LineDecorationRemoved")
|
| -};
|
| -
|
| -WebInspector.UISourceCode.prototype = {
|
| - /**
|
| - * @return {!Promise<?WebInspector.UISourceCodeMetadata>}
|
| - */
|
| - requestMetadata: function()
|
| - {
|
| - return this._project.requestMetadata(this);
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - name: function()
|
| - {
|
| - return this._name;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - url: function()
|
| - {
|
| - return this._url;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - parentURL: function()
|
| - {
|
| - return this._parentURL;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - origin: function()
|
| - {
|
| - return this._origin;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - fullDisplayName: function()
|
| - {
|
| - var parentPath = this._parentURL.replace(/^(?:https?|file)\:\/\//, "");
|
| - try {
|
| - parentPath = decodeURI(parentPath);
|
| - } catch (e) {
|
| - }
|
| - return parentPath + "/" + this.displayName(true);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} skipTrim
|
| - * @return {string}
|
| - */
|
| - displayName: function(skipTrim)
|
| - {
|
| - if (!this._name)
|
| - return WebInspector.UIString("(index)");
|
| - var name = this._name;
|
| - try {
|
| - name = decodeURI(name);
|
| - } catch (e) {
|
| - }
|
| - return skipTrim ? name : name.trimEnd(100);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isFromServiceProject: function()
|
| - {
|
| - return WebInspector.Project.isServiceProject(this._project);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - canRename: function()
|
| - {
|
| - return this._project.canRename();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} newName
|
| - * @param {function(boolean)} callback
|
| - */
|
| - rename: function(newName, callback)
|
| - {
|
| - this._project.rename(this, newName, innerCallback.bind(this));
|
| -
|
| - /**
|
| - * @param {boolean} success
|
| - * @param {string=} newName
|
| - * @param {string=} newURL
|
| - * @param {!WebInspector.ResourceType=} newContentType
|
| - * @this {WebInspector.UISourceCode}
|
| - */
|
| - function innerCallback(success, newName, newURL, newContentType)
|
| - {
|
| - if (success)
|
| - this._updateName(/** @type {string} */ (newName), /** @type {string} */ (newURL), /** @type {!WebInspector.ResourceType} */ (newContentType));
|
| - callback(success);
|
| - }
|
| - },
|
| -
|
| - remove: function()
|
| - {
|
| - this._project.deleteFile(this.url());
|
| - },
|
| -
|
| - /**
|
| - * @param {string} name
|
| - * @param {string} url
|
| - * @param {!WebInspector.ResourceType=} contentType
|
| - */
|
| - _updateName: function(name, url, contentType)
|
| - {
|
| - var oldURL = this.url();
|
| - this._url = this._url.substring(0, this._url.length - this._name.length) + name;
|
| - this._name = name;
|
| - if (url)
|
| - this._url = url;
|
| - if (contentType)
|
| - this._contentType = contentType;
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.TitleChanged, oldURL);
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {string}
|
| - */
|
| - contentURL: function()
|
| - {
|
| - return this.url();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!WebInspector.ResourceType}
|
| - */
|
| - contentType: function()
|
| - {
|
| - return this._contentType;
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.Project}
|
| - */
|
| - project: function()
|
| - {
|
| - return this._project;
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!Promise<?string>}
|
| - */
|
| - requestContent: function()
|
| - {
|
| - if (this._content || this._contentLoaded)
|
| - return Promise.resolve(this._content);
|
| - var promise = this._requestContentPromise;
|
| - if (!promise) {
|
| - promise = new Promise(fulfill => this._requestContentCallback = fulfill);
|
| - this._requestContentPromise = promise;
|
| - this._project.requestFileContent(this, this._fireContentAvailable.bind(this));
|
| - }
|
| - return promise;
|
| - },
|
| + }
|
| +
|
| + /**
|
| + * @return {!Promise<?WebInspector.UISourceCodeMetadata>}
|
| + */
|
| + requestMetadata() {
|
| + return this._project.requestMetadata(this);
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + name() {
|
| + return this._name;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + url() {
|
| + return this._url;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + parentURL() {
|
| + return this._parentURL;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + origin() {
|
| + return this._origin;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + fullDisplayName() {
|
| + var parentPath = this._parentURL.replace(/^(?:https?|file)\:\/\//, '');
|
| + try {
|
| + parentPath = decodeURI(parentPath);
|
| + } catch (e) {
|
| + }
|
| + return parentPath + '/' + this.displayName(true);
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean=} skipTrim
|
| + * @return {string}
|
| + */
|
| + displayName(skipTrim) {
|
| + if (!this._name)
|
| + return WebInspector.UIString('(index)');
|
| + var name = this._name;
|
| + try {
|
| + name = decodeURI(name);
|
| + } catch (e) {
|
| + }
|
| + return skipTrim ? name : name.trimEnd(100);
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isFromServiceProject() {
|
| + return WebInspector.Project.isServiceProject(this._project);
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + canRename() {
|
| + return this._project.canRename();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} newName
|
| + * @param {function(boolean)} callback
|
| + */
|
| + rename(newName, callback) {
|
| + this._project.rename(this, newName, innerCallback.bind(this));
|
| +
|
| + /**
|
| + * @param {boolean} success
|
| + * @param {string=} newName
|
| + * @param {string=} newURL
|
| + * @param {!WebInspector.ResourceType=} newContentType
|
| + * @this {WebInspector.UISourceCode}
|
| + */
|
| + function innerCallback(success, newName, newURL, newContentType) {
|
| + if (success)
|
| + this._updateName(
|
| + /** @type {string} */ (newName), /** @type {string} */ (newURL),
|
| + /** @type {!WebInspector.ResourceType} */ (newContentType));
|
| + callback(success);
|
| + }
|
| + }
|
| +
|
| + remove() {
|
| + this._project.deleteFile(this.url());
|
| + }
|
| +
|
| + /**
|
| + * @param {string} name
|
| + * @param {string} url
|
| + * @param {!WebInspector.ResourceType=} contentType
|
| + */
|
| + _updateName(name, url, contentType) {
|
| + var oldURL = this.url();
|
| + this._url = this._url.substring(0, this._url.length - this._name.length) + name;
|
| + this._name = name;
|
| + if (url)
|
| + this._url = url;
|
| + if (contentType)
|
| + this._contentType = contentType;
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.TitleChanged, oldURL);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {string}
|
| + */
|
| + contentURL() {
|
| + return this.url();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!WebInspector.ResourceType}
|
| + */
|
| + contentType() {
|
| + return this._contentType;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.Project}
|
| + */
|
| + project() {
|
| + return this._project;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Promise<?string>}
|
| + */
|
| + requestContent() {
|
| + if (this._content || this._contentLoaded)
|
| + return Promise.resolve(this._content);
|
| + var promise = this._requestContentPromise;
|
| + if (!promise) {
|
| + promise = new Promise(fulfill => this._requestContentCallback = fulfill);
|
| + this._requestContentPromise = promise;
|
| + this._project.requestFileContent(this, this._fireContentAvailable.bind(this));
|
| + }
|
| + return promise;
|
| + }
|
| +
|
| + /**
|
| + * @param {function()} callback
|
| + */
|
| + _pushCheckContentUpdatedCallback(callback) {
|
| + if (!this._checkContentUpdatedCallbacks)
|
| + this._checkContentUpdatedCallbacks = [];
|
| + this._checkContentUpdatedCallbacks.push(callback);
|
| + }
|
| +
|
| + _terminateContentCheck() {
|
| + delete this._checkingContent;
|
| + if (this._checkContentUpdatedCallbacks) {
|
| + this._checkContentUpdatedCallbacks.forEach(function(callback) {
|
| + callback();
|
| + });
|
| + delete this._checkContentUpdatedCallbacks;
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean=} forceLoad
|
| + * @param {function()=} callback
|
| + */
|
| + checkContentUpdated(forceLoad, callback) {
|
| + callback = callback || function() {};
|
| + forceLoad = forceLoad || this._forceLoadOnCheckContent;
|
| + if (!this.contentLoaded() && !forceLoad) {
|
| + callback();
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {function()} callback
|
| - */
|
| - _pushCheckContentUpdatedCallback: function(callback)
|
| - {
|
| - if (!this._checkContentUpdatedCallbacks)
|
| - this._checkContentUpdatedCallbacks = [];
|
| - this._checkContentUpdatedCallbacks.push(callback);
|
| - },
|
| -
|
| - _terminateContentCheck: function()
|
| - {
|
| - delete this._checkingContent;
|
| - if (this._checkContentUpdatedCallbacks) {
|
| - this._checkContentUpdatedCallbacks.forEach(function(callback) { callback(); });
|
| - delete this._checkContentUpdatedCallbacks;
|
| - }
|
| - },
|
| + if (!this._project.canSetFileContent()) {
|
| + callback();
|
| + return;
|
| + }
|
| + this._pushCheckContentUpdatedCallback(callback);
|
|
|
| - /**
|
| - * @param {boolean=} forceLoad
|
| - * @param {function()=} callback
|
| - */
|
| - checkContentUpdated: function(forceLoad, callback)
|
| - {
|
| - callback = callback || function() {};
|
| - forceLoad = forceLoad || this._forceLoadOnCheckContent;
|
| - if (!this.contentLoaded() && !forceLoad) {
|
| - callback();
|
| - return;
|
| - }
|
| -
|
| - if (!this._project.canSetFileContent()) {
|
| - callback();
|
| - return;
|
| - }
|
| - this._pushCheckContentUpdatedCallback(callback);
|
| -
|
| - if (this._checkingContent)
|
| - return;
|
| -
|
| - this._checkingContent = true;
|
| - this._project.requestFileContent(this, contentLoaded.bind(this));
|
| -
|
| - /**
|
| - * @param {?string} updatedContent
|
| - * @this {WebInspector.UISourceCode}
|
| - */
|
| - function contentLoaded(updatedContent)
|
| - {
|
| - if (updatedContent === null) {
|
| - var workingCopy = this.workingCopy();
|
| - this._contentCommitted("", false);
|
| - this.setWorkingCopy(workingCopy);
|
| - this._terminateContentCheck();
|
| - return;
|
| - }
|
| - if (typeof this._lastAcceptedContent === "string" && this._lastAcceptedContent === updatedContent) {
|
| - this._terminateContentCheck();
|
| - return;
|
| - }
|
| -
|
| - if (this._content === updatedContent) {
|
| - delete this._lastAcceptedContent;
|
| - this._terminateContentCheck();
|
| - return;
|
| - }
|
| -
|
| - if (!this.isDirty() || this._workingCopy === updatedContent) {
|
| - this._contentCommitted(updatedContent, false);
|
| - this._terminateContentCheck();
|
| - return;
|
| - }
|
| -
|
| - var shouldUpdate = window.confirm(WebInspector.UIString("This file was changed externally. Would you like to reload it?"));
|
| - if (shouldUpdate)
|
| - this._contentCommitted(updatedContent, false);
|
| - else
|
| - this._lastAcceptedContent = updatedContent;
|
| - this._terminateContentCheck();
|
| - }
|
| - },
|
| -
|
| - forceLoadOnCheckContent: function()
|
| - {
|
| - this._forceLoadOnCheckContent = true;
|
| - },
|
| + if (this._checkingContent)
|
| + return;
|
|
|
| - /**
|
| - * @return {!Promise<?string>}
|
| - */
|
| - requestOriginalContent: function()
|
| - {
|
| - var callback;
|
| - var promise = new Promise(fulfill => callback = fulfill);
|
| - this._project.requestFileContent(this, callback);
|
| - return promise;
|
| - },
|
| + this._checkingContent = true;
|
| + this._project.requestFileContent(this, contentLoaded.bind(this));
|
|
|
| /**
|
| - * @param {string} content
|
| + * @param {?string} updatedContent
|
| + * @this {WebInspector.UISourceCode}
|
| */
|
| - _commitContent: function(content)
|
| - {
|
| - if (this._project.canSetFileContent()) {
|
| - this._project.setFileContent(this, content, function() { });
|
| - } else if (this._url && WebInspector.fileManager.isURLSaved(this._url)) {
|
| - WebInspector.fileManager.save(this._url, content, false, function() { });
|
| - WebInspector.fileManager.close(this._url);
|
| - }
|
| - this._contentCommitted(content, true);
|
| - },
|
| + function contentLoaded(updatedContent) {
|
| + if (updatedContent === null) {
|
| + var workingCopy = this.workingCopy();
|
| + this._contentCommitted('', false);
|
| + this.setWorkingCopy(workingCopy);
|
| + this._terminateContentCheck();
|
| + return;
|
| + }
|
| + if (typeof this._lastAcceptedContent === 'string' && this._lastAcceptedContent === updatedContent) {
|
| + this._terminateContentCheck();
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {string} content
|
| - * @param {boolean} committedByUser
|
| - */
|
| - _contentCommitted: function(content, committedByUser)
|
| - {
|
| + if (this._content === updatedContent) {
|
| delete this._lastAcceptedContent;
|
| - this._content = content;
|
| - this._contentLoaded = true;
|
| -
|
| - var lastRevision = this.history.length ? this.history[this.history.length - 1] : null;
|
| - if (!lastRevision || lastRevision._content !== this._content) {
|
| - var revision = new WebInspector.Revision(this, this._content, new Date());
|
| - this.history.push(revision);
|
| - }
|
| -
|
| - this._innerResetWorkingCopy();
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyCommitted, { content: content });
|
| - this._project.workspace().dispatchEventToListeners(WebInspector.Workspace.Events.WorkingCopyCommitted, { uiSourceCode: this, content: content });
|
| - if (committedByUser)
|
| - this._project.workspace().dispatchEventToListeners(WebInspector.Workspace.Events.WorkingCopyCommittedByUser, { uiSourceCode: this, content: content });
|
| - },
|
| -
|
| - saveAs: function()
|
| - {
|
| - WebInspector.fileManager.save(this._url, this.workingCopy(), true, callback.bind(this));
|
| - WebInspector.fileManager.close(this._url);
|
| -
|
| - /**
|
| - * @param {boolean} accepted
|
| - * @this {WebInspector.UISourceCode}
|
| - */
|
| - function callback(accepted)
|
| - {
|
| - if (accepted)
|
| - this._contentCommitted(this.workingCopy(), true);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {string} content
|
| - */
|
| - addRevision: function(content)
|
| - {
|
| - this._commitContent(content);
|
| - },
|
| -
|
| - /**
|
| - * @return {!Promise}
|
| - */
|
| - revertToOriginal: function()
|
| - {
|
| - /**
|
| - * @this {WebInspector.UISourceCode}
|
| - * @param {?string} content
|
| - */
|
| - function callback(content)
|
| - {
|
| - if (typeof content !== "string")
|
| - return;
|
| -
|
| - this.addRevision(content);
|
| - }
|
| -
|
| - WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| - return this.requestOriginalContent().then(callback.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @param {function(!WebInspector.UISourceCode)} callback
|
| - */
|
| - revertAndClearHistory: function(callback)
|
| - {
|
| - /**
|
| - * @this {WebInspector.UISourceCode}
|
| - * @param {?string} content
|
| - */
|
| - function revert(content)
|
| - {
|
| - if (typeof content !== "string")
|
| - return;
|
| -
|
| - this.addRevision(content);
|
| - this.history = [];
|
| - callback(this);
|
| - }
|
| -
|
| - WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| - this.requestOriginalContent().then(revert.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - workingCopy: function()
|
| - {
|
| - if (this._workingCopyGetter) {
|
| - this._workingCopy = this._workingCopyGetter();
|
| - delete this._workingCopyGetter;
|
| - }
|
| - if (this.isDirty())
|
| - return this._workingCopy;
|
| - return this._content;
|
| - },
|
| -
|
| - resetWorkingCopy: function()
|
| - {
|
| - this._innerResetWorkingCopy();
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| - },
|
| -
|
| - _innerResetWorkingCopy: function()
|
| - {
|
| - delete this._workingCopy;
|
| - delete this._workingCopyGetter;
|
| - },
|
| + this._terminateContentCheck();
|
| + return;
|
| + }
|
| +
|
| + if (!this.isDirty() || this._workingCopy === updatedContent) {
|
| + this._contentCommitted(updatedContent, false);
|
| + this._terminateContentCheck();
|
| + return;
|
| + }
|
| +
|
| + var shouldUpdate =
|
| + window.confirm(WebInspector.UIString('This file was changed externally. Would you like to reload it?'));
|
| + if (shouldUpdate)
|
| + this._contentCommitted(updatedContent, false);
|
| + else
|
| + this._lastAcceptedContent = updatedContent;
|
| + this._terminateContentCheck();
|
| + }
|
| + }
|
| +
|
| + forceLoadOnCheckContent() {
|
| + this._forceLoadOnCheckContent = true;
|
| + }
|
| +
|
| + /**
|
| + * @return {!Promise<?string>}
|
| + */
|
| + requestOriginalContent() {
|
| + var callback;
|
| + var promise = new Promise(fulfill => callback = fulfill);
|
| + this._project.requestFileContent(this, callback);
|
| + return promise;
|
| + }
|
| +
|
| + /**
|
| + * @param {string} content
|
| + */
|
| + _commitContent(content) {
|
| + if (this._project.canSetFileContent()) {
|
| + this._project.setFileContent(this, content, function() {});
|
| + } else if (this._url && WebInspector.fileManager.isURLSaved(this._url)) {
|
| + WebInspector.fileManager.save(this._url, content, false, function() {});
|
| + WebInspector.fileManager.close(this._url);
|
| + }
|
| + this._contentCommitted(content, true);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} content
|
| + * @param {boolean} committedByUser
|
| + */
|
| + _contentCommitted(content, committedByUser) {
|
| + delete this._lastAcceptedContent;
|
| + this._content = content;
|
| + this._contentLoaded = true;
|
|
|
| - /**
|
| - * @param {string} newWorkingCopy
|
| - */
|
| - setWorkingCopy: function(newWorkingCopy)
|
| - {
|
| - this._workingCopy = newWorkingCopy;
|
| - delete this._workingCopyGetter;
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| - this._project.workspace().dispatchEventToListeners(WebInspector.Workspace.Events.WorkingCopyChanged, { uiSourceCode: this });
|
| - },
|
| -
|
| - setWorkingCopyGetter: function(workingCopyGetter)
|
| - {
|
| - this._workingCopyGetter = workingCopyGetter;
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| - this._project.workspace().dispatchEventToListeners(WebInspector.Workspace.Events.WorkingCopyChanged, { uiSourceCode: this });
|
| - },
|
| -
|
| - removeWorkingCopyGetter: function()
|
| - {
|
| - if (!this._workingCopyGetter)
|
| - return;
|
| - this._workingCopy = this._workingCopyGetter();
|
| - delete this._workingCopyGetter;
|
| - },
|
| -
|
| - commitWorkingCopy: function()
|
| - {
|
| - if (this.isDirty())
|
| - this._commitContent(this.workingCopy());
|
| - },
|
| + var lastRevision = this.history.length ? this.history[this.history.length - 1] : null;
|
| + if (!lastRevision || lastRevision._content !== this._content) {
|
| + var revision = new WebInspector.Revision(this, this._content, new Date());
|
| + this.history.push(revision);
|
| + }
|
|
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isDirty: function()
|
| - {
|
| - return typeof this._workingCopy !== "undefined" || typeof this._workingCopyGetter !== "undefined";
|
| - },
|
| + this._innerResetWorkingCopy();
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyCommitted, {content: content});
|
| + this._project.workspace().dispatchEventToListeners(
|
| + WebInspector.Workspace.Events.WorkingCopyCommitted, {uiSourceCode: this, content: content});
|
| + if (committedByUser)
|
| + this._project.workspace().dispatchEventToListeners(
|
| + WebInspector.Workspace.Events.WorkingCopyCommittedByUser, {uiSourceCode: this, content: content});
|
| + }
|
|
|
| - /**
|
| - * @return {string}
|
| - */
|
| - extension: function()
|
| - {
|
| - return WebInspector.ParsedURL.extractExtension(this._name);
|
| - },
|
| + saveAs() {
|
| + WebInspector.fileManager.save(this._url, this.workingCopy(), true, callback.bind(this));
|
| + WebInspector.fileManager.close(this._url);
|
|
|
| /**
|
| - * @return {?string}
|
| + * @param {boolean} accepted
|
| + * @this {WebInspector.UISourceCode}
|
| */
|
| - content: function()
|
| - {
|
| - return this._content;
|
| - },
|
| + function callback(accepted) {
|
| + if (accepted)
|
| + this._contentCommitted(this.workingCopy(), true);
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - * @param {string} query
|
| - * @param {boolean} caseSensitive
|
| - * @param {boolean} isRegex
|
| - * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
|
| - */
|
| - searchInContent: function(query, caseSensitive, isRegex, callback)
|
| - {
|
| - var content = this.content();
|
| - if (!content) {
|
| - this._project.searchInFileContent(this, query, caseSensitive, isRegex, callback);
|
| - return;
|
| - }
|
| -
|
| - // searchInContent should call back later.
|
| - setTimeout(doSearch.bind(null, content), 0);
|
| -
|
| - /**
|
| - * @param {string} content
|
| - */
|
| - function doSearch(content)
|
| - {
|
| - callback(WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex));
|
| - }
|
| - },
|
| + /**
|
| + * @param {string} content
|
| + */
|
| + addRevision(content) {
|
| + this._commitContent(content);
|
| + }
|
|
|
| + /**
|
| + * @return {!Promise}
|
| + */
|
| + revertToOriginal() {
|
| /**
|
| + * @this {WebInspector.UISourceCode}
|
| * @param {?string} content
|
| */
|
| - _fireContentAvailable: function(content)
|
| - {
|
| - this._contentLoaded = true;
|
| - this._content = content;
|
| -
|
| - var callback = this._requestContentCallback;
|
| - this._requestContentCallback = null;
|
| - this._requestContentPromise = null;
|
| + function callback(content) {
|
| + if (typeof content !== 'string')
|
| + return;
|
|
|
| - callback.call(null, content);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - contentLoaded: function()
|
| - {
|
| - return this._contentLoaded;
|
| - },
|
| + this.addRevision(content);
|
| + }
|
|
|
| - /**
|
| - * @param {number} lineNumber
|
| - * @param {number=} columnNumber
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - uiLocation: function(lineNumber, columnNumber)
|
| - {
|
| - if (typeof columnNumber === "undefined")
|
| - columnNumber = 0;
|
| - return new WebInspector.UILocation(this, lineNumber, columnNumber);
|
| - },
|
| + WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| + return this.requestOriginalContent().then(callback.bind(this));
|
| + }
|
|
|
| + /**
|
| + * @param {function(!WebInspector.UISourceCode)} callback
|
| + */
|
| + revertAndClearHistory(callback) {
|
| /**
|
| - * @return {!Array<!WebInspector.UISourceCode.Message>}
|
| + * @this {WebInspector.UISourceCode}
|
| + * @param {?string} content
|
| */
|
| - messages: function()
|
| - {
|
| - return this._messages.slice();
|
| - },
|
| + function revert(content) {
|
| + if (typeof content !== 'string')
|
| + return;
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message.Level} level
|
| - * @param {string} text
|
| - * @param {number} lineNumber
|
| - * @param {number=} columnNumber
|
| - * @return {!WebInspector.UISourceCode.Message} message
|
| - */
|
| - addLineMessage: function(level, text, lineNumber, columnNumber)
|
| - {
|
| - return this.addMessage(level, text, new WebInspector.TextRange(lineNumber, columnNumber || 0, lineNumber, columnNumber || 0));
|
| - },
|
| + this.addRevision(content);
|
| + this.history = [];
|
| + callback(this);
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message.Level} level
|
| - * @param {string} text
|
| - * @param {!WebInspector.TextRange} range
|
| - * @return {!WebInspector.UISourceCode.Message} message
|
| - */
|
| - addMessage: function(level, text, range)
|
| - {
|
| - var message = new WebInspector.UISourceCode.Message(this, level, text, range);
|
| - this._messages.push(message);
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageAdded, message);
|
| - return message;
|
| - },
|
| + WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| + this.requestOriginalContent().then(revert.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + workingCopy() {
|
| + if (this._workingCopyGetter) {
|
| + this._workingCopy = this._workingCopyGetter();
|
| + delete this._workingCopyGetter;
|
| + }
|
| + if (this.isDirty())
|
| + return this._workingCopy;
|
| + return this._content;
|
| + }
|
| +
|
| + resetWorkingCopy() {
|
| + this._innerResetWorkingCopy();
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| + }
|
| +
|
| + _innerResetWorkingCopy() {
|
| + delete this._workingCopy;
|
| + delete this._workingCopyGetter;
|
| + }
|
| +
|
| + /**
|
| + * @param {string} newWorkingCopy
|
| + */
|
| + setWorkingCopy(newWorkingCopy) {
|
| + this._workingCopy = newWorkingCopy;
|
| + delete this._workingCopyGetter;
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| + this._project.workspace().dispatchEventToListeners(
|
| + WebInspector.Workspace.Events.WorkingCopyChanged, {uiSourceCode: this});
|
| + }
|
| +
|
| + setWorkingCopyGetter(workingCopyGetter) {
|
| + this._workingCopyGetter = workingCopyGetter;
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
|
| + this._project.workspace().dispatchEventToListeners(
|
| + WebInspector.Workspace.Events.WorkingCopyChanged, {uiSourceCode: this});
|
| + }
|
| +
|
| + removeWorkingCopyGetter() {
|
| + if (!this._workingCopyGetter)
|
| + return;
|
| + this._workingCopy = this._workingCopyGetter();
|
| + delete this._workingCopyGetter;
|
| + }
|
| +
|
| + commitWorkingCopy() {
|
| + if (this.isDirty())
|
| + this._commitContent(this.workingCopy());
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isDirty() {
|
| + return typeof this._workingCopy !== 'undefined' || typeof this._workingCopyGetter !== 'undefined';
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + extension() {
|
| + return WebInspector.ParsedURL.extractExtension(this._name);
|
| + }
|
| +
|
| + /**
|
| + * @return {?string}
|
| + */
|
| + content() {
|
| + return this._content;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} query
|
| + * @param {boolean} caseSensitive
|
| + * @param {boolean} isRegex
|
| + * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
|
| + */
|
| + searchInContent(query, caseSensitive, isRegex, callback) {
|
| + var content = this.content();
|
| + if (!content) {
|
| + this._project.searchInFileContent(this, query, caseSensitive, isRegex, callback);
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} message
|
| - */
|
| - removeMessage: function(message)
|
| - {
|
| - if (this._messages.remove(message))
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageRemoved, message);
|
| - },
|
| -
|
| - removeAllMessages: function()
|
| - {
|
| - var messages = this._messages;
|
| - this._messages = [];
|
| - for (var message of messages)
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageRemoved, message);
|
| - },
|
| + // searchInContent should call back later.
|
| + setTimeout(doSearch.bind(null, content), 0);
|
|
|
| /**
|
| - * @param {number} lineNumber
|
| - * @param {string} type
|
| - * @param {?} data
|
| + * @param {string} content
|
| */
|
| - addLineDecoration: function(lineNumber, type, data)
|
| - {
|
| - var markers = this._lineDecorations.get(type);
|
| - if (!markers) {
|
| - markers = new Map();
|
| - this._lineDecorations.set(type, markers);
|
| - }
|
| - var marker = new WebInspector.UISourceCode.LineMarker(lineNumber, type, data);
|
| - markers.set(lineNumber, marker);
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationAdded, marker);
|
| - },
|
| + function doSearch(content) {
|
| + callback(WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex));
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @param {number} lineNumber
|
| - * @param {string} type
|
| - */
|
| - removeLineDecoration: function(lineNumber, type)
|
| - {
|
| - var markers = this._lineDecorations.get(type);
|
| - if (!markers)
|
| - return;
|
| - var marker = markers.get(lineNumber);
|
| - if (!marker)
|
| - return;
|
| - markers.delete(lineNumber);
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationRemoved, marker);
|
| - if (!markers.size)
|
| - this._lineDecorations.delete(type);
|
| - },
|
| + /**
|
| + * @param {?string} content
|
| + */
|
| + _fireContentAvailable(content) {
|
| + this._contentLoaded = true;
|
| + this._content = content;
|
|
|
| - /**
|
| - * @param {string} type
|
| - */
|
| - removeAllLineDecorations: function(type)
|
| - {
|
| - var markers = this._lineDecorations.get(type);
|
| - if (!markers)
|
| - return;
|
| - this._lineDecorations.delete(type);
|
| - markers.forEach(marker => {
|
| - this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationRemoved, marker);
|
| - });
|
| - },
|
| + var callback = this._requestContentCallback;
|
| + this._requestContentCallback = null;
|
| + this._requestContentPromise = null;
|
|
|
| - /**
|
| - * @param {string} type
|
| - * @return {?Map<number, !WebInspector.UISourceCode.LineMarker>}
|
| - */
|
| - lineDecorations: function(type)
|
| - {
|
| - return this._lineDecorations.get(type) || null;
|
| - },
|
| + callback.call(null, content);
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + contentLoaded() {
|
| + return this._contentLoaded;
|
| + }
|
| +
|
| + /**
|
| + * @param {number} lineNumber
|
| + * @param {number=} columnNumber
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + uiLocation(lineNumber, columnNumber) {
|
| + if (typeof columnNumber === 'undefined')
|
| + columnNumber = 0;
|
| + return new WebInspector.UILocation(this, lineNumber, columnNumber);
|
| + }
|
| +
|
| + /**
|
| + * @return {!Array<!WebInspector.UISourceCode.Message>}
|
| + */
|
| + messages() {
|
| + return this._messages.slice();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message.Level} level
|
| + * @param {string} text
|
| + * @param {number} lineNumber
|
| + * @param {number=} columnNumber
|
| + * @return {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + addLineMessage(level, text, lineNumber, columnNumber) {
|
| + return this.addMessage(
|
| + level, text, new WebInspector.TextRange(lineNumber, columnNumber || 0, lineNumber, columnNumber || 0));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message.Level} level
|
| + * @param {string} text
|
| + * @param {!WebInspector.TextRange} range
|
| + * @return {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + addMessage(level, text, range) {
|
| + var message = new WebInspector.UISourceCode.Message(this, level, text, range);
|
| + this._messages.push(message);
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageAdded, message);
|
| + return message;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + removeMessage(message) {
|
| + if (this._messages.remove(message))
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageRemoved, message);
|
| + }
|
| +
|
| + removeAllMessages() {
|
| + var messages = this._messages;
|
| + this._messages = [];
|
| + for (var message of messages)
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.MessageRemoved, message);
|
| + }
|
| +
|
| + /**
|
| + * @param {number} lineNumber
|
| + * @param {string} type
|
| + * @param {?} data
|
| + */
|
| + addLineDecoration(lineNumber, type, data) {
|
| + var markers = this._lineDecorations.get(type);
|
| + if (!markers) {
|
| + markers = new Map();
|
| + this._lineDecorations.set(type, markers);
|
| + }
|
| + var marker = new WebInspector.UISourceCode.LineMarker(lineNumber, type, data);
|
| + markers.set(lineNumber, marker);
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationAdded, marker);
|
| + }
|
| +
|
| + /**
|
| + * @param {number} lineNumber
|
| + * @param {string} type
|
| + */
|
| + removeLineDecoration(lineNumber, type) {
|
| + var markers = this._lineDecorations.get(type);
|
| + if (!markers)
|
| + return;
|
| + var marker = markers.get(lineNumber);
|
| + if (!marker)
|
| + return;
|
| + markers.delete(lineNumber);
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationRemoved, marker);
|
| + if (!markers.size)
|
| + this._lineDecorations.delete(type);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} type
|
| + */
|
| + removeAllLineDecorations(type) {
|
| + var markers = this._lineDecorations.get(type);
|
| + if (!markers)
|
| + return;
|
| + this._lineDecorations.delete(type);
|
| + markers.forEach(marker => {
|
| + this.dispatchEventToListeners(WebInspector.UISourceCode.Events.LineDecorationRemoved, marker);
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * @param {string} type
|
| + * @return {?Map<number, !WebInspector.UISourceCode.LineMarker>}
|
| + */
|
| + lineDecorations(type) {
|
| + return this._lineDecorations.get(type) || null;
|
| + }
|
| +};
|
|
|
| - __proto__: WebInspector.Object.prototype
|
| +/** @enum {symbol} */
|
| +WebInspector.UISourceCode.Events = {
|
| + WorkingCopyChanged: Symbol('WorkingCopyChanged'),
|
| + WorkingCopyCommitted: Symbol('WorkingCopyCommitted'),
|
| + TitleChanged: Symbol('TitleChanged'),
|
| + SourceMappingChanged: Symbol('SourceMappingChanged'),
|
| + MessageAdded: Symbol('MessageAdded'),
|
| + MessageRemoved: Symbol('MessageRemoved'),
|
| + LineDecorationAdded: Symbol('LineDecorationAdded'),
|
| + LineDecorationRemoved: Symbol('LineDecorationRemoved')
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| + * @unrestricted
|
| */
|
| -WebInspector.UILocation = function(uiSourceCode, lineNumber, columnNumber)
|
| -{
|
| +WebInspector.UILocation = class {
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + */
|
| + constructor(uiSourceCode, lineNumber, columnNumber) {
|
| this.uiSourceCode = uiSourceCode;
|
| this.lineNumber = lineNumber;
|
| this.columnNumber = columnNumber;
|
| -};
|
| -
|
| -WebInspector.UILocation.prototype = {
|
| - /**
|
| - * @return {string}
|
| - */
|
| - linkText: function()
|
| - {
|
| - var linkText = this.uiSourceCode.displayName();
|
| - if (typeof this.lineNumber === "number")
|
| - linkText += ":" + (this.lineNumber + 1);
|
| - return linkText;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - id: function()
|
| - {
|
| - return this.uiSourceCode.project().id() + ":" + this.uiSourceCode.url() + ":" + this.lineNumber + ":" + this.columnNumber;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - toUIString: function()
|
| - {
|
| - return this.uiSourceCode.url() + ":" + (this.lineNumber + 1);
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + linkText() {
|
| + var linkText = this.uiSourceCode.displayName();
|
| + if (typeof this.lineNumber === 'number')
|
| + linkText += ':' + (this.lineNumber + 1);
|
| + return linkText;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + id() {
|
| + return this.uiSourceCode.project().id() + ':' + this.uiSourceCode.url() + ':' + this.lineNumber + ':' +
|
| + this.columnNumber;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + toUIString() {
|
| + return this.uiSourceCode.url() + ':' + (this.lineNumber + 1);
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.ContentProvider}
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {?string|undefined} content
|
| - * @param {!Date} timestamp
|
| + * @unrestricted
|
| */
|
| -WebInspector.Revision = function(uiSourceCode, content, timestamp)
|
| -{
|
| +WebInspector.Revision = class {
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {?string|undefined} content
|
| + * @param {!Date} timestamp
|
| + */
|
| + constructor(uiSourceCode, content, timestamp) {
|
| this._uiSourceCode = uiSourceCode;
|
| this._content = content;
|
| this._timestamp = timestamp;
|
| -};
|
| -
|
| -WebInspector.Revision.prototype = {
|
| - /**
|
| - * @return {!WebInspector.UISourceCode}
|
| - */
|
| - get uiSourceCode()
|
| - {
|
| - return this._uiSourceCode;
|
| - },
|
| -
|
| - /**
|
| - * @return {!Date}
|
| - */
|
| - get timestamp()
|
| - {
|
| - return this._timestamp;
|
| - },
|
| -
|
| - /**
|
| - * @return {?string}
|
| - */
|
| - get content()
|
| - {
|
| - return this._content || null;
|
| - },
|
| -
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.UISourceCode}
|
| + */
|
| + get uiSourceCode() {
|
| + return this._uiSourceCode;
|
| + }
|
| +
|
| + /**
|
| + * @return {!Date}
|
| + */
|
| + get timestamp() {
|
| + return this._timestamp;
|
| + }
|
| +
|
| + /**
|
| + * @return {?string}
|
| + */
|
| + get content() {
|
| + return this._content || null;
|
| + }
|
| +
|
| + /**
|
| + * @return {!Promise}
|
| + */
|
| + revertToThis() {
|
| /**
|
| - * @return {!Promise}
|
| - */
|
| - revertToThis: function()
|
| - {
|
| - /**
|
| - * @param {?string} content
|
| - * @this {WebInspector.Revision}
|
| - */
|
| - function revert(content)
|
| - {
|
| - if (content && this._uiSourceCode._content !== content)
|
| - this._uiSourceCode.addRevision(content);
|
| - }
|
| - WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| - return this.requestContent().then(revert.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {string}
|
| - */
|
| - contentURL: function()
|
| - {
|
| - return this._uiSourceCode.url();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!WebInspector.ResourceType}
|
| - */
|
| - contentType: function()
|
| - {
|
| - return this._uiSourceCode.contentType();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!Promise<?string>}
|
| - */
|
| - requestContent: function()
|
| - {
|
| - return Promise.resolve(/** @type {?string} */(this._content || ""));
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {string} query
|
| - * @param {boolean} caseSensitive
|
| - * @param {boolean} isRegex
|
| - * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
|
| + * @param {?string} content
|
| + * @this {WebInspector.Revision}
|
| */
|
| - searchInContent: function(query, caseSensitive, isRegex, callback)
|
| - {
|
| - callback([]);
|
| + function revert(content) {
|
| + if (content && this._uiSourceCode._content !== content)
|
| + this._uiSourceCode.addRevision(content);
|
| }
|
| + WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.RevisionApplied);
|
| + return this.requestContent().then(revert.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {string}
|
| + */
|
| + contentURL() {
|
| + return this._uiSourceCode.url();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!WebInspector.ResourceType}
|
| + */
|
| + contentType() {
|
| + return this._uiSourceCode.contentType();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Promise<?string>}
|
| + */
|
| + requestContent() {
|
| + return Promise.resolve(/** @type {?string} */ (this._content || ''));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} query
|
| + * @param {boolean} caseSensitive
|
| + * @param {boolean} isRegex
|
| + * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
|
| + */
|
| + searchInContent(query, caseSensitive, isRegex, callback) {
|
| + callback([]);
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {!WebInspector.UISourceCode.Message.Level} level
|
| - * @param {string} text
|
| - * @param {!WebInspector.TextRange} range
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCode.Message = function(uiSourceCode, level, text, range)
|
| -{
|
| +WebInspector.UISourceCode.Message = class {
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {!WebInspector.UISourceCode.Message.Level} level
|
| + * @param {string} text
|
| + * @param {!WebInspector.TextRange} range
|
| + */
|
| + constructor(uiSourceCode, level, text, range) {
|
| this._uiSourceCode = uiSourceCode;
|
| this._level = level;
|
| this._text = text;
|
| this._range = range;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.UISourceCode}
|
| + */
|
| + uiSourceCode() {
|
| + return this._uiSourceCode;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.UISourceCode.Message.Level}
|
| + */
|
| + level() {
|
| + return this._level;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + text() {
|
| + return this._text;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.TextRange}
|
| + */
|
| + range() {
|
| + return this._range;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + lineNumber() {
|
| + return this._range.startLine;
|
| + }
|
| +
|
| + /**
|
| + * @return {(number|undefined)}
|
| + */
|
| + columnNumber() {
|
| + return this._range.startColumn;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} another
|
| + * @return {boolean}
|
| + */
|
| + isEqual(another) {
|
| + return this._uiSourceCode === another._uiSourceCode && this.text() === another.text() &&
|
| + this.level() === another.level() && this.range().equal(another.range());
|
| + }
|
| +
|
| + remove() {
|
| + this._uiSourceCode.removeMessage(this);
|
| + }
|
| };
|
|
|
| /**
|
| * @enum {string}
|
| */
|
| WebInspector.UISourceCode.Message.Level = {
|
| - Error: "Error",
|
| - Warning: "Warning"
|
| -};
|
| -
|
| -WebInspector.UISourceCode.Message.prototype = {
|
| - /**
|
| - * @return {!WebInspector.UISourceCode}
|
| - */
|
| - uiSourceCode: function()
|
| - {
|
| - return this._uiSourceCode;
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.UISourceCode.Message.Level}
|
| - */
|
| - level: function()
|
| - {
|
| - return this._level;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - text: function()
|
| - {
|
| - return this._text;
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.TextRange}
|
| - */
|
| - range: function()
|
| - {
|
| - return this._range;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - lineNumber: function()
|
| - {
|
| - return this._range.startLine;
|
| - },
|
| -
|
| - /**
|
| - * @return {(number|undefined)}
|
| - */
|
| - columnNumber: function()
|
| - {
|
| - return this._range.startColumn;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} another
|
| - * @return {boolean}
|
| - */
|
| - isEqual: function(another)
|
| - {
|
| - return this._uiSourceCode === another._uiSourceCode && this.text() === another.text() && this.level() === another.level() && this.range().equal(another.range());
|
| - },
|
| -
|
| - remove: function()
|
| - {
|
| - this._uiSourceCode.removeMessage(this);
|
| - }
|
| + Error: 'Error',
|
| + Warning: 'Warning'
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {number} line
|
| - * @param {string} type
|
| - * @param {?} data
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCode.LineMarker = function(line, type, data)
|
| -{
|
| +WebInspector.UISourceCode.LineMarker = class {
|
| + /**
|
| + * @param {number} line
|
| + * @param {string} type
|
| + * @param {?} data
|
| + */
|
| + constructor(line, type, data) {
|
| this._line = line;
|
| this._type = type;
|
| this._data = data;
|
| -};
|
| -
|
| -WebInspector.UISourceCode.LineMarker.prototype = {
|
| - /**
|
| - * @return {number}
|
| - */
|
| - line: function()
|
| - {
|
| - return this._line;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - type: function()
|
| - {
|
| - return this._type;
|
| - },
|
| -
|
| - /**
|
| - * @return {*}
|
| - */
|
| - data: function()
|
| - {
|
| - return this._data;
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + line() {
|
| + return this._line;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + type() {
|
| + return this._type;
|
| + }
|
| +
|
| + /**
|
| + * @return {*}
|
| + */
|
| + data() {
|
| + return this._data;
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {?Date} modificationTime
|
| - * @param {?number} contentSize
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCodeMetadata = function(modificationTime, contentSize)
|
| -{
|
| +WebInspector.UISourceCodeMetadata = class {
|
| + /**
|
| + * @param {?Date} modificationTime
|
| + * @param {?number} contentSize
|
| + */
|
| + constructor(modificationTime, contentSize) {
|
| this.modificationTime = modificationTime;
|
| this.contentSize = contentSize;
|
| + }
|
| };
|
|
|