OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Nokia Inc. All rights reserved. | 2 * Copyright (C) 2008 Nokia Inc. All rights reserved. |
3 * Copyright (C) 2013 Samsung Electronics. All rights reserved. | 3 * Copyright (C) 2013 Samsung Electronics. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 19 matching lines...) Expand all Loading... |
30 /** | 30 /** |
31 * @constructor | 31 * @constructor |
32 * @extends {WebInspector.Object} | 32 * @extends {WebInspector.Object} |
33 * @param {string} securityOrigin | 33 * @param {string} securityOrigin |
34 * @param {boolean} isLocalStorage | 34 * @param {boolean} isLocalStorage |
35 */ | 35 */ |
36 WebInspector.DOMStorage = function(securityOrigin, isLocalStorage) | 36 WebInspector.DOMStorage = function(securityOrigin, isLocalStorage) |
37 { | 37 { |
38 this._securityOrigin = securityOrigin; | 38 this._securityOrigin = securityOrigin; |
39 this._isLocalStorage = isLocalStorage; | 39 this._isLocalStorage = isLocalStorage; |
40 this._storageHistory = new WebInspector.DOMStorageHistory(this); | |
41 } | 40 } |
42 | 41 |
43 /** | 42 /** |
44 * @param {string} securityOrigin | 43 * @param {string} securityOrigin |
45 * @param {boolean} isLocalStorage | 44 * @param {boolean} isLocalStorage |
46 * @return {DOMStorageAgent.StorageId} | 45 * @return {DOMStorageAgent.StorageId} |
47 */ | 46 */ |
48 WebInspector.DOMStorage.storageId = function(securityOrigin, isLocalStorage) | 47 WebInspector.DOMStorage.storageId = function(securityOrigin, isLocalStorage) |
49 { | 48 { |
50 return { securityOrigin: securityOrigin, isLocalStorage: isLocalStorage }; | 49 return { securityOrigin: securityOrigin, isLocalStorage: isLocalStorage }; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 { | 83 { |
85 DOMStorageAgent.getDOMStorageItems(this.id, callback); | 84 DOMStorageAgent.getDOMStorageItems(this.id, callback); |
86 }, | 85 }, |
87 | 86 |
88 /** | 87 /** |
89 * @param {string} key | 88 * @param {string} key |
90 * @param {string} value | 89 * @param {string} value |
91 */ | 90 */ |
92 setItem: function(key, value) | 91 setItem: function(key, value) |
93 { | 92 { |
94 this._storageHistory.perform(new WebInspector.DOMStorageSetItemAction(th
is, key, value)); | 93 DOMStorageAgent.setDOMStorageItem(this.id, key, value); |
95 }, | 94 }, |
96 | 95 |
97 /** | 96 /** |
98 * @param {string} key | 97 * @param {string} key |
99 */ | 98 */ |
100 removeItem: function(key) | 99 removeItem: function(key) |
101 { | 100 { |
102 this._storageHistory.perform(new WebInspector.DOMStorageRemoveItemAction
(this, key)); | 101 DOMStorageAgent.removeDOMStorageItem(this.id, key); |
103 }, | |
104 | |
105 undo: function() | |
106 { | |
107 this._storageHistory.undo(); | |
108 }, | |
109 | |
110 redo: function() | |
111 { | |
112 this._storageHistory.redo(); | |
113 }, | 102 }, |
114 | 103 |
115 __proto__: WebInspector.Object.prototype | 104 __proto__: WebInspector.Object.prototype |
116 } | 105 } |
117 | 106 |
118 /** | 107 /** |
119 * @constructor | 108 * @constructor |
120 * @param {WebInspector.DOMStorage} domStorage | |
121 */ | |
122 WebInspector.DOMStorageAction = function(domStorage) | |
123 { | |
124 this._domStorage = domStorage; | |
125 } | |
126 | |
127 WebInspector.DOMStorageAction.prototype = { | |
128 /** | |
129 * @param {function()} callback | |
130 */ | |
131 perform: function(callback) | |
132 { | |
133 }, | |
134 | |
135 undo: function() | |
136 { | |
137 }, | |
138 | |
139 redo: function() | |
140 { | |
141 } | |
142 } | |
143 | |
144 /** | |
145 * @constructor | |
146 * @extends {WebInspector.DOMStorageAction} | |
147 * @param {WebInspector.DOMStorage} domStorage | |
148 * @param {string} key | |
149 */ | |
150 WebInspector.DOMStorageRemoveItemAction = function(domStorage, key) | |
151 { | |
152 WebInspector.DOMStorageAction.call(this, domStorage); | |
153 this._key = key; | |
154 } | |
155 | |
156 WebInspector.DOMStorageRemoveItemAction.prototype = { | |
157 /** | |
158 * @override | |
159 */ | |
160 perform: function(callback) | |
161 { | |
162 DOMStorageAgent.getValue(this._domStorage.id, this._key, valueReceived.b
ind(this)); | |
163 | |
164 /** | |
165 * @param {?Protocol.Error} error | |
166 * @param {string=} value | |
167 */ | |
168 function valueReceived(error, value) | |
169 { | |
170 if (error) | |
171 return; | |
172 | |
173 this._value = value; | |
174 this.redo(); | |
175 callback(); | |
176 } | |
177 }, | |
178 | |
179 /** | |
180 * @override | |
181 */ | |
182 undo: function() | |
183 { | |
184 DOMStorageAgent.setDOMStorageItem(this._domStorage.id, this._key, this._
value); | |
185 }, | |
186 | |
187 /** | |
188 * @override | |
189 */ | |
190 redo: function() | |
191 { | |
192 DOMStorageAgent.removeDOMStorageItem(this._domStorage.id, this._key); | |
193 }, | |
194 | |
195 __proto__: WebInspector.DOMStorageAction.prototype | |
196 } | |
197 | |
198 /** | |
199 * @constructor | |
200 * @extends {WebInspector.DOMStorageAction} | |
201 * @param {WebInspector.DOMStorage} domStorage | |
202 * @param {string} key | |
203 * @param {string} value | |
204 */ | |
205 WebInspector.DOMStorageSetItemAction = function(domStorage, key, value) | |
206 { | |
207 WebInspector.DOMStorageAction.call(this, domStorage); | |
208 this._key = key; | |
209 this._value = value; | |
210 } | |
211 | |
212 WebInspector.DOMStorageSetItemAction.prototype = { | |
213 /** | |
214 * @override | |
215 */ | |
216 perform: function(callback) | |
217 { | |
218 DOMStorageAgent.getValue(this._domStorage.id, this._key, valueReceived.b
ind(this)); | |
219 | |
220 /** | |
221 * @param {?Protocol.Error} error | |
222 * @param {string=} value | |
223 */ | |
224 function valueReceived(error, value) | |
225 { | |
226 if (error) | |
227 return; | |
228 | |
229 if (typeof value === "undefined") | |
230 delete this._exists; | |
231 else { | |
232 this._exists = true; | |
233 this._oldValue = value; | |
234 } | |
235 this.redo(); | |
236 callback(); | |
237 } | |
238 }, | |
239 | |
240 /** | |
241 * @override | |
242 */ | |
243 undo: function() | |
244 { | |
245 if (!this._exists) | |
246 DOMStorageAgent.removeDOMStorageItem(this._domStorage.id, this._key)
; | |
247 else | |
248 DOMStorageAgent.setDOMStorageItem(this._domStorage.id, this._key, th
is._oldValue); | |
249 }, | |
250 | |
251 /** | |
252 * @override | |
253 */ | |
254 redo: function() | |
255 { | |
256 DOMStorageAgent.setDOMStorageItem(this._domStorage.id, this._key, this._
value); | |
257 }, | |
258 | |
259 __proto__: WebInspector.DOMStorageAction.prototype | |
260 } | |
261 | |
262 /** | |
263 * @constructor | |
264 * @param {WebInspector.DOMStorage} domStorage | |
265 */ | |
266 WebInspector.DOMStorageHistory = function(domStorage) | |
267 { | |
268 this._domStorage = domStorage; | |
269 | |
270 /** @type {!Array.<!WebInspector.DOMStorageAction>} */ | |
271 this._actions = []; | |
272 this._undoableActionIndex = -1; | |
273 } | |
274 | |
275 WebInspector.DOMStorageHistory.MAX_UNDO_STACK_DEPTH = 256; | |
276 | |
277 WebInspector.DOMStorageHistory.prototype = { | |
278 /** | |
279 * @param {WebInspector.DOMStorageAction} action | |
280 */ | |
281 perform: function(action) | |
282 { | |
283 if (!action) | |
284 return; | |
285 | |
286 action.perform(actionCompleted.bind(this)); | |
287 function actionCompleted() | |
288 { | |
289 if (this._undoableActionIndex + 1 === WebInspector.DOMStorageHistory
.MAX_UNDO_STACK_DEPTH) { | |
290 this._actions.shift(); | |
291 --this._undoableActionIndex; | |
292 } else if (this._undoableActionIndex + 1 < this._actions.length) | |
293 this._actions.splice(this._undoableActionIndex + 1); | |
294 | |
295 this._actions.push(action); | |
296 ++this._undoableActionIndex; | |
297 } | |
298 }, | |
299 | |
300 undo: function() | |
301 { | |
302 if (this._undoableActionIndex < 0) | |
303 return; | |
304 | |
305 var action = this._actions[this._undoableActionIndex]; | |
306 console.assert(action); | |
307 action.undo(); | |
308 --this._undoableActionIndex; | |
309 }, | |
310 | |
311 redo: function() | |
312 { | |
313 if (this._undoableActionIndex >= this._actions.length - 1) | |
314 return; | |
315 | |
316 var action = this._actions[++this._undoableActionIndex]; | |
317 console.assert(action); | |
318 action.redo(); | |
319 } | |
320 } | |
321 | |
322 /** | |
323 * @constructor | |
324 * @extends {WebInspector.Object} | 109 * @extends {WebInspector.Object} |
325 */ | 110 */ |
326 WebInspector.DOMStorageModel = function() | 111 WebInspector.DOMStorageModel = function() |
327 { | 112 { |
328 /** @type {!Object.<string, !WebInspector.DOMStorage>} */ | 113 /** @type {!Object.<string, !WebInspector.DOMStorage>} */ |
329 this._storages = {}; | 114 this._storages = {}; |
330 InspectorBackend.registerDOMStorageDispatcher(new WebInspector.DOMStorageDis
patcher(this)); | 115 InspectorBackend.registerDOMStorageDispatcher(new WebInspector.DOMStorageDis
patcher(this)); |
331 DOMStorageAgent.enable(); | 116 DOMStorageAgent.enable(); |
332 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.SecurityOriginAdded, this._securityOriginAdded, this); | 117 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.SecurityOriginAdded, this._securityOriginAdded, this); |
333 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.SecurityOriginRemoved, this._securityOriginRemoved, this); | 118 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.SecurityOriginRemoved, this._securityOriginRemoved, this); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 domStorageItemUpdated: function(storageId, key, oldValue, value) | 302 domStorageItemUpdated: function(storageId, key, oldValue, value) |
518 { | 303 { |
519 this._model._domStorageItemUpdated(storageId, key, oldValue, value); | 304 this._model._domStorageItemUpdated(storageId, key, oldValue, value); |
520 }, | 305 }, |
521 } | 306 } |
522 | 307 |
523 /** | 308 /** |
524 * @type {WebInspector.DOMStorageModel} | 309 * @type {WebInspector.DOMStorageModel} |
525 */ | 310 */ |
526 WebInspector.domStorageModel = null; | 311 WebInspector.domStorageModel = null; |
OLD | NEW |