15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 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)/** 32e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @interface 33e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 34e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.ProjectSearchConfig = function() {} 35e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 36e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.ProjectSearchConfig.prototype = { 37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 38e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {string} 39e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 40e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) query: function() { }, 41e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 45e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) ignoreCase: function() { }, 46e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 49e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) isRegex: function() { }, 51e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 53e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {!Array.<string>} 54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 55e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) queries: function() { }, 56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 57e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 58e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {string} filePath 59e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 60e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 61e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) filePathMatchesFileQuery: function(filePath) { } 62e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 63e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 64e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)/** 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 66591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} parentPath 67591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} name 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} originURL 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} url 70a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ResourceType} contentType 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 72f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuWebInspector.FileDescriptor = function(parentPath, name, originURL, url, contentType) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 74591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this.parentPath = parentPath; 75591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this.name = name; 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.originURL = originURL; 77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.url = url; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.contentType = contentType; 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @interface 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.ProjectDelegate = function() { } 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.ProjectDelegate.prototype = { 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) type: function() { }, 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 95f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu displayName: function() { }, 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {string} 997242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 1007242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci url: function() { }, 1017242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1027242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 103591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 104591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {function(?Date, ?number)} callback 105591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 106591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch requestMetadata: function(path, callback) { }, 107591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 108591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 109591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 1101e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {function(?string)} callback 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestFileContent: function(path, callback) { }, 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) canSetFileContent: function() { }, 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 120591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 121926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} newContent 122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(?string)} callback 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) setFileContent: function(path, newContent, callback) { }, 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 12793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {boolean} 12893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 12993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) canRename: function() { }, 13093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 13193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 132591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 13393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string} newName 134a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(boolean, string=, string=, string=, !WebInspector.ResourceType=)} callback 13593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 13693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) rename: function(path, newName, callback) { }, 13793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 13893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 139591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 140197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {function()=} callback 1411fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch */ 142197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch refresh: function(path, callback) { }, 1431fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 1441fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch /** 1451fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch * @param {string} path 146c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 147c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) excludeFolder: function(path) { }, 148c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 149c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 150c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {string} path 15123e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {?string} name 152f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} content 15323e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {function(?string)} callback 15423e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch */ 155f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) createFile: function(path, name, content, callback) { }, 15623e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 15723e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch /** 15823e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {string} path 15923e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch */ 16023e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch deleteFile: function(path) { }, 16123e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 1623c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch remove: function() { }, 1633c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 16423e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch /** 16523e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {string} path 166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} query 167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} caseSensitive 168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} isRegex 169a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 171f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) searchInFileContent: function(path, query, caseSensitive, isRegex, callback) { }, 172f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 173f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) /** 174a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {!WebInspector.ProjectSearchConfig} searchConfig 175197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Array.<string>} filesMathingFileQuery 176a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Progress} progress 177a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<string>)} callback 178f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) */ 179197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch findFilesMatchingSearchRequest: function(searchConfig, filesMathingFileQuery, progress, callback) { }, 180f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 181f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) /** 182a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Progress} progress 183f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) */ 1846f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch indexContent: function(progress) { } 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1886f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @constructor 1896f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {!WebInspector.Project} project 1906f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 1916f543c786fc42989f552b4daa774ca5ff32fa697Ben MurdochWebInspector.ProjectStore = function(project) 1926f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch{ 1936f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._project = project; 1946f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch} 1956f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 1966f543c786fc42989f552b4daa774ca5ff32fa697Ben MurdochWebInspector.ProjectStore.prototype = { 1976f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch /** 1986f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {!WebInspector.FileDescriptor} fileDescriptor 1996f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 2006f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch addFile: function(fileDescriptor) 2016f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch { 2026f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._project._addFile(fileDescriptor); 2036f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch }, 2046f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 2056f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch /** 2066f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {string} path 2076f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 2086f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch removeFile: function(path) 2096f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch { 2106f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._project._removeFile(path); 2116f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch }, 2126f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 2136f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch /** 2146f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @return {!WebInspector.Project} 2156f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 2166f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch project: function() 2176f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch { 2186f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch return this._project; 2196f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch } 2206f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch} 2216f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 2226f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch/** 2237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @constructor 2247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @extends {WebInspector.Object} 225a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Workspace} workspace 2266f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {string} projectId 227a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ProjectDelegate} projectDelegate 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2296f543c786fc42989f552b4daa774ca5ff32fa697Ben MurdochWebInspector.Project = function(workspace, projectId, projectDelegate) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 23109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** @type {!Object.<string, !{uiSourceCode: !WebInspector.UISourceCode, index: number}>} */ 232591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesMap = {}; 233a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Array.<!WebInspector.UISourceCode>} */ 234591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesList = []; 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._workspace = workspace; 2366f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._projectId = projectId; 237926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._projectDelegate = projectDelegate; 2387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._url = this._projectDelegate.url(); 239591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._displayName = this._projectDelegate.displayName(); 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 2437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @enum {string} 2447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 2457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.Project.Events = { 2467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DisplayNameUpdated: "DisplayNameUpdated" 2477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}; 2487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Project.prototype = { 250926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 251926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 252926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 253926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) id: function() 254926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 2556f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch return this._projectId; 256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 258926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 260926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 261926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) type: function() 262926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 263f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return this._projectDelegate.type(); 264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 265926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 266926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 267926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 268926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 269f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu displayName: function() 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 271591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._displayName; 272926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 273926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 274926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 2757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {string} displayName 2767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 2777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setDisplayName: function(displayName) 2787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 2797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (this._displayName === displayName) 2807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return; 2817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this._displayName = displayName; 2827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.dispatchEventToListeners(WebInspector.Project.Events.DisplayNameUpdated); 2837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 2847242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 2867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {string} 2877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 2887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci url: function() 2897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 2907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return this._url; 2917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 2927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2937242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 295926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 296926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) isServiceProject: function() 297926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 298d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return this._projectDelegate.type() === WebInspector.projectTypes.Debugger || this._projectDelegate.type() === WebInspector.projectTypes.Formatter || this._projectDelegate.type() === WebInspector.projectTypes.LiveEdit; 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3016f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch /** 3026f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {!WebInspector.FileDescriptor} fileDescriptor 3036f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch */ 3046f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch _addFile: function(fileDescriptor) 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3061fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch var path = fileDescriptor.parentPath ? fileDescriptor.parentPath + "/" + fileDescriptor.name : fileDescriptor.name; 3071fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch var uiSourceCode = this.uiSourceCode(path); 3081fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch if (uiSourceCode) 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 310926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 311f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu uiSourceCode = new WebInspector.UISourceCode(this, fileDescriptor.parentPath, fileDescriptor.name, fileDescriptor.originURL, fileDescriptor.url, fileDescriptor.contentType); 312591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 3131fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch this._uiSourceCodesMap[path] = {uiSourceCode: uiSourceCode, index: this._uiSourceCodesList.length}; 314591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesList.push(uiSourceCode); 315591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._workspace.dispatchEventToListeners(WebInspector.Workspace.Events.UISourceCodeAdded, uiSourceCode); 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 318c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 319c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {string} path 320c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 321c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _removeFile: function(path) 322c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 323926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var uiSourceCode = this.uiSourceCode(path); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!uiSourceCode) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 326591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 327591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var entry = this._uiSourceCodesMap[path]; 328591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var movedUISourceCode = this._uiSourceCodesList[this._uiSourceCodesList.length - 1]; 329591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesList[entry.index] = movedUISourceCode; 330591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var movedEntry = this._uiSourceCodesMap[movedUISourceCode.path()]; 331591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch movedEntry.index = entry.index; 332591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesList.splice(this._uiSourceCodesList.length - 1, 1); 333591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch delete this._uiSourceCodesMap[path]; 334591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._workspace.dispatchEventToListeners(WebInspector.Workspace.Events.UISourceCodeRemoved, entry.uiSourceCode); 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 337f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) _remove: function() 338926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 339f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this._workspace.dispatchEventToListeners(WebInspector.Workspace.Events.ProjectRemoved, this); 340591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesMap = {}; 341591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesList = []; 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 34509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.Workspace} 34609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 34709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) workspace: function() 34809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 34909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._workspace; 35009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 35109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 35209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 353591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.UISourceCode} 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 356926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCode: function(path) 357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 358591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var entry = this._uiSourceCodesMap[path]; 359591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return entry ? entry.uiSourceCode : null; 360926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 361926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 362926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 363926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} originURL 364926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {?WebInspector.UISourceCode} 365926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 366926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCodeForOriginURL: function(originURL) 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 368591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch for (var i = 0; i < this._uiSourceCodesList.length; ++i) { 369591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var uiSourceCode = this._uiSourceCodesList[i]; 370926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (uiSourceCode.originURL() === originURL) 371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return uiSourceCode; 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 377a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.UISourceCode>} 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) uiSourceCodes: function() 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 381591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return this._uiSourceCodesList; 382591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 383591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 384591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 385a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 386591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {function(?Date, ?number)} callback 387591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */ 388591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch requestMetadata: function(uiSourceCode, callback) 389591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch { 390591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._projectDelegate.requestMetadata(uiSourceCode.path(), callback); 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 394a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 3951e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {function(?string)} callback 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 397926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) requestFileContent: function(uiSourceCode, callback) 398926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 399926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._projectDelegate.requestFileContent(uiSourceCode.path(), callback); 400926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 401926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 402926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 403926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 405926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) canSetFileContent: function() 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 407926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._projectDelegate.canSetFileContent(); 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 411a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 412926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} newContent 413926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(?string)} callback 414926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 415926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) setFileContent: function(uiSourceCode, newContent, callback) 416926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 417521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._projectDelegate.setFileContent(uiSourceCode.path(), newContent, onSetContent.bind(this)); 418521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 419521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 420521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {?string} content 42109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.Project} 422521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 423521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) function onSetContent(content) 424521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 425521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._workspace.dispatchEventToListeners(WebInspector.Workspace.Events.UISourceCodeContentCommitted, { uiSourceCode: uiSourceCode, content: newContent }); 426521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) callback(content); 427521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 428926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 429926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 430926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 43193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @return {boolean} 43293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 43393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) canRename: function() 43493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 43593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return this._projectDelegate.canRename(); 43693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 43793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 43893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 439a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 44093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string} newName 441a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(boolean, string=, string=, string=, !WebInspector.ResourceType=)} callback 44293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 44393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) rename: function(uiSourceCode, newName, callback) 44493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 445591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (newName === uiSourceCode.name()) { 4461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callback(true, uiSourceCode.name(), uiSourceCode.url, uiSourceCode.originURL(), uiSourceCode.contentType()); 447591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return; 448591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 449591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 45093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._projectDelegate.rename(uiSourceCode.path(), newName, innerCallback.bind(this)); 45193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 45293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 45393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {boolean} success 45493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string=} newName 4551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string=} newURL 4561e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {string=} newOriginURL 457a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ResourceType=} newContentType 45809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.Project} 45993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 4601e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function innerCallback(success, newName, newURL, newOriginURL, newContentType) 46193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 46293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!success || !newName) { 46393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) callback(false); 46493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 46593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 466591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var oldPath = uiSourceCode.path(); 467591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var newPath = uiSourceCode.parentPath() ? uiSourceCode.parentPath() + "/" + newName : newName; 468591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodesMap[newPath] = this._uiSourceCodesMap[oldPath]; 469591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch delete this._uiSourceCodesMap[oldPath]; 4701e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) callback(true, newName, newURL, newOriginURL, newContentType); 47193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 47293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 47393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 47493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 4751fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch * @param {string} path 476197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {function()=} callback 4771fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch */ 478197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch refresh: function(path, callback) 4791fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch { 480197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._projectDelegate.refresh(path, callback); 4811fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch }, 4821fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 4831fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch /** 48423e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {string} path 485c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 486c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) excludeFolder: function(path) 487c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 488c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._projectDelegate.excludeFolder(path); 489c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var uiSourceCodes = this._uiSourceCodesList.slice(); 490c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) for (var i = 0; i < uiSourceCodes.length; ++i) { 491c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var uiSourceCode = uiSourceCodes[i]; 492c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (uiSourceCode.path().startsWith(path.substr(1))) 493c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._removeFile(uiSourceCode.path()); 494c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) } 495c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 496c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 497c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 498c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {string} path 49923e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {?string} name 500f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} content 50123e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch * @param {function(?string)} callback 50223e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch */ 503f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) createFile: function(path, name, content, callback) 50423e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch { 505f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._projectDelegate.createFile(path, name, content, innerCallback); 50623e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 50723e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch function innerCallback(filePath) 50823e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch { 50923e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch callback(filePath); 51023e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch } 51123e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch }, 51223e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 51323e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch /** 514f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} path 51523e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch */ 516f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) deleteFile: function(path) 51723e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch { 518f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._projectDelegate.deleteFile(path); 51923e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch }, 52023e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 5213c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch remove: function() 5223c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch { 5233c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this._projectDelegate.remove(); 5243c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch }, 5253c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 52623e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch /** 527a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} caseSensitive 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} isRegex 531a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 533926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) searchInFileContent: function(uiSourceCode, query, caseSensitive, isRegex, callback) 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 535926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._projectDelegate.searchInFileContent(uiSourceCode.path(), query, caseSensitive, isRegex, callback); 536926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 537926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 538f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) /** 539a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {!WebInspector.ProjectSearchConfig} searchConfig 540197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Array.<string>} filesMathingFileQuery 541a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Progress} progress 542a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<string>)} callback 543f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) */ 544197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch findFilesMatchingSearchRequest: function(searchConfig, filesMathingFileQuery, progress, callback) 545f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) { 546197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._projectDelegate.findFilesMatchingSearchRequest(searchConfig, filesMathingFileQuery, progress, callback); 547f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) }, 548f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 549f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) /** 550a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Progress} progress 551f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) */ 5526f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch indexContent: function(progress) 553f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) { 5546f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._projectDelegate.indexContent(progress); 5557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 5567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 5577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci __proto__: WebInspector.Object.prototype 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch/** 56110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @enum {string} 56210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 563926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.projectTypes = { 564926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Debugger: "debugger", 565d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Formatter: "formatter", 566926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) LiveEdit: "liveedit", 567926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Network: "network", 568926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Snippets: "snippets", 56910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch FileSystem: "filesystem", 57010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch ContentScripts: "contentscripts" 571926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 572926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.Object} 576a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemMapping} fileSystemMapping 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 578521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)WebInspector.Workspace = function(fileSystemMapping) 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 580926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._fileSystemMapping = fileSystemMapping; 581a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<string, !WebInspector.Project>} */ 582926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._projects = {}; 58309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._hasResourceContentTrackingExtensions = false; 584197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.RevealSourceLine, this._revealSourceLine, this); 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Workspace.Events = { 588591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch UISourceCodeAdded: "UISourceCodeAdded", 589591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch UISourceCodeRemoved: "UISourceCodeRemoved", 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) UISourceCodeContentCommitted: "UISourceCodeContentCommitted", 5917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ProjectAdded: "ProjectAdded", 592f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) ProjectRemoved: "ProjectRemoved" 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Workspace.prototype = { 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 597a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.UISourceCode>} 598a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 599a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) unsavedSourceCodes: function() 600a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 601a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function filterUnsaved(sourceCode) 602a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 603a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return sourceCode.isDirty(); 604a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 605a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return this.uiSourceCodes().filter(filterUnsaved); 606a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) }, 607a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 608a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 609926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} projectId 610591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} path 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.UISourceCode} 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 613926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCode: function(projectId, path) 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 615926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var project = this._projects[projectId]; 616926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return project ? project.uiSourceCode(path) : null; 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 620926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} originURL 621926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {?WebInspector.UISourceCode} 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 623926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCodeForOriginURL: function(originURL) 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 62510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch var projects = this.projectsForType(WebInspector.projectTypes.Network); 62610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch projects = projects.concat(this.projectsForType(WebInspector.projectTypes.ContentScripts)); 62710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch for (var i = 0; i < projects.length; ++i) { 62810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch var project = projects[i]; 629926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var uiSourceCode = project.uiSourceCodeForOriginURL(originURL); 630926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (uiSourceCode) 631926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return uiSourceCode; 632926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 633926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return null; 634926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 635926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 636926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 637926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} type 638a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.UISourceCode>} 639926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 640926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCodesForProjectType: function(type) 641926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 642926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var result = []; 643926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var projectName in this._projects) { 644926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var project = this._projects[projectName]; 645926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (project.type() === type) 646926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result = result.concat(project.uiSourceCodes()); 647926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 648926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return result; 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6526f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {string} projectId 653a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ProjectDelegate} projectDelegate 6546f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @return {!WebInspector.ProjectStore} 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6566f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch addProject: function(projectId, projectDelegate) 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6586f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch var project = new WebInspector.Project(this, projectId, projectDelegate); 6596f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch this._projects[projectId] = project; 6606f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch var projectStore = new WebInspector.ProjectStore(project); 6617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.dispatchEventToListeners(WebInspector.Workspace.Events.ProjectAdded, project); 6626f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch return projectStore; 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 666926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} projectId 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 668926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) removeProject: function(projectId) 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 670926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var project = this._projects[projectId]; 671926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!project) 672926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 673926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._projects[projectId]; 674f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) project._remove(); 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 678926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} projectId 679a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.Project} 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 681926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) project: function(projectId) 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 683926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._projects[projectId]; 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 687a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.Project>} 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 689926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) projects: function() 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 691926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return Object.values(this._projects); 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 695926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} type 696a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.Project>} 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 698926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) projectsForType: function(type) 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 700926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function filterByType(project) 701926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 702926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return project.type() === type; 703926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 704926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.projects().filter(filterByType); 705926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 706926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 707926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 708a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.UISourceCode>} 709926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 710926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCodes: function() 711926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 712926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var result = []; 713926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var projectId in this._projects) { 714926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var project = this._projects[projectId]; 715926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result = result.concat(project.uiSourceCodes()); 716926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 717926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return result; 718926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 719926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 720926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 721926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} url 722926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 723926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 724926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) hasMappingForURL: function(url) 725926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 726521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._fileSystemMapping.hasMappingForURL(url); 727926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 72893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 72993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) /** 73093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) * @param {string} url 731a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.UISourceCode} 73293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) */ 73393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) _networkUISourceCodeForURL: function(url) 73493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 735697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch var splitURL = WebInspector.ParsedURL.splitURLIntoPathComponents(url); 7366f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch var projectId = splitURL[0]; 73793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) var project = this.project(projectId); 738591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return project ? project.uiSourceCode(splitURL.slice(1).join("/")) : null; 73993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) }, 74093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 741926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 742926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} url 743a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.UISourceCode} 744926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 74510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch _contentScriptUISourceCodeForURL: function(url) 74610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { 747697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch var splitURL = WebInspector.ParsedURL.splitURLIntoPathComponents(url); 74810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch var projectId = "contentscripts:" + splitURL[0]; 74910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch var project = this.project(projectId); 75010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return project ? project.uiSourceCode(splitURL.slice(1).join("/")) : null; 75110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch }, 75210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 75310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** 75410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {string} url 75510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @return {?WebInspector.UISourceCode} 75610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 757926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCodeForURL: function(url) 758926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 759521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var file = this._fileSystemMapping.fileForURL(url); 760521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!file) 76110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return this._networkUISourceCodeForURL(url) || this._contentScriptUISourceCodeForURL(url); 762926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 7636f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch var projectId = WebInspector.FileSystemWorkspaceBinding.projectId(file.fileSystemPath); 764926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var project = this.project(projectId); 765591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return project ? project.uiSourceCode(file.filePath) : null; 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 769521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} fileSystemPath 770521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @param {string} filePath 771926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 772926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 773521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) urlForPath: function(fileSystemPath, filePath) 774926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 775521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._fileSystemMapping.urlForPath(fileSystemPath, filePath); 776926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 777926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 778926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 779a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} networkUISourceCode 780a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 7816f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch * @param {!WebInspector.FileSystemWorkspaceBinding} fileSystemWorkspaceBinding 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7836f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch addMapping: function(networkUISourceCode, uiSourceCode, fileSystemWorkspaceBinding) 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 785926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var url = networkUISourceCode.url; 786926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var path = uiSourceCode.path(); 7876f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch var fileSystemPath = fileSystemWorkspaceBinding.fileSystemPath(uiSourceCode.project().id()); 788591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._fileSystemMapping.addMappingForResource(url, fileSystemPath, path); 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 791926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 792a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 793926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 794926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) removeMapping: function(uiSourceCode) 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 796521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._fileSystemMapping.removeMappingForURL(uiSourceCode.url); 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 80009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {boolean} hasExtensions 80109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 80209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setHasResourceContentTrackingExtensions: function(hasExtensions) 80309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 80409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._hasResourceContentTrackingExtensions = hasExtensions; 80509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 80609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 80709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 80809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 80909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 81009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) hasResourceContentTrackingExtensions: function() 81109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 81209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._hasResourceContentTrackingExtensions; 81309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 81409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 815197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 816197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Event} event 817197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 818197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch _revealSourceLine: function(event) 819197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 820197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var url = /** @type {string} */ (event.data["url"]); 821197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var lineNumber = /** @type {number} */ (event.data["lineNumber"]); 822197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var columnNumber = /** @type {number} */ (event.data["columnNumber"]); 823197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 824197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var uiSourceCode = this.uiSourceCodeForURL(url); 825197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (uiSourceCode) { 826197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.Revealer.reveal(uiSourceCode.uiLocation(lineNumber, columnNumber)); 827197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return; 828197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 829197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 830197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 831197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Event} event 832197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @this {WebInspector.Workspace} 833197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 834197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch function listener(event) 835197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 836197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); 837197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (uiSourceCode.url === url) { 838197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.Revealer.reveal(uiSourceCode.uiLocation(lineNumber, columnNumber)); 839197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.removeEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, listener, this); 840197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 841197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 842197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 843197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, listener, this); 844197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 845197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.Object.prototype 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 85009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @type {!WebInspector.Workspace} 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 85209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.workspace; 853