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

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

Issue 2868543002: DevTools: move FileSystemMapping under persistence/ module (Closed)
Patch Set: fix copyright 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 * @implements {UI.ListWidget.Delegate} 31 * @implements {UI.ListWidget.Delegate}
32 * @unrestricted 32 * @unrestricted
33 */ 33 */
34 Settings.EditFileSystemView = class extends UI.VBox { 34 Persistence.EditFileSystemView = class extends UI.VBox {
35 /** 35 /**
36 * @param {string} fileSystemPath 36 * @param {string} fileSystemPath
37 */ 37 */
38 constructor(fileSystemPath) { 38 constructor(fileSystemPath) {
39 super(true); 39 super(true);
40 this.registerRequiredCSS('settings/editFileSystemView.css'); 40 this.registerRequiredCSS('persistence/editFileSystemView.css');
41 this._fileSystemPath = fileSystemPath; 41 this._fileSystemPath = fileSystemPath;
42 42
43 this._eventListeners = [ 43 this._eventListeners = [
44 Workspace.fileSystemMapping.addEventListener( 44 Persistence.fileSystemMapping.addEventListener(
45 Workspace.FileSystemMapping.Events.FileMappingAdded, this._update, thi s), 45 Persistence.FileSystemMapping.Events.FileMappingAdded, this._update, t his),
46 Workspace.fileSystemMapping.addEventListener( 46 Persistence.fileSystemMapping.addEventListener(
47 Workspace.FileSystemMapping.Events.FileMappingRemoved, this._update, t his), 47 Persistence.FileSystemMapping.Events.FileMappingRemoved, this._update, this),
48 Workspace.isolatedFileSystemManager.addEventListener( 48 Workspace.isolatedFileSystemManager.addEventListener(
49 Workspace.IsolatedFileSystemManager.Events.ExcludedFolderAdded, this._ update, this), 49 Workspace.IsolatedFileSystemManager.Events.ExcludedFolderAdded, this._ update, this),
50 Workspace.isolatedFileSystemManager.addEventListener( 50 Workspace.isolatedFileSystemManager.addEventListener(
51 Workspace.IsolatedFileSystemManager.Events.ExcludedFolderRemoved, this ._update, this) 51 Workspace.IsolatedFileSystemManager.Events.ExcludedFolderRemoved, this ._update, this)
52 ]; 52 ];
53 53
54 54
55 if (!Runtime.experiments.isEnabled('persistence2')) { 55 if (!Runtime.experiments.isEnabled('persistence2')) {
56 this._mappingsList = new UI.ListWidget(this); 56 this._mappingsList = new UI.ListWidget(this);
57 this._mappingsList.element.classList.add('file-system-list'); 57 this._mappingsList.element.classList.add('file-system-list');
58 this._mappingsList.registerRequiredCSS('settings/editFileSystemView.css'); 58 this._mappingsList.registerRequiredCSS('persistence/editFileSystemView.css ');
59 var mappingsPlaceholder = createElementWithClass('div', 'file-system-list- empty'); 59 var mappingsPlaceholder = createElementWithClass('div', 'file-system-list- empty');
60 var mappingsHeader = this.contentElement.createChild('div', 'file-system-h eader'); 60 var mappingsHeader = this.contentElement.createChild('div', 'file-system-h eader');
61 mappingsHeader.createChild('div', 'file-system-header-text').textContent = Common.UIString('Mappings'); 61 mappingsHeader.createChild('div', 'file-system-header-text').textContent = Common.UIString('Mappings');
62 mappingsPlaceholder.textContent = Common.UIString('None'); 62 mappingsPlaceholder.textContent = Common.UIString('None');
63 mappingsHeader.appendChild( 63 mappingsHeader.appendChild(
64 UI.createTextButton(Common.UIString('Add'), this._addMappingButtonClic ked.bind(this), 'add-button')); 64 UI.createTextButton(Common.UIString('Add'), this._addMappingButtonClic ked.bind(this), 'add-button'));
65 this._mappingsList.setEmptyPlaceholder(mappingsPlaceholder); 65 this._mappingsList.setEmptyPlaceholder(mappingsPlaceholder);
66 this._mappingsList.show(this.contentElement); 66 this._mappingsList.show(this.contentElement);
67 } 67 }
68 68
69 var excludedFoldersHeader = this.contentElement.createChild('div', 'file-sys tem-header'); 69 var excludedFoldersHeader = this.contentElement.createChild('div', 'file-sys tem-header');
70 excludedFoldersHeader.createChild('div', 'file-system-header-text').textCont ent = 70 excludedFoldersHeader.createChild('div', 'file-system-header-text').textCont ent =
71 Common.UIString('Excluded folders'); 71 Common.UIString('Excluded folders');
72 excludedFoldersHeader.appendChild( 72 excludedFoldersHeader.appendChild(
73 UI.createTextButton(Common.UIString('Add'), this._addExcludedFolderButto nClicked.bind(this), 'add-button')); 73 UI.createTextButton(Common.UIString('Add'), this._addExcludedFolderButto nClicked.bind(this), 'add-button'));
74 this._excludedFoldersList = new UI.ListWidget(this); 74 this._excludedFoldersList = new UI.ListWidget(this);
75 this._excludedFoldersList.element.classList.add('file-system-list'); 75 this._excludedFoldersList.element.classList.add('file-system-list');
76 this._excludedFoldersList.registerRequiredCSS('settings/editFileSystemView.c ss'); 76 this._excludedFoldersList.registerRequiredCSS('persistence/editFileSystemVie w.css');
77 var excludedFoldersPlaceholder = createElementWithClass('div', 'file-system- list-empty'); 77 var excludedFoldersPlaceholder = createElementWithClass('div', 'file-system- list-empty');
78 excludedFoldersPlaceholder.textContent = Common.UIString('None'); 78 excludedFoldersPlaceholder.textContent = Common.UIString('None');
79 this._excludedFoldersList.setEmptyPlaceholder(excludedFoldersPlaceholder); 79 this._excludedFoldersList.setEmptyPlaceholder(excludedFoldersPlaceholder);
80 this._excludedFoldersList.show(this.contentElement); 80 this._excludedFoldersList.show(this.contentElement);
81 81
82 this.contentElement.tabIndex = 0; 82 this.contentElement.tabIndex = 0;
83 this._update(); 83 this._update();
84 } 84 }
85 85
86 dispose() { 86 dispose() {
(...skipping 12 matching lines...) Expand all
99 .excludedFolders() 99 .excludedFolders()
100 .values()) { 100 .values()) {
101 this._excludedFolders.push(folder); 101 this._excludedFolders.push(folder);
102 this._excludedFoldersList.appendItem(folder, true); 102 this._excludedFoldersList.appendItem(folder, true);
103 } 103 }
104 104
105 if (Runtime.experiments.isEnabled('persistence2')) 105 if (Runtime.experiments.isEnabled('persistence2'))
106 return; 106 return;
107 107
108 this._mappingsList.clear(); 108 this._mappingsList.clear();
109 var mappings = Workspace.fileSystemMapping.mappingEntries(this._fileSystemPa th); 109 var mappings = Persistence.fileSystemMapping.mappingEntries(this._fileSystem Path);
110 for (var entry of mappings) { 110 for (var entry of mappings) {
111 this._mappingsList.appendItem(entry, true); 111 this._mappingsList.appendItem(entry, true);
112 this._mappings.push(entry); 112 this._mappings.push(entry);
113 } 113 }
114 } 114 }
115 115
116 _addMappingButtonClicked() { 116 _addMappingButtonClicked() {
117 var entry = new Workspace.FileSystemMapping.Entry(this._fileSystemPath, '', ''); 117 var entry = new Persistence.FileSystemMapping.Entry(this._fileSystemPath, '' , '');
118 this._mappingsList.addNewItem(0, entry); 118 this._mappingsList.addNewItem(0, entry);
119 } 119 }
120 120
121 _addExcludedFolderButtonClicked() { 121 _addExcludedFolderButtonClicked() {
122 this._excludedFoldersList.addNewItem(0, ''); 122 this._excludedFoldersList.addNewItem(0, '');
123 } 123 }
124 124
125 /** 125 /**
126 * @override 126 * @override
127 * @param {*} item 127 * @param {*} item
128 * @param {boolean} editable 128 * @param {boolean} editable
129 * @return {!Element} 129 * @return {!Element}
130 */ 130 */
131 renderItem(item, editable) { 131 renderItem(item, editable) {
132 var element = createElementWithClass('div', 'file-system-list-item'); 132 var element = createElementWithClass('div', 'file-system-list-item');
133 if (item instanceof Workspace.FileSystemMapping.Entry) { 133 if (item instanceof Persistence.FileSystemMapping.Entry) {
134 var entry = /** @type {!Workspace.FileSystemMapping.Entry} */ (item); 134 var entry = /** @type {!Persistence.FileSystemMapping.Entry} */ (item);
135 var urlPrefixElement = element.createChild('div', 'file-system-value'); 135 var urlPrefixElement = element.createChild('div', 'file-system-value');
136 urlPrefixElement.textContent = entry.urlPrefix; 136 urlPrefixElement.textContent = entry.urlPrefix;
137 urlPrefixElement.title = entry.urlPrefix; 137 urlPrefixElement.title = entry.urlPrefix;
138 element.createChild('div', 'file-system-separator'); 138 element.createChild('div', 'file-system-separator');
139 var pathPrefixElement = element.createChild('div', 'file-system-value'); 139 var pathPrefixElement = element.createChild('div', 'file-system-value');
140 pathPrefixElement.textContent = entry.pathPrefix; 140 pathPrefixElement.textContent = entry.pathPrefix;
141 pathPrefixElement.title = entry.pathPrefix; 141 pathPrefixElement.title = entry.pathPrefix;
142 } else { 142 } else {
143 var pathPrefix = /** @type {string} */ (editable ? item : Common.UIString( '%s (via .devtools)', item)); 143 var pathPrefix = /** @type {string} */ (editable ? item : Common.UIString( '%s (via .devtools)', item));
144 var pathPrefixElement = element.createChild('div', 'file-system-value'); 144 var pathPrefixElement = element.createChild('div', 'file-system-value');
145 pathPrefixElement.textContent = pathPrefix; 145 pathPrefixElement.textContent = pathPrefix;
146 pathPrefixElement.title = pathPrefix; 146 pathPrefixElement.title = pathPrefix;
147 } 147 }
148 return element; 148 return element;
149 } 149 }
150 150
151 /** 151 /**
152 * @override 152 * @override
153 * @param {*} item 153 * @param {*} item
154 * @param {number} index 154 * @param {number} index
155 */ 155 */
156 removeItemRequested(item, index) { 156 removeItemRequested(item, index) {
157 if (item instanceof Workspace.FileSystemMapping.Entry) { 157 if (item instanceof Persistence.FileSystemMapping.Entry) {
158 var entry = this._mappings[index]; 158 var entry = this._mappings[index];
159 Workspace.fileSystemMapping.removeFileMapping(entry.fileSystemPath, entry. urlPrefix, entry.pathPrefix); 159 Persistence.fileSystemMapping.removeFileMapping(entry.fileSystemPath, entr y.urlPrefix, entry.pathPrefix);
160 } else { 160 } else {
161 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath) 161 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath)
162 .removeExcludedFolder(this._excludedFolders[index]); 162 .removeExcludedFolder(this._excludedFolders[index]);
163 } 163 }
164 } 164 }
165 165
166 /** 166 /**
167 * @override 167 * @override
168 * @param {*} item 168 * @param {*} item
169 * @param {!UI.ListWidget.Editor} editor 169 * @param {!UI.ListWidget.Editor} editor
170 * @param {boolean} isNew 170 * @param {boolean} isNew
171 */ 171 */
172 commitEdit(item, editor, isNew) { 172 commitEdit(item, editor, isNew) {
173 this._muteUpdate = true; 173 this._muteUpdate = true;
174 if (item instanceof Workspace.FileSystemMapping.Entry) { 174 if (item instanceof Persistence.FileSystemMapping.Entry) {
175 var entry = /** @type {!Workspace.FileSystemMapping.Entry} */ (item); 175 var entry = /** @type {!Persistence.FileSystemMapping.Entry} */ (item);
176 if (!isNew) 176 if (!isNew)
177 Workspace.fileSystemMapping.removeFileMapping(this._fileSystemPath, entr y.urlPrefix, entry.pathPrefix); 177 Persistence.fileSystemMapping.removeFileMapping(this._fileSystemPath, en try.urlPrefix, entry.pathPrefix);
178 Workspace.fileSystemMapping.addFileMapping( 178 Persistence.fileSystemMapping.addFileMapping(
179 this._fileSystemPath, this._normalizePrefix(editor.control('urlPrefix' ).value), 179 this._fileSystemPath, this._normalizePrefix(editor.control('urlPrefix' ).value),
180 this._normalizePrefix(editor.control('pathPrefix').value)); 180 this._normalizePrefix(editor.control('pathPrefix').value));
181 } else { 181 } else {
182 if (!isNew) { 182 if (!isNew) {
183 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath) 183 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath)
184 .removeExcludedFolder(/** @type {string} */ (item)); 184 .removeExcludedFolder(/** @type {string} */ (item));
185 } 185 }
186 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath) 186 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath)
187 .addExcludedFolder(this._normalizePrefix(editor.control('pathPrefix'). value)); 187 .addExcludedFolder(this._normalizePrefix(editor.control('pathPrefix'). value));
188 } 188 }
189 this._muteUpdate = false; 189 this._muteUpdate = false;
190 this._update(); 190 this._update();
191 } 191 }
192 192
193 /** 193 /**
194 * @override 194 * @override
195 * @param {*} item 195 * @param {*} item
196 * @return {!UI.ListWidget.Editor} 196 * @return {!UI.ListWidget.Editor}
197 */ 197 */
198 beginEdit(item) { 198 beginEdit(item) {
199 if (item instanceof Workspace.FileSystemMapping.Entry) { 199 if (item instanceof Persistence.FileSystemMapping.Entry) {
200 var entry = /** @type {!Workspace.FileSystemMapping.Entry} */ (item); 200 var entry = /** @type {!Persistence.FileSystemMapping.Entry} */ (item);
201 var editor = this._createMappingEditor(); 201 var editor = this._createMappingEditor();
202 editor.control('urlPrefix').value = entry.urlPrefix; 202 editor.control('urlPrefix').value = entry.urlPrefix;
203 editor.control('pathPrefix').value = entry.pathPrefix; 203 editor.control('pathPrefix').value = entry.pathPrefix;
204 return editor; 204 return editor;
205 } else { 205 } else {
206 var editor = this._createExcludedFolderEditor(); 206 var editor = this._createExcludedFolderEditor();
207 editor.control('pathPrefix').value = item; 207 editor.control('pathPrefix').value = item;
208 return editor; 208 return editor;
209 } 209 }
210 } 210 }
(...skipping 22 matching lines...) Expand all
233 fields.createChild('div', 'file-system-value') 233 fields.createChild('div', 'file-system-value')
234 .appendChild(editor.createInput('pathPrefix', 'text', '/path/to/folder/' , pathPrefixValidator.bind(this))); 234 .appendChild(editor.createInput('pathPrefix', 'text', '/path/to/folder/' , pathPrefixValidator.bind(this)));
235 235
236 return editor; 236 return editor;
237 237
238 /** 238 /**
239 * @param {*} item 239 * @param {*} item
240 * @param {number} index 240 * @param {number} index
241 * @param {!HTMLInputElement|!HTMLSelectElement} input 241 * @param {!HTMLInputElement|!HTMLSelectElement} input
242 * @return {boolean} 242 * @return {boolean}
243 * @this {Settings.EditFileSystemView} 243 * @this {Persistence.EditFileSystemView}
244 */ 244 */
245 function urlPrefixValidator(item, index, input) { 245 function urlPrefixValidator(item, index, input) {
246 var prefix = this._normalizePrefix(input.value); 246 var prefix = this._normalizePrefix(input.value);
247 for (var i = 0; i < this._mappings.length; ++i) { 247 for (var i = 0; i < this._mappings.length; ++i) {
248 if (i !== index && this._mappings[i].urlPrefix === prefix) 248 if (i !== index && this._mappings[i].urlPrefix === prefix)
249 return false; 249 return false;
250 } 250 }
251 return !!prefix; 251 return !!prefix;
252 } 252 }
253 253
254 /** 254 /**
255 * @param {*} item 255 * @param {*} item
256 * @param {number} index 256 * @param {number} index
257 * @param {!HTMLInputElement|!HTMLSelectElement} input 257 * @param {!HTMLInputElement|!HTMLSelectElement} input
258 * @return {boolean} 258 * @return {boolean}
259 * @this {Settings.EditFileSystemView} 259 * @this {Persistence.EditFileSystemView}
260 */ 260 */
261 function pathPrefixValidator(item, index, input) { 261 function pathPrefixValidator(item, index, input) {
262 var prefix = this._normalizePrefix(input.value); 262 var prefix = this._normalizePrefix(input.value);
263 for (var i = 0; i < this._mappings.length; ++i) { 263 for (var i = 0; i < this._mappings.length; ++i) {
264 if (i !== index && this._mappings[i].pathPrefix === prefix) 264 if (i !== index && this._mappings[i].pathPrefix === prefix)
265 return false; 265 return false;
266 } 266 }
267 return !!prefix; 267 return !!prefix;
268 } 268 }
269 } 269 }
(...skipping 16 matching lines...) Expand all
286 fields.createChild('div', 'file-system-value') 286 fields.createChild('div', 'file-system-value')
287 .appendChild(editor.createInput('pathPrefix', 'text', '/path/to/folder/' , pathPrefixValidator.bind(this))); 287 .appendChild(editor.createInput('pathPrefix', 'text', '/path/to/folder/' , pathPrefixValidator.bind(this)));
288 288
289 return editor; 289 return editor;
290 290
291 /** 291 /**
292 * @param {*} item 292 * @param {*} item
293 * @param {number} index 293 * @param {number} index
294 * @param {!HTMLInputElement|!HTMLSelectElement} input 294 * @param {!HTMLInputElement|!HTMLSelectElement} input
295 * @return {boolean} 295 * @return {boolean}
296 * @this {Settings.EditFileSystemView} 296 * @this {Persistence.EditFileSystemView}
297 */ 297 */
298 function pathPrefixValidator(item, index, input) { 298 function pathPrefixValidator(item, index, input) {
299 var prefix = this._normalizePrefix(input.value); 299 var prefix = this._normalizePrefix(input.value);
300 var configurableCount = 300 var configurableCount =
301 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath).e xcludedFolders().size; 301 Workspace.isolatedFileSystemManager.fileSystem(this._fileSystemPath).e xcludedFolders().size;
302 for (var i = 0; i < configurableCount; ++i) { 302 for (var i = 0; i < configurableCount; ++i) {
303 if (i !== index && this._excludedFolders[i] === prefix) 303 if (i !== index && this._excludedFolders[i] === prefix)
304 return false; 304 return false;
305 } 305 }
306 return !!prefix; 306 return !!prefix;
307 } 307 }
308 } 308 }
309 309
310 /** 310 /**
311 * @param {string} prefix 311 * @param {string} prefix
312 * @return {string} 312 * @return {string}
313 */ 313 */
314 _normalizePrefix(prefix) { 314 _normalizePrefix(prefix) {
315 if (!prefix) 315 if (!prefix)
316 return ''; 316 return '';
317 return prefix + (prefix[prefix.length - 1] === '/' ? '' : '/'); 317 return prefix + (prefix[prefix.length - 1] === '/' ? '' : '/');
318 } 318 }
319 }; 319 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698