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

Unified Diff: Source/devtools/front_end/sdk/ServiceWorkerCacheModel.js

Issue 1044203004: [Storage] Cache storage inspection on all the frames! (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Cleanup, re-adding SWGlobalScope support, tested for pages and SW's Created 5 years, 9 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/sdk/ServiceWorkerCacheModel.js
diff --git a/Source/devtools/front_end/sdk/ServiceWorkerCacheModel.js b/Source/devtools/front_end/sdk/ServiceWorkerCacheModel.js
index 52af59c9decd71f00a6306b0d78371a188fb7b5e..3d601178d60f084e9ec85e50e4a7cdaadc6eddf5 100644
--- a/Source/devtools/front_end/sdk/ServiceWorkerCacheModel.js
+++ b/Source/devtools/front_end/sdk/ServiceWorkerCacheModel.js
@@ -11,27 +11,48 @@ WebInspector.ServiceWorkerCacheModel = function(target)
{
WebInspector.SDKModel.call(this, WebInspector.ServiceWorkerCacheModel, target);
- /** @type {!Set.<string>} */
- this._cacheNames = new Set();
+ /** @type {!Object.<string, !Array.<string>>} */
+ this._cacheNamesBySecurityOrigin = new Map();
- this._agent = target.serviceWorkerCacheAgent();
+ this._agent = target.cacheStorageAgent();
+
+ /** @type {boolean} */
+ this._enabled = false;
}
WebInspector.ServiceWorkerCacheModel.EventTypes = {
CacheAdded: "CacheAdded",
- CacheRemoved: "CacheRemoved",
+ CacheRemoved: "CacheRemoved"
}
WebInspector.ServiceWorkerCacheModel.prototype = {
- _reset: function()
+ /**
+ * @return {boolean}
+ */
+ isEnabled: function()
{
- this._updateCacheNames([]);
- this._loadCacheNames();
+ return this._enabled;
+ },
+ enable: function()
+ {
+ if (this._enabled)
+ return;
+
+ this.target().resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginAdded, this._securityOriginAdded, this);
+ this.target().resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginRemoved, this._securityOriginRemoved, this);
+
+ var securityOrigins = this.target().resourceTreeModel.securityOrigins();
+ for (var i = 0; i < securityOrigins.length; ++i)
+ this._addOrigin(securityOrigins[i]);
+ this._enabled = true;
},
refreshCacheNames: function()
{
- this._loadCacheNames();
+ var securityOrigins = this.target().resourceTreeModel.securityOrigins();
+ for (var securityOrigin of securityOrigins) {
+ this._loadCacheNames(securityOrigin);
+ }
},
/**
@@ -39,6 +60,7 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
*/
deleteCache: function(cacheId)
{
+ var securityOrigin = cacheId.securityOrigin;
/**
* @this {WebInspector.ServiceWorkerCacheModel}
*/
@@ -48,9 +70,16 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
console.error("ServiceWorkerCacheAgent error: ", error);
return;
}
- this._cacheRemoved(cacheId.name);
+ if (!this._cacheNamesBySecurityOrigin[securityOrigin])
pfeldman 2015/04/02 21:18:57 Now that this is a map, you should use .set, .get
dmurph 2015/04/02 23:23:18 Done.
+ return;
+ var caches = this._cacheNamesBySecurityOrigin[securityOrigin];
+ var index = caches.indexOf(cacheId.name);
pfeldman 2015/04/02 21:18:57 Arrays have .remove() in devtools.
dmurph 2015/04/02 23:23:17 Done.
+ if (index != -1) {
pfeldman 2015/04/02 21:18:57 no {} around single-line blocks
dmurph 2015/04/02 23:23:17 Done.
+ caches.splice(index, 1);
+ }
+ this._cacheRemoved(securityOrigin, cacheId.name);
}
- this._agent.deleteCache(cacheId.name, callback.bind(this));
+ this._agent.deleteCache(securityOrigin, cacheId.name, callback.bind(this));
},
/**
@@ -70,18 +99,44 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
caches: function()
{
var result = [];
- for (var cacheName of this._cacheNames) {
- result.push(new WebInspector.ServiceWorkerCacheModel.CacheId(cacheName));
+ for (var securityOrigin in this._cacheNamesBySecurityOrigin) {
pfeldman 2015/04/02 21:18:58 this would be for (var caches of this._cacheNamesB
dmurph 2015/04/02 23:23:17 Done.
+ var caches = this._cacheNamesBySecurityOrigin[securityOrigin];
+ for (var cacheName of caches) {
+ result.push(new WebInspector.ServiceWorkerCacheModel.CacheId(securityOrigin, cacheName));
+ }
}
return result;
},
dispose: function()
pfeldman 2015/04/02 21:18:58 unregister the listeners to resourceTreeModel here
dmurph 2015/04/02 23:23:17 done.
{
- this._updateCacheNames([]);
+ for (var securityOrigin in this._cacheNamesBySecurityOrigin) {
pfeldman 2015/04/02 21:18:57 of .keys()
dmurph 2015/04/02 23:23:17 Done.
+ this._updateCacheNames(securityOrigin, []);
+ }
+ this._cacheNamesBySecurityOrigin = {};
pfeldman 2015/04/02 21:18:57 .clear()
dmurph 2015/04/02 23:23:17 Done.
+ },
+
+ _addOrigin: function(securityOrigin) {
+ console.assert(!this._cacheNamesBySecurityOrigin[securityOrigin]);
pfeldman 2015/04/02 21:18:58 ditto
dmurph 2015/04/02 23:23:18 Done.
+ this._cacheNamesBySecurityOrigin[securityOrigin] = [];
+ this._loadCacheNames(securityOrigin);
+ },
+
+ /**
+ * @param {string} securityOrigin
+ */
+ _removeOrigin: function(securityOrigin)
+ {
+ console.assert(this._cacheNamesBySecurityOrigin[securityOrigin]);
+ for (var cacheName of this._cacheNamesBySecurityOrigin[securityOrigin])
pfeldman 2015/04/02 21:18:58 ditto (and may times below)
dmurph 2015/04/02 23:23:17 Done
+ this._cacheRemoved(securityOrigin, cacheName);
+ delete this._cacheNamesBySecurityOrigin[securityOrigin];
},
- _loadCacheNames: function()
+ /**
+ * @param {string} securityOrigin
+ */
+ _loadCacheNames: function(securityOrigin)
{
/**
* @param {?Protocol.Error} error
@@ -94,52 +149,71 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
console.error("ServiceWorkerCacheAgent error: ", error);
return;
}
-
- if (!this._cacheNames)
+ if (!this._cacheNamesBySecurityOrigin[securityOrigin])
return;
- this._updateCacheNames(cacheNames);
+ this._updateCacheNames(securityOrigin, cacheNames);
}
-
- this._agent.requestCacheNames(callback.bind(this));
+ this._agent.requestCacheNames(securityOrigin, callback.bind(this));
},
/**
+ * @param {string} securityOrigin
* @param {!Array.<string>} cacheNames
*/
- _updateCacheNames: function(cacheNames)
+ _updateCacheNames: function(securityOrigin, cacheNames)
{
- /** @type {!Set.<string>} */
- var newCacheNames = new Set(cacheNames);
- /** @type {!Set.<string>} */
- var oldCacheNames = this._cacheNames;
+ /** @type {!Object<string,boolean>} */
+ var newCacheNames = cacheNames.keySet();
+ /** @type {!Object<string,boolean>} */
+ var oldCacheNames = this._cacheNamesBySecurityOrigin[securityOrigin].keySet();
- this._cacheNames = new Set(cacheNames);
+ this._cacheNamesBySecurityOrigin[securityOrigin] = cacheNames;
- for (var oldCacheName of oldCacheNames) {
+ for (var oldCacheName in oldCacheNames) {
if (!newCacheNames[oldCacheName])
- this._cacheRemoved(oldCacheName);
+ this._cacheRemoved(securityOrigin, oldCacheName);
}
- for (var newCacheName of newCacheNames) {
+ for (var newCacheName in newCacheNames) {
if (!oldCacheNames[newCacheName])
- this._cacheAdded(newCacheName);
+ this._cacheAdded(securityOrigin, newCacheName);
}
},
/**
+ * @param {!WebInspector.Event} event
+ */
+ _securityOriginAdded: function(event)
+ {
+ var securityOrigin = /** @type {string} */ (event.data);
+ this._addOrigin(securityOrigin);
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _securityOriginRemoved: function(event)
+ {
+ var securityOrigin = /** @type {string} */ (event.data);
+ this._removeOrigin(securityOrigin);
+ },
+
+ /**
+ * @param {string} securityOrigin
* @param {string} cacheName
*/
- _cacheAdded: function(cacheName)
+ _cacheAdded: function(securityOrigin, cacheName)
{
- var cacheId = new WebInspector.ServiceWorkerCacheModel.CacheId(cacheName);
+ var cacheId = new WebInspector.ServiceWorkerCacheModel.CacheId(securityOrigin, cacheName);
this.dispatchEventToListeners(WebInspector.ServiceWorkerCacheModel.EventTypes.CacheAdded, cacheId);
},
/**
+ * @param {string} securityOrigin
* @param {string} cacheName
*/
- _cacheRemoved: function(cacheName)
+ _cacheRemoved: function(securityOrigin, cacheName)
{
- var cacheId = new WebInspector.ServiceWorkerCacheModel.CacheId(cacheName);
+ var cacheId = new WebInspector.ServiceWorkerCacheModel.CacheId(securityOrigin, cacheName);
this.dispatchEventToListeners(WebInspector.ServiceWorkerCacheModel.EventTypes.CacheRemoved, cacheId);
},
@@ -164,8 +238,7 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
console.error("ServiceWorkerCacheAgent error: ", error);
return;
}
-
- if (!this._cacheNames)
+ if (!this._cacheNamesBySecurityOrigin[cacheId.securityOrigin])
return;
var entries = [];
for (var i = 0; i < dataEntries.length; ++i) {
@@ -175,8 +248,7 @@ WebInspector.ServiceWorkerCacheModel.prototype = {
}
callback(entries, hasMore);
}
-
- this._agent.requestEntries(cacheName, skipCount, pageSize, innerCallback.bind(this));
+ this._agent.requestEntries(cacheId.securityOrigin, cacheName, skipCount, pageSize, innerCallback.bind(this));
},
__proto__: WebInspector.SDKModel.prototype
@@ -195,10 +267,12 @@ WebInspector.ServiceWorkerCacheModel.Entry = function(request, response)
/**
* @constructor
+ * @param {string} securityOrigin
* @param {string} name
*/
-WebInspector.ServiceWorkerCacheModel.CacheId = function(name)
+WebInspector.ServiceWorkerCacheModel.CacheId = function(securityOrigin, name)
{
+ this.securityOrigin = securityOrigin;
this.name = name;
}
@@ -209,7 +283,7 @@ WebInspector.ServiceWorkerCacheModel.CacheId.prototype = {
*/
equals: function(cacheId)
{
- return this.name === cacheId.name;
+ return this.name === cacheId.name && this.securityOrigin === cacheId.securityOrigin;
}
}
@@ -220,4 +294,17 @@ WebInspector.ServiceWorkerCacheModel.CacheId.prototype = {
WebInspector.ServiceWorkerCacheModel.Cache = function(cacheId)
{
this.cacheId = cacheId;
+}
+
+WebInspector.ServiceWorkerCacheModel._symbol = Symbol("CacheStorageModel");
+/**
+ * @param {!WebInspector.Target} target
+ * @return {!WebInspector.ServiceWorkerCacheModel}
+ */
+WebInspector.ServiceWorkerCacheModel.fromTarget = function(target)
+{
+ if (!target[WebInspector.ServiceWorkerCacheModel._symbol])
+ target[WebInspector.ServiceWorkerCacheModel._symbol] = new WebInspector.ServiceWorkerCacheModel(target);
+
+ return target[WebInspector.ServiceWorkerCacheModel._symbol];
}

Powered by Google App Engine
This is Rietveld 408576698