OLD | NEW |
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 17 matching lines...) Expand all Loading... |
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 * @constructor | 32 * @constructor |
33 */ | 33 */ |
34 WebInspector.WorkspaceController = function(workspace) | 34 WebInspector.WorkspaceController = function(workspace) |
35 { | 35 { |
36 this._workspace = workspace; | 36 this._workspace = workspace; |
37 window.addEventListener("focus", this._windowFocused.bind(this), false); | 37 window.addEventListener("focus", this._windowFocused.bind(this), false); |
| 38 this._fileSystemRefreshThrottler = new WebInspector.Throttler(1000); |
38 } | 39 } |
39 | 40 |
40 WebInspector.WorkspaceController.prototype = { | 41 WebInspector.WorkspaceController.prototype = { |
41 /** | 42 /** |
42 * @param {?Event} event | 43 * @param {?Event} event |
43 */ | 44 */ |
44 _windowFocused: function(event) | 45 _windowFocused: function(event) |
45 { | 46 { |
46 if (this._fileSystemRefreshTimeout) | 47 this._fileSystemRefreshThrottler.schedule(refreshFileSystems.bind(this))
; |
47 return; | |
48 this._fileSystemRefreshTimeout = setTimeout(refreshFileSystems.bind(this
), 1000); | |
49 | 48 |
50 /** | 49 /** |
51 * @this {WebInspector.WorkspaceController} | 50 * @this {WebInspector.WorkspaceController} |
| 51 * @param {!WebInspector.Throttler.FinishCallback} callback |
52 */ | 52 */ |
53 function refreshFileSystems() | 53 function refreshFileSystems(callback) |
54 { | 54 { |
55 delete this._fileSystemRefreshTimeout; | 55 var barrier = new CallbackBarrier(); |
56 var projects = this._workspace.projects(); | 56 var projects = this._workspace.projects(); |
57 for (var i = 0; i < projects.length; ++i) | 57 for (var i = 0; i < projects.length; ++i) |
58 projects[i].refresh("/"); | 58 projects[i].refresh("/", barrier.createCallback()); |
| 59 barrier.callWhenDone(callback); |
59 } | 60 } |
60 } | 61 } |
61 } | 62 } |
OLD | NEW |