OLD | NEW |
---|---|
(Empty) | |
1 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.
| |
2 InspectorTest.preloadPanel("resources"); | |
3 | |
4 // ###### CALLBACK SUPPORT ###### | |
5 var lastCallbackId = 0; | |
pfeldman
2015/04/10 12:35:33
Section below is cryptic.
dmurph
2015/04/13 18:23:03
Removed
| |
6 var callbacks = {}; | |
7 var callbackIdPrefix = "InspectorTest.CacheStorage_callback"; | |
8 var resolveId = "Resolve"; | |
9 var rejectId = "Reject"; | |
10 | |
11 var generatePromiseCallbackCalls = function(callbackId) { | |
12 return "dispatchCallback.bind(this, \"" + callbackIdPrefix + callbackId + reso lveId + "\"), dispatchCallback.bind(this, \"" + callbackIdPrefix + callbackId + rejectId + "\")"; | |
13 } | |
14 | |
15 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'
| |
16 callbackId = callbackId.substring(callbackIdPrefix.length); | |
17 var resolve = callbackId.indexOf(resolveId) !== -1; | |
18 console.assert(resolve || callbackId.indexOf(rejectId) !== -1); | |
19 var sizeOffEnd = resolve ? resolveId.length : rejectId.length; | |
20 callbackId = callbackId.substring(0, callbackId.length - sizeOffEnd); | |
21 var callbackOptions = callbacks[callbackId]; | |
22 var callback = resolve ? callbackOptions.resolve : callbackOptions.reject; | |
23 delete callbacks[callbackId]; | |
24 return callback; | |
25 } | |
26 | |
27 InspectorTest.evaluateWithPromise = function(frameId, methodName, parameters) | |
28 { | |
29 return new Promise(function(resolve, reject) { | |
30 InspectorTest._cacheStorageSniffer(); | |
31 var callbackId = ++lastCallbackId; | |
32 callbacks[callbackId] = { 'resolve': resolve, 'reject': reject }; | |
33 var parametersString = generatePromiseCallbackCalls(callbackId); | |
34 for (var i = 0; i < parameters.length; ++i) | |
35 parametersString += ", " + JSON.stringify(parameters[i]); | |
36 var requestString = methodName + "(" + parametersString + ")"; | |
37 InspectorTest.evaluateInPage(requestString); | |
38 }); | |
39 }; | |
pfeldman
2015/04/10 12:35:33
drop ;
dmurph
2015/04/13 18:23:03
Done.
| |
40 | |
41 InspectorTest._cacheStorageSniffer = function() | |
42 { | |
43 InspectorTest.addConsoleSniffer(consoleMessageOverride, false); | |
44 function consoleMessageOverride(msg) | |
45 { | |
46 var text = msg.messageText; | |
47 if (!text.startsWith(callbackIdPrefix)) { | |
48 InspectorTest.addConsoleSniffer(consoleMessageOverride, false); | |
49 return; | |
50 } | |
51 var callback = getAndDeleteCallbackFromId(text); | |
52 callback.call(); | |
53 } | |
54 }; | |
55 | |
56 // ###### INSPECTOR STATE AND OPERATIONS ###### | |
57 | |
58 InspectorTest.dumpCacheTree = function() | |
59 { | |
60 WebInspector.panels.resources.cacheStorageListTreeElement.expand(); | |
61 InspectorTest.addResult("Dumping CacheStorage tree:"); | |
62 var cachesTreeElement = WebInspector.panels.resources.cacheStorageListTreeEl ement; | |
63 var promise = new Promise(function(resolve, reject) { | |
64 InspectorTest.addSnifferPromise(WebInspector.ServiceWorkerCacheModel.pro totype, "_updateCacheNames").then(function() { | |
65 if (!cachesTreeElement.childCount()) { | |
66 InspectorTest.addResult(" (empty)"); | |
67 return resolve(); | |
68 } | |
69 function queryView(i) { | |
70 var cacheTreeElement = cachesTreeElement.childAt(i); | |
71 InspectorTest.addResult(" cache: " + cacheTreeElement.titleTe xt); | |
72 function nextOrResolve() { | |
73 var next = i + 1; | |
74 if (next < cachesTreeElement.childCount()) { | |
75 queryView(next); | |
76 } else { | |
77 resolve(); | |
78 } | |
79 } | |
80 function addDataResult() { | |
81 if (view._entries.length == 0) { | |
82 InspectorTest.addResult(" (cache empty)"); | |
83 nextOrResolve(); | |
84 return; | |
85 } | |
86 for (var entry of view._entries) { | |
87 InspectorTest.addResult(" '" + entry.request._val ue + "': '" + entry.response._value + "'"); | |
88 } | |
89 nextOrResolve(); | |
90 } | |
91 var view = cacheTreeElement._view; | |
92 InspectorTest.addSniffer(WebInspector.ServiceWorkerCacheView.pro totype, "_updateDataCallback", addDataResult, false); | |
93 if (!view) { | |
pfeldman
2015/04/10 12:35:33
no {}
dmurph
2015/04/13 18:23:03
Done.
| |
94 cacheTreeElement.onselect(false); | |
95 } else { | |
96 view._updateData(true); | |
97 } | |
98 view = cacheTreeElement._view; | |
99 } | |
100 WebInspector.panels.resources.cacheStorageListTreeElement._refreshCa ches(); | |
101 queryView(0); | |
102 }).catch(reject); | |
103 }); | |
104 WebInspector.panels.resources.cacheStorageListTreeElement._refreshCaches(); | |
105 return promise; | |
106 } | |
107 | |
108 InspectorTest.deleteCacheFromInspector = function(cacheName) { | |
109 WebInspector.panels.resources.cacheStorageListTreeElement.expand(); | |
110 InspectorTest.addResult("Deleting CacheStorage cache " + cacheName); | |
111 var cachesTreeElement = WebInspector.panels.resources.cacheStorageListTreeElem ent; | |
112 var promise = new Promise(function(resolve, reject) { | |
113 InspectorTest.addSnifferPromise(WebInspector.ServiceWorkerCacheModel.prototy pe, "_updateCacheNames").then(function() { | |
114 if (!cachesTreeElement.childCount()) { | |
115 return resolve(); | |
116 } | |
117 for (var i = 0; i < cachesTreeElement.childCount(); i++) { | |
118 var cacheTreeElement = cachesTreeElement.childAt(i); | |
119 var title = cacheTreeElement.titleText; | |
120 var elementCacheName = title.substring(0, title.lastIndexOf(" - ")); | |
121 if (elementCacheName != cacheName) { | |
122 continue; | |
123 } | |
124 InspectorTest.addSniffer(WebInspector.ServiceWorkerCacheModel.protot ype, "_cacheRemoved", resolve) | |
125 cacheTreeElement._clearCache(); | |
126 return; | |
127 } | |
128 console.error("Could not find cache to delete."); | |
129 reject(); | |
130 }).catch(reject); | |
131 }); | |
132 WebInspector.panels.resources.cacheStorageListTreeElement._refreshCaches(); | |
133 return promise; | |
134 } | |
135 | |
136 //###### CACHE STORAGE OPERATIONS ###### | |
137 | |
138 InspectorTest.createCache = function(frameId, cacheName) | |
139 { | |
140 return InspectorTest.evaluateWithPromise(frameId, "createCache", [cacheName] ); | |
141 }; | |
142 | |
143 InspectorTest.addCacheEntry = function(frameId, cacheName, requestUrl, responseT ext) | |
144 { | |
145 return InspectorTest.evaluateWithPromise(frameId, "addCacheEntry", [cacheNam e, requestUrl, responseText]); | |
146 }; | |
147 | |
148 InspectorTest.deleteCache = function(frameId, cacheName) | |
149 { | |
150 return InspectorTest.evaluateWithPromise(frameId, "deleteCache", [cacheName] ); | |
151 }; | |
152 }; | |
153 | |
154 function dispatchCallback(callbackId) | |
155 { | |
156 console.log(callbackId); | |
pfeldman
2015/04/10 12:35:33
InspectorTest.addResult
dmurph
2015/04/13 18:23:03
Removed.
| |
157 } | |
158 | |
159 function onCacheStorageError(reject, e) | |
160 { | |
161 console.error("CacheStorage error: " + e); | |
162 reject(); | |
163 } | |
164 | |
165 function createCache(resolve, reject, cacheName) | |
166 { | |
167 caches.open(cacheName).then(resolve).catch(onCacheStorageError.bind(this, re ject)); | |
168 } | |
169 | |
170 function addCacheEntry(resolve, reject, cacheName, requestUrl, responseText) | |
171 { | |
172 caches.open(cacheName).then(function(cache) { | |
173 var request = new Request(requestUrl); | |
174 var myBlob = new Blob(); | |
175 var init = { "status" : 200 , "statusText" : responseText }; | |
176 var response = new Response(myBlob, init); | |
177 return cache.put(request, response); | |
178 }).then(resolve) | |
179 .catch(onCacheStorageError.bind(this, reject)); | |
180 } | |
181 | |
182 function deleteCache(resolve, reject, cacheName) { | |
183 caches.delete(cacheName).then(function(success) { | |
184 if (success) { | |
185 resolve(); | |
186 } else { | |
187 onCacheStorageError(reject, "Could not find cache " + cacheName) ; | |
188 } | |
189 }).catch(onCacheStorageError.bind(this, reject));; | |
190 } | |
OLD | NEW |