15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.Object} 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {WebInspector.ContentProvider} 36a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Project} project 37591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} parentPath 38591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} name 39f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {string} originURL 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 41a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ResourceType} contentType 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 43f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuWebInspector.UISourceCode = function(project, parentPath, name, originURL, url, contentType) 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project = project; 46591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._parentPath = parentPath; 47591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._name = name; 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._originURL = originURL; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._url = url; 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._contentType = contentType; 511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** @type {!Array.<function(?string)>} */ 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestContentCallbacks = []; 53a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Array.<!WebInspector.PresentationConsoleMessage>} */ 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._consoleMessages = []; 55f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 56d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 57d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @type {!Map.<!WebInspector.Target, !WebInspector.SourceMapping>} 58d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 59d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._sourceMappingForTarget = new Map(); 60d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 61d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 62d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @type {!Map.<!WebInspector.Target, !WebInspector.ScriptFile>} 63d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 64d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._scriptFileForTarget = new Map(); 65d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 66a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Array.<!WebInspector.Revision>} */ 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.history = []; 68f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (!this._project.isServiceProject() && this._url) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._restoreRevisionHistory(); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UISourceCode.Events = { 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WorkingCopyChanged: "WorkingCopyChanged", 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WorkingCopyCommitted: "WorkingCopyCommitted", 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TitleChanged: "TitleChanged", 76591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch SavedStateUpdated: "SavedStateUpdated", 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ConsoleMessageAdded: "ConsoleMessageAdded", 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ConsoleMessageRemoved: "ConsoleMessageRemoved", 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ConsoleMessagesCleared: "ConsoleMessagesCleared", 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SourceMappingChanged: "SourceMappingChanged", 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UISourceCode.prototype = { 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get url() 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._url; 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 93591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @return {string} 94591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 95591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch name: function() 96591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 97591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._name; 98591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 99591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 100591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 101591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @return {string} 102591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 103591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch parentPath: function() 104591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 105591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._parentPath; 106591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 107591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 108591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 109591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @return {string} 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) path: function() 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 113591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._parentPath ? this._parentPath + "/" + this._name : this._name; 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 119e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch fullDisplayName: function() 120926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 121e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return this._project.displayName() + "/" + (this._parentPath ? this._parentPath + "/" : "") + this.displayName(true); 122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 125e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * @param {boolean=} skipTrim 126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 128e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch displayName: function(skipTrim) 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 130e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var displayName = this.name() || WebInspector.UIString("(index)"); 131e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return skipTrim ? displayName : displayName.trimEnd(100); 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 135926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uri: function() 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 139591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var path = this.path(); 140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._project.id()) 141591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return path; 142591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!path) 143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._project.id(); 144591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._project.id() + "/" + path; 145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) originURL: function() 151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._originURL; 153926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 154926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 15693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {boolean} 15793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 15893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) canRename: function() 15993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 16093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return this._project.canRename(); 16193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 16293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 16393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} newName 16593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {function(boolean)} callback 166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 16793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) rename: function(newName, callback) 16893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 16993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._project.rename(this, newName, innerCallback.bind(this)); 17093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 17193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 17293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {boolean} success 17393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string=} newName 1741e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string=} newURL 1751e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string=} newOriginURL 176a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ResourceType=} newContentType 17709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.UISourceCode} 17893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 1791e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function innerCallback(success, newName, newURL, newOriginURL, newContentType) 18093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 18193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (success) 18209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._updateName(/** @type {string} */ (newName), /** @type {string} */ (newURL), /** @type {string} */ (newOriginURL), /** @type {!WebInspector.ResourceType} */ (newContentType)); 18393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) callback(success); 18493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 18593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 18693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 187d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) remove: function() 188d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 189d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._project.deleteFile(this.path()); 190d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 191d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 19293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 19393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string} name 1941e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string} url 1951e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string} originURL 196a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ResourceType=} contentType 19793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 1981e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) _updateName: function(name, url, originURL, contentType) 199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 20093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) var oldURI = this.uri(); 201591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._name = name; 2021e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (url) 2031e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._url = url; 2041e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (originURL) 2051e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._originURL = originURL; 2061e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (contentType) 2071e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._contentType = contentType; 20893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.TitleChanged, oldURI); 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentURL: function() 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 216926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.originURL(); 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 220a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.ResourceType} 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentType: function() 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._contentType; 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 228d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Target} target 229a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.ScriptFile} 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 231d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) scriptFileForTarget: function(target) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 233d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return this._scriptFileForTarget.get(target) || null; 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 237d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Target} target 238a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.ScriptFile} scriptFile 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 240d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) setScriptFileForTarget: function(target, scriptFile) 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 242d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (scriptFile) 243d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._scriptFileForTarget.put(target, scriptFile); 244d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) else 245d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._scriptFileForTarget.remove(target); 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 249a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.Project} 250926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 251926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) project: function() 252926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 253926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._project; 254926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 257591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {function(?Date, ?number)} callback 258591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 259591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch requestMetadata: function(callback) 260591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 261591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._project.requestMetadata(this, callback); 262591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 263591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 264591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 2651e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {function(?string)} callback 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestContent: function(callback) 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._content || this._contentLoaded) { 2701e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callback(this._content); 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestContentCallbacks.push(callback); 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._requestContentCallbacks.length === 1) 275926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project.requestFileContent(this, this._fireContentAvailable.bind(this)); 276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 277926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 278591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 279aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {function()} callback 280aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 281aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch _pushCheckContentUpdatedCallback: function(callback) 282aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 283aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!this._checkContentUpdatedCallbacks) 284aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._checkContentUpdatedCallbacks = []; 285aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._checkContentUpdatedCallbacks.push(callback); 286aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 287aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 288aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch _terminateContentCheck: function() 289aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 290aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch delete this._checkingContent; 291aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this._checkContentUpdatedCallbacks) { 292aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._checkContentUpdatedCallbacks.forEach(function(callback) { callback(); }); 293aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch delete this._checkContentUpdatedCallbacks; 294aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 295aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 296aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 297aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 298591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {function()=} callback 299591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 300591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch checkContentUpdated: function(callback) 301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 302aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback = callback || function() {}; 303aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!this._project.canSetFileContent()) { 304aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch callback(); 305926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 306aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 307aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._pushCheckContentUpdatedCallback(callback); 308aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 309aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this._checkingContent) { 310926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 311aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch } 312926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._checkingContent = true; 313926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project.requestFileContent(this, contentLoaded.bind(this)); 314926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 3151e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 3161e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {?string} updatedContent 31709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.UISourceCode} 3181e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 319926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function contentLoaded(updatedContent) 320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 32153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (updatedContent === null) { 32253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var workingCopy = this.workingCopy(); 32353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._commitContent("", false); 32453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.setWorkingCopy(workingCopy); 325aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._terminateContentCheck(); 32653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 32753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 328926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (typeof this._lastAcceptedContent === "string" && this._lastAcceptedContent === updatedContent) { 329aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._terminateContentCheck(); 330926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 331926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 332926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._content === updatedContent) { 33353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._lastAcceptedContent; 334aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._terminateContentCheck(); 335926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 336926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 337926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 338926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this.isDirty()) { 339926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._commitContent(updatedContent, false); 340aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._terminateContentCheck(); 341926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var shouldUpdate = window.confirm(WebInspector.UIString("This file was changed externally. Would you like to reload it?")); 345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (shouldUpdate) 346926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._commitContent(updatedContent, false); 347926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._lastAcceptedContent = updatedContent; 349aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._terminateContentCheck(); 350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3541e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {function(?string)} callback 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestOriginalContent: function(callback) 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 358926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project.requestFileContent(this, callback); 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} content 363926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} shouldSetContentInProject 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 365926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _commitContent: function(content, shouldSetContentInProject) 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 36753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._lastAcceptedContent; 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._content = content; 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._contentLoaded = true; 37053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var lastRevision = this.history.length ? this.history[this.history.length - 1] : null; 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!lastRevision || lastRevision._content !== this._content) { 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var revision = new WebInspector.Revision(this, this._content, new Date()); 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.history.push(revision); 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) revision._persist(); 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._innerResetWorkingCopy(); 379591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._hasCommittedChanges = true; 38053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyCommitted); 381591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (this._url && WebInspector.fileManager.isURLSaved(this._url)) 382591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._saveURLWithFileManager(false, this._content); 383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (shouldSetContentInProject) 384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project.setFileContent(this, this._content, function() { }); 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 388591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {boolean} forceSaveAs 3891e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {?string} content 390591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 391591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch _saveURLWithFileManager: function(forceSaveAs, content) 392591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 39309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.fileManager.save(this._url, /** @type {string} */ (content), forceSaveAs, callback.bind(this)); 394591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch WebInspector.fileManager.close(this._url); 395591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 396a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 397a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {boolean} accepted 39809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.UISourceCode} 399a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 400a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function callback(accepted) 401591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 402a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (!accepted) 403a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return; 404591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._savedWithFileManager = true; 405591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this.dispatchEventToListeners(WebInspector.UISourceCode.Events.SavedStateUpdated); 406591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 407591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 408591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 409591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 410591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {boolean} forceSaveAs 411591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 412591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch saveToFileSystem: function(forceSaveAs) 413591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 414591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (this.isDirty()) { 415591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._saveURLWithFileManager(forceSaveAs, this.workingCopy()); 416591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this.commitWorkingCopy(function() { }); 417591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return; 418591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 419591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this.requestContent(this._saveURLWithFileManager.bind(this, forceSaveAs)); 420591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 421591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 422591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 423591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @return {boolean} 424591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 425591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch hasUnsavedCommittedChanges: function() 426591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 427f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (this._savedWithFileManager || this.project().canSetFileContent() || this._project.isServiceProject()) 4281e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return false; 42909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (this._project.workspace().hasResourceContentTrackingExtensions()) 430591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 431591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return !!this._hasCommittedChanges; 432591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 433591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 434591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} content 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addRevision: function(content) 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 439926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._commitContent(content, true); 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _restoreRevisionHistory: function() 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!window.localStorage) 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var registry = WebInspector.Revision._revisionHistoryRegistry(); 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var historyItems = registry[this.url]; 44953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!historyItems) 45053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 45153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 45253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) function filterOutStale(historyItem) 45353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 45493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // FIXME: Main frame might not have been loaded yet when uiSourceCodes for snippets are created. 455d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (!WebInspector.resourceTreeModel || !WebInspector.resourceTreeModel.mainFrame) 45693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 45753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return historyItem.loaderId === WebInspector.resourceTreeModel.mainFrame.loaderId; 45853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 45953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 46053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) historyItems = historyItems.filter(filterOutStale); 46153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!historyItems.length) 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 46353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < historyItems.length; ++i) { 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var content = window.localStorage[historyItems[i].key]; 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var timestamp = new Date(historyItems[i].timestamp); 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var revision = new WebInspector.Revision(this, content, timestamp); 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.history.push(revision); 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._content = this.history[this.history.length - 1].content; 4718abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this._hasCommittedChanges = true; 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._contentLoaded = true; 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _clearRevisionHistory: function() 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!window.localStorage) 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var registry = WebInspector.Revision._revisionHistoryRegistry(); 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var historyItems = registry[this.url]; 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; historyItems && i < historyItems.length; ++i) 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete window.localStorage[historyItems[i].key]; 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete registry[this.url]; 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.localStorage["revision-history"] = JSON.stringify(registry); 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 487f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) revertToOriginal: function() 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.UISourceCode} 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} content 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4941e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback(content) 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (typeof content !== "string") 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addRevision(content); 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.requestOriginalContent(callback.bind(this)); 503926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 504926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { 505926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) action: WebInspector.UserMetrics.UserActionNames.ApplyOriginalContent, 506926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) url: this.url 507926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }); 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 511a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.UISourceCode)} callback 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) revertAndClearHistory: function(callback) 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.UISourceCode} 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} content 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5191e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function revert(content) 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (typeof content !== "string") 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addRevision(content); 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._clearRevisionHistory(); 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.history = []; 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(this); 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.requestOriginalContent(revert.bind(this)); 531926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 532926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { 533926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) action: WebInspector.UserMetrics.UserActionNames.RevertRevision, 534926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) url: this.url 535926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }); 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) workingCopy: function() 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 54353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._workingCopyGetter) { 54453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._workingCopy = this._workingCopyGetter(); 54553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._workingCopyGetter; 54653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.isDirty()) 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._workingCopy; 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._content; 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) resetWorkingCopy: function() 55353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 55453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._innerResetWorkingCopy(); 55553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged); 55653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 55753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 55853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _innerResetWorkingCopy: function() 55953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 56053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._workingCopy; 56153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._workingCopyGetter; 56253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 56353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newWorkingCopy 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setWorkingCopy: function(newWorkingCopy) 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 56953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._workingCopy = newWorkingCopy; 57053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._workingCopyGetter; 57153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged); 57253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 57353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 57453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) setWorkingCopyGetter: function(workingCopyGetter) 57553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 57653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._workingCopyGetter = workingCopyGetter; 57753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged); 57853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 57953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 58053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) removeWorkingCopyGetter: function() 58153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 58253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!this._workingCopyGetter) 58353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 58453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._workingCopy = this._workingCopyGetter(); 58553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete this._workingCopyGetter; 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?string)} callback 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) commitWorkingCopy: function(callback) 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.isDirty()) { 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(null); 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._commitContent(this.workingCopy(), true); 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(null); 600926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 601926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { 602926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) action: WebInspector.UserMetrics.UserActionNames.FileSaved, 603926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) url: this.url 604926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }); 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isDirty: function() 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 61253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return typeof this._workingCopy !== "undefined" || typeof this._workingCopyGetter !== "undefined"; 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6181e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) highlighterType: function() 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6201e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var lastIndexOfDot = this._name.lastIndexOf("."); 6211e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var extension = lastIndexOfDot !== -1 ? this._name.substr(lastIndexOfDot + 1) : ""; 6221e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var indexOfQuestionMark = extension.indexOf("?"); 6231e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (indexOfQuestionMark !== -1) 6241e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) extension = extension.substr(0, indexOfQuestionMark); 6251e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var mimeType = WebInspector.ResourceType.mimeTypesForExtensions[extension.toLowerCase()]; 6261e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return mimeType || this.contentType().canonicalMimeType(); 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?string} 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) content: function() 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._content; 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} caseSensitive 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} isRegex 641a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) searchInContent: function(query, caseSensitive, isRegex, callback) 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var content = this.content(); 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (content) { 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var provider = new WebInspector.StaticContentProvider(this.contentType(), content); 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) provider.searchInContent(query, caseSensitive, isRegex, callback); 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 652926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._project.searchInFileContent(this, query, caseSensitive, isRegex, callback); 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} content 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6581e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) _fireContentAvailable: function(content) 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._contentLoaded = true; 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._content = content; 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callbacks = this._requestContentCallbacks.slice(); 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestContentCallbacks = []; 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < callbacks.length; ++i) 6661e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callbacks[i](content); 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentLoaded: function() 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._contentLoaded; 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 678d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Target} target 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} columnNumber 681a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.RawLocation} 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 683d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) uiLocationToRawLocation: function(target, lineNumber, columnNumber) 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 685d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var sourceMapping = this._sourceMappingForTarget.get(target); 686d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (!sourceMapping) 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 688d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return sourceMapping.uiLocationToRawLocation(this, lineNumber, columnNumber); 689d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 690d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 691d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 692d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {number} lineNumber 693d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {number} columnNumber 694d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @return {!Array.<!WebInspector.RawLocation>} 695d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 696d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) uiLocationToRawLocations: function(lineNumber, columnNumber) 697d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 698d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var result = []; 699d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var sourceMappings = this._sourceMappingForTarget.values(); 700d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) for (var i = 0; i < sourceMappings.length; ++i) { 701d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var rawLocation = sourceMappings[i].uiLocationToRawLocation(this, lineNumber, columnNumber); 702d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (rawLocation) 703d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result.push(rawLocation); 704d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) } 705d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return result; 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 709a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.PresentationConsoleMessage>} 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) consoleMessages: function() 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._consoleMessages; 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 717a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.PresentationConsoleMessage} message 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) consoleMessageAdded: function(message) 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._consoleMessages.push(message); 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.ConsoleMessageAdded, message); 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 726a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.PresentationConsoleMessage} message 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) consoleMessageRemoved: function(message) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._consoleMessages.remove(message); 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.ConsoleMessageRemoved, message); 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) consoleMessagesCleared: function() 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._consoleMessages = []; 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.ConsoleMessagesCleared); 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) hasSourceMapping: function() 7441e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 745d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return !!this._sourceMappingForTarget.size(); 7461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 7471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 7481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 749d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Target} target 750a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.SourceMapping} sourceMapping 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 752d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) setSourceMappingForTarget: function(target, sourceMapping) 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 754d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (this._sourceMappingForTarget.get(target) === sourceMapping) 7551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return; 756d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 757d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (sourceMapping) 758d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._sourceMappingForTarget.put(target, sourceMapping); 759d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) else 760d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._sourceMappingForTarget.remove(target); 761d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 762d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.UISourceCode.Events.SourceMappingChanged, {target: target, isIdentity: sourceMapping ? sourceMapping.isIdentity() : false}); 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7656f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch /** 7666f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {number} lineNumber 7676f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {number=} columnNumber 7686f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @return {!WebInspector.UILocation} 7696f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 7706f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch uiLocation: function(lineNumber, columnNumber) 7716f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch { 7726f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch if (typeof columnNumber === "undefined") 7736f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch columnNumber = 0; 7746f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch return new WebInspector.UILocation(this, lineNumber, columnNumber); 7756f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch }, 7766f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.Object.prototype 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 782a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} columnNumber 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UILocation = function(uiSourceCode, lineNumber, columnNumber) 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.uiSourceCode = uiSourceCode; 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lineNumber = lineNumber; 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.columnNumber = columnNumber; 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.UILocation.prototype = { 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 795d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.Target} target 796a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.RawLocation} 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 798d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) uiLocationToRawLocation: function(target) 799d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 800d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return this.uiSourceCode.uiLocationToRawLocation(target, this.lineNumber, this.columnNumber); 801d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 802d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 803d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 804d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @return {!Array.<!WebInspector.RawLocation>} 805d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 806d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) uiLocationToRawLocations: function() 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 808d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return this.uiSourceCode.uiLocationToRawLocations(this.lineNumber, this.columnNumber); 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 81253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @return {string} 81353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 81453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) linkText: function() 81553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 816e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var linkText = this.uiSourceCode.displayName(); 81753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (typeof this.lineNumber === "number") 81853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) linkText += ":" + (this.lineNumber + 1); 81953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return linkText; 820d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 821d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 822d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 823d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @return {string} 824d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 825d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) id: function() 826d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 827d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return this.uiSourceCode.uri() + ":" + this.lineNumber + ":" + this.columnNumber; 828d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @interface 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.RawLocation = function() 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 838aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.RawLocation.prototype = { 839aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 840aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {?WebInspector.UILocation} 841aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 842aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch toUILocation: function() { } 843aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 844aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 847a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.RawLocation} rawLocation 848a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.LiveLocation = function(rawLocation, updateDelegate) 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._rawLocation = rawLocation; 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateDelegate = updateDelegate; 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.LiveLocation.prototype = { 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) update: function() 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var uiLocation = this.uiLocation(); 860d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!uiLocation) 861d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 862d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (this._updateDelegate(uiLocation)) 863d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.dispose(); 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 867a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.RawLocation} 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rawLocation: function() 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._rawLocation; 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 875a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.UILocation} 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) uiLocation: function() 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 87909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) throw "Not implemented"; 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispose: function() 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 884d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // Overridden by subclasses. 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {WebInspector.ContentProvider} 891a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string|undefined} content 893a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Date} timestamp 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Revision = function(uiSourceCode, content, timestamp) 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode = uiSourceCode; 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._content = content; 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._timestamp = timestamp; 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Revision._revisionHistoryRegistry = function() 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.Revision._revisionHistoryRegistryObject) { 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (window.localStorage) { 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var revisionHistory = window.localStorage["revision-history"]; 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.Revision._revisionHistoryRegistryObject = revisionHistory ? JSON.parse(revisionHistory) : {}; 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch (e) { 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.Revision._revisionHistoryRegistryObject = {}; 9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.Revision._revisionHistoryRegistryObject = {}; 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.Revision._revisionHistoryRegistryObject; 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Revision.filterOutStaleRevisions = function() 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!window.localStorage) 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var registry = WebInspector.Revision._revisionHistoryRegistry(); 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var filteredRegistry = {}; 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var url in registry) { 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var historyItems = registry[url]; 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var filteredHistoryItems = []; 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; historyItems && i < historyItems.length; ++i) { 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var historyItem = historyItems[i]; 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (historyItem.loaderId === WebInspector.resourceTreeModel.mainFrame.loaderId) { 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filteredHistoryItems.push(historyItem); 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filteredRegistry[url] = filteredHistoryItems; 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete window.localStorage[historyItem.key]; 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.Revision._revisionHistoryRegistryObject = filteredRegistry; 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function persist() 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.localStorage["revision-history"] = JSON.stringify(filteredRegistry); 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Schedule async storage. 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(persist, 0); 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Revision.prototype = { 9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 950a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.UISourceCode} 9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get uiSourceCode() 9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._uiSourceCode; 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 958a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Date} 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get timestamp() 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._timestamp; 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?string} 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get content() 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._content || null; 9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) revertToThis: function() 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9751e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 97609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} content 97709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.Revision} 9781e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function revert(content) 9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._uiSourceCode._content !== content) 9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode.addRevision(content); 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.requestContent(revert.bind(this)); 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentURL: function() 9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 992926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._uiSourceCode.originURL(); 9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 996a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.ResourceType} 9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentType: function() 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._uiSourceCode.contentType(); 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 100409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(string)} callback 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestContent: function(callback) 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10081e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callback(this._content || ""); 10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} caseSensitive 10145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} isRegex 1015a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback 10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) searchInContent: function(query, caseSensitive, isRegex, callback) 10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback([]); 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _persist: function() 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1024591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (this._uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) 1025591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return; 1026591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!window.localStorage) 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var url = this.contentURL(); 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!url || url.startsWith("inspector://")) 10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var loaderId = WebInspector.resourceTreeModel.mainFrame.loaderId; 10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var timestamp = this.timestamp.getTime(); 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var key = "revision-history|" + url + "|" + loaderId + "|" + timestamp; 10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var registry = WebInspector.Revision._revisionHistoryRegistry(); 10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var historyItems = registry[url]; 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!historyItems) { 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) historyItems = []; 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) registry[url] = historyItems; 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) historyItems.push({url: url, loaderId: loaderId, timestamp: timestamp, key: key}); 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 104709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 104809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.Revision} 104909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function persist() 10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.localStorage[key] = this._content; 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.localStorage["revision-history"] = JSON.stringify(registry); 10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Schedule async storage. 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(persist.bind(this), 0); 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1060