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

Unified Diff: LayoutTests/http/tests/inspector/cache-storage/cache-storage-test.js

Issue 1044203004: [Storage] Cache storage inspection on all the frames! (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Comments Created 5 years, 8 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: LayoutTests/http/tests/inspector/cache-storage/cache-storage-test.js
diff --git a/LayoutTests/http/tests/inspector/cache-storage/cache-storage-test.js b/LayoutTests/http/tests/inspector/cache-storage/cache-storage-test.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3153b456467ce5b52c8753c456aca7b3eb9ff79
--- /dev/null
+++ b/LayoutTests/http/tests/inspector/cache-storage/cache-storage-test.js
@@ -0,0 +1,190 @@
+var initialize_CacheStorageTest = function() {
pfeldman 2015/04/10 12:35:33 Copyright, please also use Blink coding guidelines
dmurph 2015/04/13 18:23:03 Done.
+InspectorTest.preloadPanel("resources");
+
+// ###### CALLBACK SUPPORT ######
+var lastCallbackId = 0;
pfeldman 2015/04/10 12:35:33 Section below is cryptic.
dmurph 2015/04/13 18:23:03 Removed
+var callbacks = {};
+var callbackIdPrefix = "InspectorTest.CacheStorage_callback";
+var resolveId = "Resolve";
+var rejectId = "Reject";
+
+var generatePromiseCallbackCalls = function(callbackId) {
+ return "dispatchCallback.bind(this, \"" + callbackIdPrefix + callbackId + resolveId + "\"), dispatchCallback.bind(this, \"" + callbackIdPrefix + callbackId + rejectId + "\")";
+}
+
+var getAndDeleteCallbackFromId = function(callbackId) {
pfeldman 2015/04/10 12:35:33 Lets move InspectorTest.evaluateWithPromise along
dmurph 2015/04/13 18:23:03 Done, as 'invokePageFunctionPromise'
+ callbackId = callbackId.substring(callbackIdPrefix.length);
+ var resolve = callbackId.indexOf(resolveId) !== -1;
+ console.assert(resolve || callbackId.indexOf(rejectId) !== -1);
+ var sizeOffEnd = resolve ? resolveId.length : rejectId.length;
+ callbackId = callbackId.substring(0, callbackId.length - sizeOffEnd);
+ var callbackOptions = callbacks[callbackId];
+ var callback = resolve ? callbackOptions.resolve : callbackOptions.reject;
+ delete callbacks[callbackId];
+ return callback;
+}
+
+InspectorTest.evaluateWithPromise = function(frameId, methodName, parameters)
+{
+ return new Promise(function(resolve, reject) {
+ InspectorTest._cacheStorageSniffer();
+ var callbackId = ++lastCallbackId;
+ callbacks[callbackId] = { 'resolve': resolve, 'reject': reject };
+ var parametersString = generatePromiseCallbackCalls(callbackId);
+ for (var i = 0; i < parameters.length; ++i)
+ parametersString += ", " + JSON.stringify(parameters[i]);
+ var requestString = methodName + "(" + parametersString + ")";
+ InspectorTest.evaluateInPage(requestString);
+ });
+};
pfeldman 2015/04/10 12:35:33 drop ;
dmurph 2015/04/13 18:23:03 Done.
+
+InspectorTest._cacheStorageSniffer = function()
+{
+ InspectorTest.addConsoleSniffer(consoleMessageOverride, false);
+ function consoleMessageOverride(msg)
+ {
+ var text = msg.messageText;
+ if (!text.startsWith(callbackIdPrefix)) {
+ InspectorTest.addConsoleSniffer(consoleMessageOverride, false);
+ return;
+ }
+ var callback = getAndDeleteCallbackFromId(text);
+ callback.call();
+ }
+};
+
+// ###### INSPECTOR STATE AND OPERATIONS ######
+
+InspectorTest.dumpCacheTree = function()
+{
+ WebInspector.panels.resources.cacheStorageListTreeElement.expand();
+ InspectorTest.addResult("Dumping CacheStorage tree:");
+ var cachesTreeElement = WebInspector.panels.resources.cacheStorageListTreeElement;
+ var promise = new Promise(function(resolve, reject) {
+ InspectorTest.addSnifferPromise(WebInspector.ServiceWorkerCacheModel.prototype, "_updateCacheNames").then(function() {
+ if (!cachesTreeElement.childCount()) {
+ InspectorTest.addResult(" (empty)");
+ return resolve();
+ }
+ function queryView(i) {
+ var cacheTreeElement = cachesTreeElement.childAt(i);
+ InspectorTest.addResult(" cache: " + cacheTreeElement.titleText);
+ function nextOrResolve() {
+ var next = i + 1;
+ if (next < cachesTreeElement.childCount()) {
+ queryView(next);
+ } else {
+ resolve();
+ }
+ }
+ function addDataResult() {
+ if (view._entries.length == 0) {
+ InspectorTest.addResult(" (cache empty)");
+ nextOrResolve();
+ return;
+ }
+ for (var entry of view._entries) {
+ InspectorTest.addResult(" '" + entry.request._value + "': '" + entry.response._value + "'");
+ }
+ nextOrResolve();
+ }
+ var view = cacheTreeElement._view;
+ InspectorTest.addSniffer(WebInspector.ServiceWorkerCacheView.prototype, "_updateDataCallback", addDataResult, false);
+ if (!view) {
pfeldman 2015/04/10 12:35:33 no {}
dmurph 2015/04/13 18:23:03 Done.
+ cacheTreeElement.onselect(false);
+ } else {
+ view._updateData(true);
+ }
+ view = cacheTreeElement._view;
+ }
+ WebInspector.panels.resources.cacheStorageListTreeElement._refreshCaches();
+ queryView(0);
+ }).catch(reject);
+ });
+ WebInspector.panels.resources.cacheStorageListTreeElement._refreshCaches();
+ return promise;
+}
+
+InspectorTest.deleteCacheFromInspector = function(cacheName) {
+ WebInspector.panels.resources.cacheStorageListTreeElement.expand();
+ InspectorTest.addResult("Deleting CacheStorage cache " + cacheName);
+ var cachesTreeElement = WebInspector.panels.resources.cacheStorageListTreeElement;
+ var promise = new Promise(function(resolve, reject) {
+ InspectorTest.addSnifferPromise(WebInspector.ServiceWorkerCacheModel.prototype, "_updateCacheNames").then(function() {
+ if (!cachesTreeElement.childCount()) {
+ return resolve();
+ }
+ for (var i = 0; i < cachesTreeElement.childCount(); i++) {
+ var cacheTreeElement = cachesTreeElement.childAt(i);
+ var title = cacheTreeElement.titleText;
+ var elementCacheName = title.substring(0, title.lastIndexOf(" - "));
+ if (elementCacheName != cacheName) {
+ continue;
+ }
+ InspectorTest.addSniffer(WebInspector.ServiceWorkerCacheModel.prototype, "_cacheRemoved", resolve)
+ cacheTreeElement._clearCache();
+ return;
+ }
+ console.error("Could not find cache to delete.");
+ reject();
+ }).catch(reject);
+ });
+ WebInspector.panels.resources.cacheStorageListTreeElement._refreshCaches();
+ return promise;
+}
+
+//###### CACHE STORAGE OPERATIONS ######
+
+InspectorTest.createCache = function(frameId, cacheName)
+{
+ return InspectorTest.evaluateWithPromise(frameId, "createCache", [cacheName]);
+};
+
+InspectorTest.addCacheEntry = function(frameId, cacheName, requestUrl, responseText)
+{
+ return InspectorTest.evaluateWithPromise(frameId, "addCacheEntry", [cacheName, requestUrl, responseText]);
+};
+
+InspectorTest.deleteCache = function(frameId, cacheName)
+{
+ return InspectorTest.evaluateWithPromise(frameId, "deleteCache", [cacheName]);
+};
+};
+
+function dispatchCallback(callbackId)
+{
+ console.log(callbackId);
pfeldman 2015/04/10 12:35:33 InspectorTest.addResult
dmurph 2015/04/13 18:23:03 Removed.
+}
+
+function onCacheStorageError(reject, e)
+{
+ console.error("CacheStorage error: " + e);
+ reject();
+}
+
+function createCache(resolve, reject, cacheName)
+{
+ caches.open(cacheName).then(resolve).catch(onCacheStorageError.bind(this, reject));
+}
+
+function addCacheEntry(resolve, reject, cacheName, requestUrl, responseText)
+{
+ caches.open(cacheName).then(function(cache) {
+ var request = new Request(requestUrl);
+ var myBlob = new Blob();
+ var init = { "status" : 200 , "statusText" : responseText };
+ var response = new Response(myBlob, init);
+ return cache.put(request, response);
+ }).then(resolve)
+ .catch(onCacheStorageError.bind(this, reject));
+}
+
+function deleteCache(resolve, reject, cacheName) {
+ caches.delete(cacheName).then(function(success) {
+ if (success) {
+ resolve();
+ } else {
+ onCacheStorageError(reject, "Could not find cache " + cacheName);
+ }
+ }).catch(onCacheStorageError.bind(this, reject));;
+}

Powered by Google App Engine
This is Rietveld 408576698