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

Side by Side Diff: LayoutTests/inspector/storage-panel-dom-storage-undo-redo.html

Issue 21163003: DevTools: Implement undo, redo operations for the DOMStorage views. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 4 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 unified diff | Download patch
OLDNEW
(Empty)
1 <html>
2 <head>
3 <script src="../http/tests/inspector/inspector-test.js"></script>
4 <script>
5
6 function initializeDOMStorage()
7 {
8 localStorage.clear();
9 sessionStorage.clear();
10 }
11
12 function getDOMStorageEntries(isLocalStorage)
13 {
14 var storage = isLocalStorage ? localStorage : sessionStorage;
15 var entries = [];
16 for (var i = 0; i < storage.length; ++i) {
17 var key = storage.key(i);
18 var value = storage.getItem(key);
19 entries.push(key + "=" + value);
20 }
21 entries.sort();
22 return "[" + entries.join() + "]";
23 }
24
25 function test()
26 {
27 WebInspector.showPanel("resources");
28
29 var theLocalStorage;
30 var theSessionStorage;
31 var storages = WebInspector.domStorageModel.storages();
32 for (var i = 0; i < storages.length; ++i) {
33 var storage = storages[i];
34 if (storage.isLocalStorage)
35 theLocalStorage = storage;
36 else
37 theSessionStorage = storage;
38 }
39
40 function dumpDOMStorage(next)
41 {
42 if (this.isLocalStorage)
43 InspectorTest.evaluateInPage("getDOMStorageEntries(true)", storageEn triesReceived.bind(this));
44 else
45 InspectorTest.evaluateInPage("getDOMStorageEntries(false)", storageE ntriesReceived.bind(this));
46
47 function storageEntriesReceived(entries)
48 {
49 InspectorTest.addResult((this.isLocalStorage ? "LocalStorage" : "Ses sionStorage") + " contents:" + entries.description);
50 next();
51 }
52 }
53
54 function show(storage)
55 {
56 WebInspector.panels.resources._showDOMStorage(storage);
57 }
58
59 function undo(operations, next)
60 {
61 for (var i = 0; i < operations; ++i)
62 this.undo();
63 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this, next)) ;
apavlov 2013/08/02 08:16:59 I know we generally avoid relying on InspectorTest
64 }
65
66 function redo(operations, next)
67 {
68 for (var i = 0; i < operations; ++i)
69 this.redo();
70 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this, next)) ;
71 }
72
73 function addKeyValuePair(storage, key, value)
74 {
75 var dataGrid = WebInspector.panels.resources._domStorageViews.get(storag e)._dataGrid;
76 var creationNode = dataGrid.rootNode().children[dataGrid.rootNode().chil dren.length - 1];
apavlov 2013/08/02 08:16:59 dataGrid.rootNode().children.peekLast() (defined i
77
78 var elementKey = creationNode._element.children[0];
79 dataGrid._startEditing(elementKey);
80 elementKey.textContent = key;
81 elementKey.dispatchEvent(InspectorTest.createKeyEvent("Enter"));
82
83 var elementValue = creationNode._element.children[1];
84 dataGrid._startEditing(elementValue);
85 elementValue.textContent = value;
86 elementValue.dispatchEvent(InspectorTest.createKeyEvent("Enter"));
87 }
88
89 function modifyValueForKey(storage, key, newValue)
90 {
91 var dataGrid = WebInspector.panels.resources._domStorageViews.get(storag e)._dataGrid;
92 var children = dataGrid.rootNode().children;
93
94 var modificationNode;
95 for (var i = 0; i < children.length; ++i) {
96 if (children[i]._element.children[0].textContent === key) {
97 modificationNode = children[i];
98 break;
99 }
100 }
101
102 var elementValue = modificationNode._element.children[1];
103 dataGrid._startEditing(elementValue);
104 elementValue.textContent = newValue;
105 elementValue.dispatchEvent(InspectorTest.createKeyEvent("Enter"));
106 }
107
108 function changeKey(storage, oldKey, newKey)
109 {
110 var dataGrid = WebInspector.panels.resources._domStorageViews.get(storag e)._dataGrid;
111 var children = dataGrid.rootNode().children;
112
113 var modificationNode;
114 for (var i = 0; i < children.length; ++i) {
115 if (children[i]._element.children[0].textContent === oldKey) {
116 modificationNode = children[i];
117 break;
118 }
119 }
120 var elementKey = modificationNode._element.children[0];
121 dataGrid._startEditing(elementKey);
122 elementKey.textContent = newKey;
123 elementKey.dispatchEvent(InspectorTest.createKeyEvent("Enter"));
124 }
125
126 InspectorTest.runTestSuite([
127 function initialize(next)
128 {
129 InspectorTest.evaluateInPage("initializeDOMStorage()", initialized);
130
131 function initialized(result)
132 {
133 InspectorTest.addResult("Initialized localStorage and sessionSto rage by clearing entries");
134 next();
135 }
136 },
137
138 function undoLocalStorageWithEmptyStack(next)
139 {
140 show(theLocalStorage);
141 InspectorTest.runAfterPendingDispatches(undo.bind(theLocalStorage, 1 0, next));
142 },
143
144 function redoLocalStorageWithEmptyStack(next)
145 {
146 show(theLocalStorage);
147 InspectorTest.runAfterPendingDispatches(redo.bind(theLocalStorage, 1 0, next));
148 },
149
150 function addLocalStorageEntries(next)
151 {
152 show(theLocalStorage);
153 InspectorTest.runAfterPendingDispatches(domStorageViewShown.bind(the LocalStorage));
154
155 function domStorageViewShown()
156 {
157 addKeyValuePair(this, "a1", "b1");
158 addKeyValuePair(this, "a2", "b2");
159 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this , next));
160 }
161 },
162
163 function undoLocalStorageLastAddition(next)
164 {
165 show(theLocalStorage);
166 InspectorTest.runAfterPendingDispatches(undo.bind(theLocalStorage, 2 , next));
167 },
168
169 function undoSessionStorageWithEmptyStack(next)
170 {
171 show(theSessionStorage);
172 InspectorTest.runAfterPendingDispatches(undo.bind(theSessionStorage, 10, next));
173 },
174
175 function redoSessionStorageWithEmptyStack(next)
176 {
177 show(theSessionStorage);
178 InspectorTest.runAfterPendingDispatches(redo.bind(theSessionStorage, 10, next));
179 },
180
181 function undoLocalStorageBeyondBounds(next)
182 {
183 show(theLocalStorage);
184 InspectorTest.runAfterPendingDispatches(undo.bind(theLocalStorage, 1 0, next));
185 },
186
187 function addSessionStorageEntries(next)
188 {
189 show(theSessionStorage);
190 InspectorTest.runAfterPendingDispatches(domStorageViewShown.bind(the SessionStorage));
191
192 function domStorageViewShown()
193 {
194 addKeyValuePair(this, "p1", "q1");
195 addKeyValuePair(this, "p2", "q2");
196 addKeyValuePair(this, "p3", "q3");
197 addKeyValuePair(this, "p4", "q4");
198 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this , next));
199 }
200 },
201
202 function redoLocalStorageBeyondBounds(next)
203 {
204 show(theLocalStorage);
205 InspectorTest.runAfterPendingDispatches(redo.bind(theLocalStorage, 1 0, next));
206 },
207
208 function undoSessionStorageLastAddition(next)
209 {
210 show(theSessionStorage);
211 InspectorTest.runAfterPendingDispatches(undo.bind(theSessionStorage, 2, next));
212 },
213
214 function modifyLocalStorageValues(next)
215 {
216 show(theLocalStorage);
217 InspectorTest.runAfterPendingDispatches(domStorageViewShown.bind(the LocalStorage));
218
219 function domStorageViewShown()
220 {
221 modifyValueForKey(this, "a1", "x1");
222 modifyValueForKey(this, "a2", "x2");
223 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this , next));
224 }
225 },
226
227 function undoLocalStorageModifications(next)
228 {
229 show(theLocalStorage);
230 InspectorTest.runAfterPendingDispatches(undo.bind(theLocalStorage, 2 , next));
231 },
232
233 function redoSessionStorageLastAddition(next)
234 {
235 show(theSessionStorage);
236 InspectorTest.runAfterPendingDispatches(redo.bind(theSessionStorage, 2, next));
237 },
238
239 function redoLocalStorageModifications(next)
240 {
241 show(theLocalStorage);
242 InspectorTest.runAfterPendingDispatches(redo.bind(theLocalStorage, 2 , next));
243 },
244
245 function modifySessionStorageEntriesKey(next)
246 {
247 show(theSessionStorage);
248 InspectorTest.runAfterPendingDispatches(domStorageViewShown.bind(the SessionStorage));
249
250 function domStorageViewShown()
251 {
252 changeKey(this, "p1", "m1");
253 changeKey(this, "p2", "m2");
254 changeKey(this, "p3", "m3");
255 changeKey(this, "p4", "m4");
256 InspectorTest.runAfterPendingDispatches(dumpDOMStorage.bind(this , next));
257 }
258 },
259
260 function undoLocalStorageModifications(next)
261 {
262 show(theLocalStorage);
263 InspectorTest.runAfterPendingDispatches(undo.bind(theLocalStorage, 2 , next));
264 }
265 ]);
266 }
267 </script>
268 </head>
269 <body onload="runTest()">
270 <p>This test checks the undo/redo operations are performed correctly on the DOM storage views</p>
271 </body>
272 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698