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

Side by Side Diff: Source/devtools/front_end/sdk/IsolatedFileSystem.js

Issue 353743008: DevTools: Throttle file system refreshes on focus. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 /** 102 /**
103 * @param {function(?DOMFileSystem)} callback 103 * @param {function(?DOMFileSystem)} callback
104 */ 104 */
105 _requestFileSystem: function(callback) 105 _requestFileSystem: function(callback)
106 { 106 {
107 this._manager.requestDOMFileSystem(this._path, callback); 107 this._manager.requestDOMFileSystem(this._path, callback);
108 }, 108 },
109 109
110 /** 110 /**
111 * @param {string} path 111 * @param {string} path
112 * @param {function(string)} callback 112 * @param {function(string)} fileCallback
113 * @param {function()=} finishedCallback
113 */ 114 */
114 requestFilesRecursive: function(path, callback) 115 requestFilesRecursive: function(path, fileCallback, finishedCallback)
115 { 116 {
116 this._requestFileSystem(fileSystemLoaded.bind(this)); 117 this._requestFileSystem(fileSystemLoaded.bind(this));
117 118
118 var domFileSystem; 119 var domFileSystem;
120 var pendingRequests = 0;
119 /** 121 /**
120 * @param {?DOMFileSystem} fs 122 * @param {?DOMFileSystem} fs
121 * @this {WebInspector.IsolatedFileSystem} 123 * @this {WebInspector.IsolatedFileSystem}
122 */ 124 */
123 function fileSystemLoaded(fs) 125 function fileSystemLoaded(fs)
124 { 126 {
125 domFileSystem = /** @type {!DOMFileSystem} */ (fs); 127 domFileSystem = /** @type {!DOMFileSystem} */ (fs);
126 console.assert(domFileSystem); 128 console.assert(domFileSystem);
129 ++pendingRequests;
127 this._requestEntries(domFileSystem, path, innerCallback.bind(this)); 130 this._requestEntries(domFileSystem, path, innerCallback.bind(this));
128 } 131 }
129 132
130 /** 133 /**
131 * @param {!Array.<!FileEntry>} entries 134 * @param {!Array.<!FileEntry>} entries
132 * @this {WebInspector.IsolatedFileSystem} 135 * @this {WebInspector.IsolatedFileSystem}
133 */ 136 */
134 function innerCallback(entries) 137 function innerCallback(entries)
135 { 138 {
136 for (var i = 0; i < entries.length; ++i) { 139 for (var i = 0; i < entries.length; ++i) {
137 var entry = entries[i]; 140 var entry = entries[i];
138 if (!entry.isDirectory) { 141 if (!entry.isDirectory) {
139 if (this._manager.mapping().isFileExcluded(this._path, entry .fullPath)) 142 if (this._manager.mapping().isFileExcluded(this._path, entry .fullPath))
140 continue; 143 continue;
141 callback(entry.fullPath.substr(1)); 144 fileCallback(entry.fullPath.substr(1));
142 } 145 }
143 else { 146 else {
144 if (this._manager.mapping().isFileExcluded(this._path, entry .fullPath + "/")) 147 if (this._manager.mapping().isFileExcluded(this._path, entry .fullPath + "/"))
145 continue; 148 continue;
149 ++pendingRequests;
146 this._requestEntries(domFileSystem, entry.fullPath, innerCal lback.bind(this)); 150 this._requestEntries(domFileSystem, entry.fullPath, innerCal lback.bind(this));
147 } 151 }
148 } 152 }
153 if (finishedCallback && (--pendingRequests === 0))
154 finishedCallback();
149 } 155 }
150 }, 156 },
151 157
152 /** 158 /**
153 * @param {string} path 159 * @param {string} path
154 * @param {?string} name 160 * @param {?string} name
155 * @param {function(?string)} callback 161 * @param {function(?string)} callback
156 */ 162 */
157 createFile: function(path, name, callback) 163 createFile: function(path, name, callback)
158 { 164 {
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 } 581 }
576 582
577 function errorHandler(error) 583 function errorHandler(error)
578 { 584 {
579 var errorMessage = WebInspector.IsolatedFileSystem.errorMessage(erro r); 585 var errorMessage = WebInspector.IsolatedFileSystem.errorMessage(erro r);
580 console.error(errorMessage + " when requesting entry '" + path + "'" ); 586 console.error(errorMessage + " when requesting entry '" + path + "'" );
581 callback([]); 587 callback([]);
582 } 588 }
583 } 589 }
584 } 590 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/sdk/FileSystemWorkspaceBinding.js ('k') | Source/devtools/front_end/sdk/Workspace.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698