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); |
+} |