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

Unified Diff: Source/devtools/front_end/TempFile.js

Issue 136793008: Clear DevTools temp storage (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698