Chromium Code Reviews| Index: Source/devtools/front_end/TempFile.js |
| diff --git a/Source/devtools/front_end/TempFile.js b/Source/devtools/front_end/TempFile.js |
| index d0dcbd0742dc34776136b6e5504acebcff0c47e2..3dc293be86ae4d72cc8645ecd65a3a3d9cc6cb2a 100644 |
| --- a/Source/devtools/front_end/TempFile.js |
| +++ b/Source/devtools/front_end/TempFile.js |
| @@ -107,8 +107,16 @@ WebInspector.TempFile = function(dirPath, name, callback) |
| WebInspector.ConsoleMessage.MessageLevel.Error); |
| callback(null); |
| } |
| + |
| var boundErrorHandler = errorHandler.bind(this) |
| - window.requestFileSystem(window.TEMPORARY, 10, didInitFs.bind(this), errorHandler.bind(this)); |
| + /** |
| + * @this {WebInspector.TempFile} |
| + */ |
| + function didClearTempStorage() |
| + { |
| + window.requestFileSystem(window.TEMPORARY, 10, didInitFs.bind(this), boundErrorHandler); |
| + } |
| + WebInspector.TempFile._ensureTempStorageCleared(didClearTempStorage.bind(this)); |
| } |
| WebInspector.TempFile.prototype = { |
| @@ -185,6 +193,13 @@ WebInspector.TempFile.prototype = { |
| callback(null); |
| } |
| this._fileEntry.file(callback, didFailToGetFile.bind(this)); |
| + }, |
| + |
| + remove: function() |
| + { |
| + function didRemove() {} |
| + if (this._fileEntry) |
| + this._fileEntry.remove(didRemove, didRemove); |
|
pfeldman
2014/01/14 16:26:28
function() {}, function() {}
yurys
2014/01/15 08:30:11
Done.
|
| } |
| } |
| @@ -279,3 +294,58 @@ WebInspector.BufferedTempFileWriter.prototype = { |
| this._finishCallback(this._tempFile); |
| } |
| } |
| + |
| +/** |
| + * @constructor |
| + */ |
| +WebInspector.TempStorageCleaner = function() |
| +{ |
| + this._worker = new SharedWorker("TempStorageSharedWorker.js", "TempStorage"); |
| + this._callbacks = []; |
| + this._worker.port.onmessage = this._handleMessage.bind(this); |
| + this._worker.port.onerror = this._handleError.bind(this); |
| +} |
| + |
| +WebInspector.TempStorageCleaner.prototype = { |
| + /** |
| + * @param {!function()} callback |
| + */ |
| + ensureStorageCleared: function(callback) |
| + { |
| + if (this._callbacks) |
| + this._callbacks.push(callback); |
| + else |
| + callback(); |
| + }, |
| + |
| + _handleMessage: function(event) |
| + { |
| + if (event.data.type === "tempStorageCleared") |
| + this._notifyCallbacks(); |
| + }, |
| + |
| + _handleError: function(event) |
| + { |
| + WebInspector.log("Failed to clear temp storage: " + event.data, |
|
pfeldman
2014/01/14 16:26:28
WebInspector.UIString("Failed: ... %s", event.data
yurys
2014/01/15 08:30:11
Done.
|
| + WebInspector.ConsoleMessage.MessageLevel.Error); |
| + this._notifyCallbacks(); |
| + }, |
| + |
| + _notifyCallbacks: function() |
| + { |
| + var callbacks = this._callbacks; |
| + this._callbacks = null; |
| + for (var i = 0; i < callbacks.length; i++) |
| + callbacks[i](); |
| + } |
| +} |
| + |
| +/** |
| + * @param {!function()} callback |
| + */ |
| +WebInspector.TempFile._ensureTempStorageCleared = function(callback) |
| +{ |
| + if (!WebInspector.TempFile._storageCleaner) |
| + WebInspector.TempFile._storageCleaner = new WebInspector.TempStorageCleaner(); |
| + WebInspector.TempFile._storageCleaner.ensureStorageCleared(callback); |
| +} |