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

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

Issue 2296983003: DevTools: kill WI.IsolatedFileSystemManager FileSystemsLoaded event (Closed)
Patch Set: remove nested arrow Created 4 years, 3 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
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/main/Main.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 23 matching lines...) Expand all
34 */ 34 */
35 WebInspector.IsolatedFileSystemManager = function() 35 WebInspector.IsolatedFileSystemManager = function()
36 { 36 {
37 /** @type {!Map<string, !WebInspector.IsolatedFileSystem>} */ 37 /** @type {!Map<string, !WebInspector.IsolatedFileSystem>} */
38 this._fileSystems = new Map(); 38 this._fileSystems = new Map();
39 /** @type {!Map<number, function(!Array.<string>)>} */ 39 /** @type {!Map<number, function(!Array.<string>)>} */
40 this._callbacks = new Map(); 40 this._callbacks = new Map();
41 /** @type {!Map<number, !WebInspector.Progress>} */ 41 /** @type {!Map<number, !WebInspector.Progress>} */
42 this._progresses = new Map(); 42 this._progresses = new Map();
43 43
44 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemsLoaded, this._onFileSystemsLoaded, this);
45 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemRemoved, this._onFileSystemRemoved, this); 44 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemRemoved, this._onFileSystemRemoved, this);
46 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemAdded, this._onFileSystemAdded, this); 45 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemAdded, this._onFileSystemAdded, this);
47 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemFilesChanged, this._onFileSystemFilesChanged, this); 46 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.FileSystemFilesChanged, this._onFileSystemFilesChanged, this);
48 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingTotalWorkCalculated, this._onIndexingTotalWorkCalculated, this); 47 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingTotalWorkCalculated, this._onIndexingTotalWorkCalculated, this);
49 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingWorked, this._onIndexingWorked, this); 48 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingWorked, this._onIndexingWorked, this);
50 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingDone, this._onIndexingDone, this); 49 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.IndexingDone, this._onIndexingDone, this);
51 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.SearchCompleted, this._onSearchCompleted, this); 50 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event s.SearchCompleted, this._onSearchCompleted, this);
52 51
53 this._initExcludePatterSetting(); 52 this._initExcludePatterSetting();
53
54 this._fileSystemsLoadedPromise = this._requestFileSystems();
54 } 55 }
55 56
56 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string} } */ 57 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string} } */
57 WebInspector.IsolatedFileSystemManager.FileSystem; 58 WebInspector.IsolatedFileSystemManager.FileSystem;
58 59
59 /** @enum {symbol} */ 60 /** @enum {symbol} */
60 WebInspector.IsolatedFileSystemManager.Events = { 61 WebInspector.IsolatedFileSystemManager.Events = {
61 FileSystemAdded: Symbol("FileSystemAdded"), 62 FileSystemAdded: Symbol("FileSystemAdded"),
62 FileSystemRemoved: Symbol("FileSystemRemoved"), 63 FileSystemRemoved: Symbol("FileSystemRemoved"),
63 FileSystemsLoaded: Symbol("FileSystemsLoaded"),
64 FileSystemFilesChanged: Symbol("FileSystemFilesChanged"), 64 FileSystemFilesChanged: Symbol("FileSystemFilesChanged"),
65 ExcludedFolderAdded: Symbol("ExcludedFolderAdded"), 65 ExcludedFolderAdded: Symbol("ExcludedFolderAdded"),
66 ExcludedFolderRemoved: Symbol("ExcludedFolderRemoved") 66 ExcludedFolderRemoved: Symbol("ExcludedFolderRemoved")
67 } 67 }
68 68
69 WebInspector.IsolatedFileSystemManager._lastRequestId = 0; 69 WebInspector.IsolatedFileSystemManager._lastRequestId = 0;
70 70
71 /** 71 /**
72 * @param {string} fileSystemPath 72 * @param {string} fileSystemPath
73 * @return {string} 73 * @return {string}
74 */ 74 */
75 WebInspector.IsolatedFileSystemManager.normalizePath = function(fileSystemPath) 75 WebInspector.IsolatedFileSystemManager.normalizePath = function(fileSystemPath)
76 { 76 {
77 fileSystemPath = fileSystemPath.replace(/\\/g, "/"); 77 fileSystemPath = fileSystemPath.replace(/\\/g, "/");
78 if (!fileSystemPath.startsWith("file://")) { 78 if (!fileSystemPath.startsWith("file://")) {
79 if (fileSystemPath.startsWith("/")) 79 if (fileSystemPath.startsWith("/"))
80 fileSystemPath = "file://" + fileSystemPath; 80 fileSystemPath = "file://" + fileSystemPath;
81 else 81 else
82 fileSystemPath = "file:///" + fileSystemPath; 82 fileSystemPath = "file:///" + fileSystemPath;
83 } 83 }
84 return fileSystemPath; 84 return fileSystemPath;
85 } 85 }
86 86
87 WebInspector.IsolatedFileSystemManager.prototype = { 87 WebInspector.IsolatedFileSystemManager.prototype = {
88 /** 88 /**
89 * @param {function()} callback 89 * @return {!Promise<!Array<!WebInspector.IsolatedFileSystem>>}
90 */ 90 */
91 initialize: function(callback) 91 _requestFileSystems: function()
92 { 92 {
93 this._initializeCallback = callback; 93 var fulfill;
94 var promise = new Promise(f => fulfill = f);
94 InspectorFrontendHost.requestFileSystems(); 95 InspectorFrontendHost.requestFileSystems();
96 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.E vents.FileSystemsLoaded, onFileSystemsLoaded, this);
97 return promise;
98
99 /**
100 * @param {!WebInspector.Event} event
101 * @this {WebInspector.IsolatedFileSystemManager}
102 */
103 function onFileSystemsLoaded(event)
104 {
105 var fileSystems = /** @type {!Array.<!WebInspector.IsolatedFileSyste mManager.FileSystem>} */ (event.data);
106 var promises = [];
107 for (var i = 0; i < fileSystems.length; ++i)
108 promises.push(this._innerAddFileSystem(fileSystems[i], false));
109 Promise.all(promises).then(onFileSystemsAdded);
110 }
111
112 /**
113 * @param {!Array<?WebInspector.IsolatedFileSystem>} fileSystems
114 */
115 function onFileSystemsAdded(fileSystems)
116 {
117 fulfill(fileSystems.filter(fs => !!fs));
118 }
95 }, 119 },
96 120
97 addFileSystem: function() 121 addFileSystem: function()
98 { 122 {
99 InspectorFrontendHost.addFileSystem(""); 123 InspectorFrontendHost.addFileSystem("");
100 }, 124 },
101 125
102 /** 126 /**
103 * @param {!WebInspector.IsolatedFileSystem} fileSystem 127 * @param {!WebInspector.IsolatedFileSystem} fileSystem
104 */ 128 */
105 removeFileSystem: function(fileSystem) 129 removeFileSystem: function(fileSystem)
106 { 130 {
107
108 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath()); 131 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath());
109 }, 132 },
110 133
111 /** 134 /**
112 * @param {!WebInspector.Event} event 135 * @return {!Promise<!Array<!WebInspector.IsolatedFileSystem>>}
113 */ 136 */
114 _onFileSystemsLoaded: function(event) 137 waitForFileSystems: function()
115 { 138 {
116 var fileSystems = /** @type {!Array.<!WebInspector.IsolatedFileSystemMan ager.FileSystem>} */ (event.data); 139 return this._fileSystemsLoadedPromise;
117 var promises = [];
118 for (var i = 0; i < fileSystems.length; ++i)
119 promises.push(this._innerAddFileSystem(fileSystems[i]));
120 Promise.all(promises).then(fireFileSystemsLoaded.bind(this));
121
122 /**
123 * @this {WebInspector.IsolatedFileSystemManager}
124 */
125 function fireFileSystemsLoaded()
126 {
127 this._initializeCallback();
128 delete this._initializeCallback;
129 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager .Events.FileSystemsLoaded);
130 }
131 },
132
133 /**
134 * @return {boolean}
135 */
136 fileSystemsLoaded: function()
137 {
138 return !this._initializeCallback;
139 }, 140 },
140 141
141 /** 142 /**
142 * @param {!WebInspector.IsolatedFileSystemManager.FileSystem} fileSystem 143 * @param {!WebInspector.IsolatedFileSystemManager.FileSystem} fileSystem
143 * @return {!Promise} 144 * @param {boolean} dispatchEvent
145 * @return {!Promise<?WebInspector.IsolatedFileSystem>}
144 */ 146 */
145 _innerAddFileSystem: function(fileSystem) 147 _innerAddFileSystem: function(fileSystem, dispatchEvent)
146 { 148 {
147 var embedderPath = fileSystem.fileSystemPath; 149 var embedderPath = fileSystem.fileSystemPath;
148 var fileSystemPath = WebInspector.IsolatedFileSystemManager.normalizePat h(fileSystem.fileSystemPath); 150 var fileSystemPath = WebInspector.IsolatedFileSystemManager.normalizePat h(fileSystem.fileSystemPath);
149 var promise = WebInspector.IsolatedFileSystem.create(this, fileSystemPat h, embedderPath, fileSystem.fileSystemName, fileSystem.rootURL); 151 var promise = WebInspector.IsolatedFileSystem.create(this, fileSystemPat h, embedderPath, fileSystem.fileSystemName, fileSystem.rootURL);
150 return promise.then(storeFileSystem.bind(this)); 152 return promise.then(storeFileSystem.bind(this));
151 153
152 /** 154 /**
153 * @param {?WebInspector.IsolatedFileSystem} fileSystem 155 * @param {?WebInspector.IsolatedFileSystem} fileSystem
154 * @this {WebInspector.IsolatedFileSystemManager} 156 * @this {WebInspector.IsolatedFileSystemManager}
155 */ 157 */
156 function storeFileSystem(fileSystem) 158 function storeFileSystem(fileSystem)
157 { 159 {
158 if (!fileSystem) 160 if (!fileSystem)
159 return; 161 return null;
160 this._fileSystems.set(fileSystemPath, fileSystem); 162 this._fileSystems.set(fileSystemPath, fileSystem);
161 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager .Events.FileSystemAdded, fileSystem); 163 if (dispatchEvent)
164 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemMan ager.Events.FileSystemAdded, fileSystem);
165 return fileSystem;
162 } 166 }
163 }, 167 },
164 168
165 /** 169 /**
166 * @param {!WebInspector.Event} event 170 * @param {!WebInspector.Event} event
167 */ 171 */
168 _onFileSystemAdded: function(event) 172 _onFileSystemAdded: function(event)
169 { 173 {
170 var errorMessage = /** @type {string} */ (event.data["errorMessage"]); 174 var errorMessage = /** @type {string} */ (event.data["errorMessage"]);
171 var fileSystem = /** @type {?WebInspector.IsolatedFileSystemManager.File System} */ (event.data["fileSystem"]); 175 var fileSystem = /** @type {?WebInspector.IsolatedFileSystemManager.File System} */ (event.data["fileSystem"]);
172 if (errorMessage) 176 if (errorMessage)
173 WebInspector.console.error(errorMessage); 177 WebInspector.console.error(errorMessage);
174 else if (fileSystem) 178 else if (fileSystem)
175 this._innerAddFileSystem(fileSystem); 179 this._innerAddFileSystem(fileSystem, true);
176 }, 180 },
177 181
178 /** 182 /**
179 * @param {!WebInspector.Event} event 183 * @param {!WebInspector.Event} event
180 */ 184 */
181 _onFileSystemRemoved: function(event) 185 _onFileSystemRemoved: function(event)
182 { 186 {
183 this._fileSystemRemoved(/** @type {string} */ (event.data)); 187 var embedderPath = /** @type {string} */ (event.data);
188 var fileSystemPath = WebInspector.IsolatedFileSystemManager.normalizePat h(embedderPath);
189 var isolatedFileSystem = this._fileSystems.get(fileSystemPath);
190 if (!isolatedFileSystem)
191 return;
192 this._fileSystems.delete(fileSystemPath);
193 isolatedFileSystem.fileSystemRemoved();
194 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager.Eve nts.FileSystemRemoved, isolatedFileSystem);
184 }, 195 },
185 196
186 /** 197 /**
187 * @param {!WebInspector.Event} event 198 * @param {!WebInspector.Event} event
188 */ 199 */
189 _onFileSystemFilesChanged: function(event) 200 _onFileSystemFilesChanged: function(event)
190 { 201 {
191 var embedderPaths = /** @type {!Array<string>} */ (event.data); 202 var embedderPaths = /** @type {!Array<string>} */ (event.data);
192 var paths = embedderPaths.map(embedderPath => WebInspector.IsolatedFileS ystemManager.normalizePath(embedderPath)); 203 var paths = embedderPaths.map(embedderPath => WebInspector.IsolatedFileS ystemManager.normalizePath(embedderPath));
193 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager.Eve nts.FileSystemFilesChanged, paths); 204 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager.Eve nts.FileSystemFilesChanged, paths);
194 }, 205 },
195 206
196 /** 207 /**
197 * @param {string} embedderPath
198 */
199 _fileSystemRemoved: function(embedderPath)
200 {
201 var fileSystemPath = WebInspector.IsolatedFileSystemManager.normalizePat h(embedderPath);
202 var isolatedFileSystem = this._fileSystems.get(fileSystemPath);
203 if (!isolatedFileSystem)
204 return;
205 this._fileSystems.delete(fileSystemPath);
206 isolatedFileSystem.fileSystemRemoved();
207 this.dispatchEventToListeners(WebInspector.IsolatedFileSystemManager.Eve nts.FileSystemRemoved, isolatedFileSystem);
208 },
209
210 /**
211 * @return {!Array<!WebInspector.IsolatedFileSystem>} 208 * @return {!Array<!WebInspector.IsolatedFileSystem>}
212 */ 209 */
213 fileSystems: function() 210 fileSystems: function()
214 { 211 {
215 return this._fileSystems.valuesArray(); 212 return this._fileSystems.valuesArray();
216 }, 213 },
217 214
218 /** 215 /**
219 * @param {string} fileSystemPath 216 * @param {string} fileSystemPath
220 * @return {?WebInspector.IsolatedFileSystem} 217 * @return {?WebInspector.IsolatedFileSystem}
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 this._callbacks.delete(requestId); 353 this._callbacks.delete(requestId);
357 }, 354 },
358 355
359 __proto__: WebInspector.Object.prototype 356 __proto__: WebInspector.Object.prototype
360 } 357 }
361 358
362 /** 359 /**
363 * @type {!WebInspector.IsolatedFileSystemManager} 360 * @type {!WebInspector.IsolatedFileSystemManager}
364 */ 361 */
365 WebInspector.isolatedFileSystemManager; 362 WebInspector.isolatedFileSystemManager;
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/main/Main.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698