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