Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/persistence/IsolatedFileSystemManager.js

Issue 2867783003: DevTools: move IsolatedFileSystem/IsolatedFileSystemManager into persistence/ (Closed)
Patch Set: fix order Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 /** 31 /**
32 * @unrestricted 32 * @unrestricted
33 */ 33 */
34 Workspace.IsolatedFileSystemManager = class extends Common.Object { 34 Persistence.IsolatedFileSystemManager = class extends Common.Object {
35 constructor() { 35 constructor() {
36 super(); 36 super();
37 37
38 /** @type {!Map<string, !Workspace.IsolatedFileSystem>} */ 38 /** @type {!Map<string, !Persistence.IsolatedFileSystem>} */
39 this._fileSystems = new Map(); 39 this._fileSystems = new Map();
40 /** @type {!Map<number, function(!Array.<string>)>} */ 40 /** @type {!Map<number, function(!Array.<string>)>} */
41 this._callbacks = new Map(); 41 this._callbacks = new Map();
42 /** @type {!Map<number, !Common.Progress>} */ 42 /** @type {!Map<number, !Common.Progress>} */
43 this._progresses = new Map(); 43 this._progresses = new Map();
44 44
45 InspectorFrontendHost.events.addEventListener( 45 InspectorFrontendHost.events.addEventListener(
46 InspectorFrontendHostAPI.Events.FileSystemRemoved, this._onFileSystemRem oved, this); 46 InspectorFrontendHostAPI.Events.FileSystemRemoved, this._onFileSystemRem oved, this);
47 InspectorFrontendHost.events.addEventListener( 47 InspectorFrontendHost.events.addEventListener(
48 InspectorFrontendHostAPI.Events.FileSystemAdded, this._onFileSystemAdded , this); 48 InspectorFrontendHostAPI.Events.FileSystemAdded, this._onFileSystemAdded , this);
49 InspectorFrontendHost.events.addEventListener( 49 InspectorFrontendHost.events.addEventListener(
50 InspectorFrontendHostAPI.Events.FileSystemFilesChangedAddedRemoved, this ._onFileSystemFilesChanged, this); 50 InspectorFrontendHostAPI.Events.FileSystemFilesChangedAddedRemoved, this ._onFileSystemFilesChanged, this);
51 InspectorFrontendHost.events.addEventListener( 51 InspectorFrontendHost.events.addEventListener(
52 InspectorFrontendHostAPI.Events.IndexingTotalWorkCalculated, this._onInd exingTotalWorkCalculated, this); 52 InspectorFrontendHostAPI.Events.IndexingTotalWorkCalculated, this._onInd exingTotalWorkCalculated, this);
53 InspectorFrontendHost.events.addEventListener( 53 InspectorFrontendHost.events.addEventListener(
54 InspectorFrontendHostAPI.Events.IndexingWorked, this._onIndexingWorked, this); 54 InspectorFrontendHostAPI.Events.IndexingWorked, this._onIndexingWorked, this);
55 InspectorFrontendHost.events.addEventListener( 55 InspectorFrontendHost.events.addEventListener(
56 InspectorFrontendHostAPI.Events.IndexingDone, this._onIndexingDone, this ); 56 InspectorFrontendHostAPI.Events.IndexingDone, this._onIndexingDone, this );
57 InspectorFrontendHost.events.addEventListener( 57 InspectorFrontendHost.events.addEventListener(
58 InspectorFrontendHostAPI.Events.SearchCompleted, this._onSearchCompleted , this); 58 InspectorFrontendHostAPI.Events.SearchCompleted, this._onSearchCompleted , this);
59 59
60 this._initExcludePatterSetting(); 60 this._initExcludePatterSetting();
61 61
62 this._fileSystemsLoadedPromise = this._requestFileSystems(); 62 this._fileSystemsLoadedPromise = this._requestFileSystems();
63 } 63 }
64 64
65 /** 65 /**
66 * @return {!Promise<!Array<!Workspace.IsolatedFileSystem>>} 66 * @return {!Promise<!Array<!Persistence.IsolatedFileSystem>>}
67 */ 67 */
68 _requestFileSystems() { 68 _requestFileSystems() {
69 var fulfill; 69 var fulfill;
70 var promise = new Promise(f => fulfill = f); 70 var promise = new Promise(f => fulfill = f);
71 InspectorFrontendHost.events.addEventListener( 71 InspectorFrontendHost.events.addEventListener(
72 InspectorFrontendHostAPI.Events.FileSystemsLoaded, onFileSystemsLoaded, this); 72 InspectorFrontendHostAPI.Events.FileSystemsLoaded, onFileSystemsLoaded, this);
73 InspectorFrontendHost.requestFileSystems(); 73 InspectorFrontendHost.requestFileSystems();
74 return promise; 74 return promise;
75 75
76 /** 76 /**
77 * @param {!Common.Event} event 77 * @param {!Common.Event} event
78 * @this {Workspace.IsolatedFileSystemManager} 78 * @this {Persistence.IsolatedFileSystemManager}
79 */ 79 */
80 function onFileSystemsLoaded(event) { 80 function onFileSystemsLoaded(event) {
81 var fileSystems = /** @type {!Array.<!Workspace.IsolatedFileSystemManager. FileSystem>} */ (event.data); 81 var fileSystems = /** @type {!Array.<!Persistence.IsolatedFileSystemManage r.FileSystem>} */ (event.data);
82 var promises = []; 82 var promises = [];
83 for (var i = 0; i < fileSystems.length; ++i) 83 for (var i = 0; i < fileSystems.length; ++i)
84 promises.push(this._innerAddFileSystem(fileSystems[i], false)); 84 promises.push(this._innerAddFileSystem(fileSystems[i], false));
85 Promise.all(promises).then(onFileSystemsAdded); 85 Promise.all(promises).then(onFileSystemsAdded);
86 } 86 }
87 87
88 /** 88 /**
89 * @param {!Array<?Workspace.IsolatedFileSystem>} fileSystems 89 * @param {!Array<?Persistence.IsolatedFileSystem>} fileSystems
90 */ 90 */
91 function onFileSystemsAdded(fileSystems) { 91 function onFileSystemsAdded(fileSystems) {
92 fulfill(fileSystems.filter(fs => !!fs)); 92 fulfill(fileSystems.filter(fs => !!fs));
93 } 93 }
94 } 94 }
95 95
96 addFileSystem() { 96 addFileSystem() {
97 InspectorFrontendHost.addFileSystem(''); 97 InspectorFrontendHost.addFileSystem('');
98 } 98 }
99 99
100 /** 100 /**
101 * @param {!Workspace.IsolatedFileSystem} fileSystem 101 * @param {!Persistence.IsolatedFileSystem} fileSystem
102 */ 102 */
103 removeFileSystem(fileSystem) { 103 removeFileSystem(fileSystem) {
104 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath()); 104 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath());
105 } 105 }
106 106
107 /** 107 /**
108 * @return {!Promise<!Array<!Workspace.IsolatedFileSystem>>} 108 * @return {!Promise<!Array<!Persistence.IsolatedFileSystem>>}
109 */ 109 */
110 waitForFileSystems() { 110 waitForFileSystems() {
111 return this._fileSystemsLoadedPromise; 111 return this._fileSystemsLoadedPromise;
112 } 112 }
113 113
114 /** 114 /**
115 * @param {!Workspace.IsolatedFileSystemManager.FileSystem} fileSystem 115 * @param {!Persistence.IsolatedFileSystemManager.FileSystem} fileSystem
116 * @param {boolean} dispatchEvent 116 * @param {boolean} dispatchEvent
117 * @return {!Promise<?Workspace.IsolatedFileSystem>} 117 * @return {!Promise<?Persistence.IsolatedFileSystem>}
118 */ 118 */
119 _innerAddFileSystem(fileSystem, dispatchEvent) { 119 _innerAddFileSystem(fileSystem, dispatchEvent) {
120 var embedderPath = fileSystem.fileSystemPath; 120 var embedderPath = fileSystem.fileSystemPath;
121 var fileSystemURL = Common.ParsedURL.platformPathToURL(fileSystem.fileSystem Path); 121 var fileSystemURL = Common.ParsedURL.platformPathToURL(fileSystem.fileSystem Path);
122 var promise = Workspace.IsolatedFileSystem.create( 122 var promise = Persistence.IsolatedFileSystem.create(
123 this, fileSystemURL, embedderPath, fileSystem.fileSystemName, fileSystem .rootURL); 123 this, fileSystemURL, embedderPath, fileSystem.fileSystemName, fileSystem .rootURL);
124 return promise.then(storeFileSystem.bind(this)); 124 return promise.then(storeFileSystem.bind(this));
125 125
126 /** 126 /**
127 * @param {?Workspace.IsolatedFileSystem} fileSystem 127 * @param {?Persistence.IsolatedFileSystem} fileSystem
128 * @this {Workspace.IsolatedFileSystemManager} 128 * @this {Persistence.IsolatedFileSystemManager}
129 */ 129 */
130 function storeFileSystem(fileSystem) { 130 function storeFileSystem(fileSystem) {
131 if (!fileSystem) 131 if (!fileSystem)
132 return null; 132 return null;
133 this._fileSystems.set(fileSystemURL, fileSystem); 133 this._fileSystems.set(fileSystemURL, fileSystem);
134 if (dispatchEvent) 134 if (dispatchEvent)
135 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events .FileSystemAdded, fileSystem); 135 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Even ts.FileSystemAdded, fileSystem);
136 return fileSystem; 136 return fileSystem;
137 } 137 }
138 } 138 }
139 139
140 /** 140 /**
141 * @param {!Common.Event} event 141 * @param {!Common.Event} event
142 */ 142 */
143 _onFileSystemAdded(event) { 143 _onFileSystemAdded(event) {
144 var errorMessage = /** @type {string} */ (event.data['errorMessage']); 144 var errorMessage = /** @type {string} */ (event.data['errorMessage']);
145 var fileSystem = /** @type {?Workspace.IsolatedFileSystemManager.FileSystem} */ (event.data['fileSystem']); 145 var fileSystem = /** @type {?Persistence.IsolatedFileSystemManager.FileSyste m} */ (event.data['fileSystem']);
146 if (errorMessage) 146 if (errorMessage)
147 Common.console.error(errorMessage); 147 Common.console.error(errorMessage);
148 else if (fileSystem) 148 else if (fileSystem)
149 this._innerAddFileSystem(fileSystem, true); 149 this._innerAddFileSystem(fileSystem, true);
150 } 150 }
151 151
152 /** 152 /**
153 * @param {!Common.Event} event 153 * @param {!Common.Event} event
154 */ 154 */
155 _onFileSystemRemoved(event) { 155 _onFileSystemRemoved(event) {
156 var embedderPath = /** @type {string} */ (event.data); 156 var embedderPath = /** @type {string} */ (event.data);
157 var fileSystemPath = Common.ParsedURL.platformPathToURL(embedderPath); 157 var fileSystemPath = Common.ParsedURL.platformPathToURL(embedderPath);
158 var isolatedFileSystem = this._fileSystems.get(fileSystemPath); 158 var isolatedFileSystem = this._fileSystems.get(fileSystemPath);
159 if (!isolatedFileSystem) 159 if (!isolatedFileSystem)
160 return; 160 return;
161 this._fileSystems.delete(fileSystemPath); 161 this._fileSystems.delete(fileSystemPath);
162 isolatedFileSystem.fileSystemRemoved(); 162 isolatedFileSystem.fileSystemRemoved();
163 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events.Fil eSystemRemoved, isolatedFileSystem); 163 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Events.F ileSystemRemoved, isolatedFileSystem);
164 } 164 }
165 165
166 /** 166 /**
167 * @param {!Common.Event} event 167 * @param {!Common.Event} event
168 */ 168 */
169 _onFileSystemFilesChanged(event) { 169 _onFileSystemFilesChanged(event) {
170 var paths = /** @type {!Workspace.IsolatedFileSystemManager.FilesChangedData } */ (event.data); 170 var paths = /** @type {!Persistence.IsolatedFileSystemManager.FilesChangedDa ta} */ (event.data);
171 var urlPaths = {}; 171 var urlPaths = {};
172 urlPaths.changed = paths.changed.map(embedderPath => Common.ParsedURL.platfo rmPathToURL(embedderPath)); 172 urlPaths.changed = paths.changed.map(embedderPath => Common.ParsedURL.platfo rmPathToURL(embedderPath));
173 urlPaths.added = paths.added.map(embedderPath => Common.ParsedURL.platformPa thToURL(embedderPath)); 173 urlPaths.added = paths.added.map(embedderPath => Common.ParsedURL.platformPa thToURL(embedderPath));
174 urlPaths.removed = paths.removed.map(embedderPath => Common.ParsedURL.platfo rmPathToURL(embedderPath)); 174 urlPaths.removed = paths.removed.map(embedderPath => Common.ParsedURL.platfo rmPathToURL(embedderPath));
175 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events.Fil eSystemFilesChanged, urlPaths); 175 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Events.F ileSystemFilesChanged, urlPaths);
176 } 176 }
177 177
178 /** 178 /**
179 * @return {!Array<!Workspace.IsolatedFileSystem>} 179 * @return {!Array<!Persistence.IsolatedFileSystem>}
180 */ 180 */
181 fileSystems() { 181 fileSystems() {
182 return this._fileSystems.valuesArray(); 182 return this._fileSystems.valuesArray();
183 } 183 }
184 184
185 /** 185 /**
186 * @param {string} fileSystemPath 186 * @param {string} fileSystemPath
187 * @return {?Workspace.IsolatedFileSystem} 187 * @return {?Persistence.IsolatedFileSystem}
188 */ 188 */
189 fileSystem(fileSystemPath) { 189 fileSystem(fileSystemPath) {
190 return this._fileSystems.get(fileSystemPath) || null; 190 return this._fileSystems.get(fileSystemPath) || null;
191 } 191 }
192 192
193 _initExcludePatterSetting() { 193 _initExcludePatterSetting() {
194 var defaultCommonExcludedFolders = [ 194 var defaultCommonExcludedFolders = [
195 '/node_modules/', '/bower_components/', '/\\.devtools', '/\\.git/', '/\\.s ass-cache/', '/\\.hg/', '/\\.idea/', 195 '/node_modules/', '/bower_components/', '/\\.devtools', '/\\.git/', '/\\.s ass-cache/', '/\\.hg/', '/\\.idea/',
196 '/\\.svn/', '/\\.cache/', '/\\.project/' 196 '/\\.svn/', '/\\.cache/', '/\\.project/'
197 ]; 197 ];
(...skipping 20 matching lines...) Expand all
218 */ 218 */
219 workspaceFolderExcludePatternSetting() { 219 workspaceFolderExcludePatternSetting() {
220 return this._workspaceFolderExcludePatternSetting; 220 return this._workspaceFolderExcludePatternSetting;
221 } 221 }
222 222
223 /** 223 /**
224 * @param {function(!Array.<string>)} callback 224 * @param {function(!Array.<string>)} callback
225 * @return {number} 225 * @return {number}
226 */ 226 */
227 registerCallback(callback) { 227 registerCallback(callback) {
228 var requestId = ++Workspace.IsolatedFileSystemManager._lastRequestId; 228 var requestId = ++Persistence.IsolatedFileSystemManager._lastRequestId;
229 this._callbacks.set(requestId, callback); 229 this._callbacks.set(requestId, callback);
230 return requestId; 230 return requestId;
231 } 231 }
232 232
233 /** 233 /**
234 * @param {!Common.Progress} progress 234 * @param {!Common.Progress} progress
235 * @return {number} 235 * @return {number}
236 */ 236 */
237 registerProgress(progress) { 237 registerProgress(progress) {
238 var requestId = ++Workspace.IsolatedFileSystemManager._lastRequestId; 238 var requestId = ++Persistence.IsolatedFileSystemManager._lastRequestId;
239 this._progresses.set(requestId, progress); 239 this._progresses.set(requestId, progress);
240 return requestId; 240 return requestId;
241 } 241 }
242 242
243 /** 243 /**
244 * @param {!Common.Event} event 244 * @param {!Common.Event} event
245 */ 245 */
246 _onIndexingTotalWorkCalculated(event) { 246 _onIndexingTotalWorkCalculated(event) {
247 var requestId = /** @type {number} */ (event.data['requestId']); 247 var requestId = /** @type {number} */ (event.data['requestId']);
248 var totalWork = /** @type {number} */ (event.data['totalWork']); 248 var totalWork = /** @type {number} */ (event.data['totalWork']);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 292
293 var callback = this._callbacks.get(requestId); 293 var callback = this._callbacks.get(requestId);
294 if (!callback) 294 if (!callback)
295 return; 295 return;
296 callback.call(null, files); 296 callback.call(null, files);
297 this._callbacks.delete(requestId); 297 this._callbacks.delete(requestId);
298 } 298 }
299 }; 299 };
300 300
301 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string} } */ 301 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string} } */
302 Workspace.IsolatedFileSystemManager.FileSystem; 302 Persistence.IsolatedFileSystemManager.FileSystem;
303 303
304 /** @typedef {!{changed:!Array<string>, added:!Array<string>, removed:!Array<str ing>}} */ 304 /** @typedef {!{changed:!Array<string>, added:!Array<string>, removed:!Array<str ing>}} */
305 Workspace.IsolatedFileSystemManager.FilesChangedData; 305 Persistence.IsolatedFileSystemManager.FilesChangedData;
306 306
307 /** @enum {symbol} */ 307 /** @enum {symbol} */
308 Workspace.IsolatedFileSystemManager.Events = { 308 Persistence.IsolatedFileSystemManager.Events = {
309 FileSystemAdded: Symbol('FileSystemAdded'), 309 FileSystemAdded: Symbol('FileSystemAdded'),
310 FileSystemRemoved: Symbol('FileSystemRemoved'), 310 FileSystemRemoved: Symbol('FileSystemRemoved'),
311 FileSystemFilesChanged: Symbol('FileSystemFilesChanged'), 311 FileSystemFilesChanged: Symbol('FileSystemFilesChanged'),
312 ExcludedFolderAdded: Symbol('ExcludedFolderAdded'), 312 ExcludedFolderAdded: Symbol('ExcludedFolderAdded'),
313 ExcludedFolderRemoved: Symbol('ExcludedFolderRemoved') 313 ExcludedFolderRemoved: Symbol('ExcludedFolderRemoved')
314 }; 314 };
315 315
316 Workspace.IsolatedFileSystemManager._lastRequestId = 0; 316 Persistence.IsolatedFileSystemManager._lastRequestId = 0;
317 317
318 /** 318 /**
319 * @type {!Workspace.IsolatedFileSystemManager} 319 * @type {!Persistence.IsolatedFileSystemManager}
320 */ 320 */
321 Workspace.isolatedFileSystemManager; 321 Persistence.isolatedFileSystemManager;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698