Skip to content

Commit cbff3f9

Browse files
author
p01
committed
Switch to UID instead of ResourceInfo.id and the according clean up
Pass a base ResourceInfo object if available to RequestResource Specifically suppress the "resource-update" for the URL requested
1 parent bbc585d commit cbff3f9

File tree

3 files changed

+52
-36
lines changed

3 files changed

+52
-36
lines changed

src/network/network_service.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ cls.NetworkLoggerResponse.prototype = new cls.NetworkLoggerResponsePrototype();
12891289

12901290
cls.ResourceInfo = function(entry)
12911291
{
1292-
this.id = entry.resource_id;
1292+
this.resource_id = entry.resource_id;
12931293
this.url = entry.url;
12941294
this.document_id = entry.document_id;
12951295
this.type = entry.type;
@@ -1304,7 +1304,8 @@ cls.ResourceInfo = function(entry)
13041304
if (cls.ResourceUtil && cls.ResourceUtil.get_meta_data)
13051305
this.data.meta = cls.ResourceUtil.get_meta_data(this);
13061306
}
1307-
this.id = entry.id;
1307+
this.uid = entry.id;
1308+
13081309
};
13091310

13101311
cls.ResourceInfo.prototype = new URIPrototype("url");

src/resource-manager/resource_service.js

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,16 @@ cls.ResourceManagerService = function(view, network_logger)
6363
{
6464
// bounce if _suppress_updates
6565
if (this._suppress_updates)
66+
{
67+
if (msg && msg.id)
68+
{
69+
// suppress the uid altogether if its URL matches the one we are requesting
70+
var r = this._network_logger.get_resources([msg.id]);
71+
if (r && r[0] && r[0].url == this._suppress_updates_url)
72+
this._suppress_uids[msg.id] = true;
73+
}
6674
return setTimeout(this._update_bound, THROTTLE_DELAY);
75+
}
6776

6877
var ctx = {};
6978
// get list of window_contexts for which we saw the main_document
@@ -75,7 +84,12 @@ cls.ResourceManagerService = function(view, network_logger)
7584

7685
if (ctx.windowList && ctx.windowList.length)
7786
{
78-
ctx.resourceList = [];
87+
ctx.resourceList = (this._network_logger.get_resources()||[])
88+
.filter(function(v)
89+
{
90+
return !this._suppress_uids.hasOwnProperty(v.uid);
91+
}, this);
92+
7993
ctx.documentResourceHash = {};
8094

8195
// get all the resources
@@ -84,12 +98,6 @@ cls.ResourceManagerService = function(view, network_logger)
8498
.forEach(function(w,i)
8599
{
86100
windowID_index[w.id] = i;
87-
88-
// get resources of the current window
89-
var windowResources = w.get_resources();
90-
91-
// concat the result to flat list of resource
92-
ctx.resourceList = ctx.resourceList.concat( windowResources );
93101
});
94102

95103

@@ -171,7 +179,7 @@ cls.ResourceManagerService = function(view, network_logger)
171179
)
172180
this._listDocuments();
173181

174-
ctx.selectedResourceID = this._selectedResourceID;
182+
ctx.selectedResourceUID = this._selectedResourceUID;
175183
ctx.documentResources = this._documentResources;
176184
ctx.collapsed = this._collapsedHash;
177185
this._context = ctx;
@@ -223,34 +231,34 @@ cls.ResourceManagerService = function(view, network_logger)
223231
if (!this._context)
224232
return;
225233

226-
var parent = target.get_ancestor('[data-resource-id]');
234+
var parent = target.get_ancestor('[data-resource-uid]');
227235
if (!parent)
228236
return;
229237

230-
var id = parent.getAttribute('data-resource-id');
231-
this.highlight_resource( id );
232-
cls.ResourceDetailView.instance.show_resource(id);
238+
var uid = parent.getAttribute('data-resource-uid');
239+
this.highlight_resource(uid);
240+
cls.ResourceDetailView.instance.show_resource(uid);
233241
}.bind(this);
234242

235-
this.highlight_resource = function(id)
243+
this.highlight_resource = function(uid)
236244
{
237-
var list, i, e;
238-
if (this._selectedResourceID == id)
245+
var e;
246+
if (this._selectedResourceUID == uid)
239247
return;
240248

241-
if (this._selectedResourceID)
249+
if (this._selectedResourceUID)
242250
{
243-
list = document.querySelectorAll('*[data-resource-id="'+ this._selectedResourceID +'"]');
244-
for(i=0; e=list[i]; i++)
251+
e = document.querySelector('*[data-resource-uid="'+ this._selectedResourceUID +'"]');
252+
if (e)
245253
e.classList.remove('resource-highlight');
246254
}
247255

248-
this._selectedResourceID = id;
256+
this._selectedResourceUID = uid;
249257
if (this._context)
250-
this._context.selectedResourceID = id;
258+
this._context.selectedResourceUID = uid;
251259

252-
list = document.querySelectorAll('*[data-resource-id="'+ this._selectedResourceID +'"]');
253-
for(i=0; e=list[i]; i++)
260+
e = document.querySelector('*[data-resource-uid="'+ this._selectedResourceUID +'"]');
261+
if (e)
254262
e.classList.add('resource-highlight');
255263
}.bind(this);
256264

@@ -294,14 +302,15 @@ cls.ResourceManagerService = function(view, network_logger)
294302
this._reset = function()
295303
{
296304
this._context = null;
297-
this._selectedResourceID = null;
305+
this._selectedResourceUID = null;
298306

299307
this._documentList = [];
300308
this._documentURLHash = {};
301309
this._collapsedHash = {};
302310
this._documentResources = {};
303311

304312
this._suppress_updates = false;
313+
this._suppress_uids = {};
305314
this._view.update();
306315
};
307316

@@ -310,17 +319,17 @@ cls.ResourceManagerService = function(view, network_logger)
310319
return this._context;
311320
};
312321

313-
this.get_resource = function(id)
322+
this.get_resource = function(uid)
314323
{
315324
var ctx = this._context;
316325
if (!ctx)
317326
return null;
318327

319-
var resource = ctx.resourceList.filter(function(v){return v.id==id;});
328+
var resource = ctx.resourceList.filter(function(v){return v.uid==uid;});
320329
return resource && resource.last;
321330
};
322331

323-
this.get_resource_for_url = function(url)
332+
this.get_resource_by_url = function(url)
324333
{
325334
var ctx = this._context;
326335
if (!ctx)
@@ -330,16 +339,17 @@ cls.ResourceManagerService = function(view, network_logger)
330339
return resource && resource.last;
331340
};
332341

333-
this.request_resource = function(url, callback, data)
342+
this.request_resource_data = function(url, callback, data, resourceInfo)
334343
{
335344
this._suppress_updates = true;
336-
new cls.ResourceRequest(url, callback, data);
345+
this._suppress_updates_url = url;
346+
new cls.ResourceRequest(url, callback, data, resourceInfo);
337347
}
338348

339349
this._init();
340350
};
341351

342-
cls.ResourceRequest = function(url, callback, data)
352+
cls.ResourceRequest = function(url, callback, data, resourceInfo)
343353
{
344354
const
345355
SUCCESS = 0,
@@ -352,9 +362,10 @@ cls.ResourceRequest = function(url, callback, data)
352362

353363
var MAX_RETRIES = 3;
354364

355-
this._init = function(url, callback, data)
365+
this._init = function(url, callback, data, resourceInfo)
356366
{
357367
this.url = url;
368+
this.resourceInfo = resourceInfo;
358369
this._calback_data = data;
359370
this._callback = callback;
360371
this._retries = 0;
@@ -429,7 +440,11 @@ cls.ResourceRequest = function(url, callback, data)
429440

430441
// content -> mock a cls.NetworkLoggerEntry and instanciate a cls.ResourceInfo
431442
this.requests_responses = [{responsebody:resourceData}];
432-
this.resourceInfo = new cls.ResourceInfo(this);
443+
var resourceInfo = new cls.ResourceInfo(this);
444+
if(!this.resourceInfo)
445+
this.resourceInfo = resourceInfo;
446+
else
447+
this.resourceInfo.data = resourceInfo.data;
433448

434449
// broadcast that we got payload of the resource
435450
window.messages.post('resource-request-resource', {resource_id: this.resource_id});
@@ -449,7 +464,7 @@ cls.ResourceRequest = function(url, callback, data)
449464
this._fallback();
450465
}
451466

452-
this._init(url, callback, data);
467+
this._init(url, callback, data, resourceInfo);
453468
}
454469

455470
cls.ResourceRequest.prototype = new URIPrototype("url");

src/resource-manager/resource_templates.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,10 @@ templates.resource_tree =
223223
'style', 'margin-left:'+ (1+depth)*this.DEPTH_IDENTATION +'px;'
224224
],
225225
'handler','resource-detail',
226-
'data-resource-id',String(r.id),
226+
'data-resource-uid',String(r.uid),
227227
'class','resource-tree-resource'
228228
+(r.sameOrigin?'':' resource-different-origin')
229-
+(context.selectedResourceID==r.id?' resource-highlight':'')
229+
+(context.selectedResourceUID==r.uid?' resource-highlight':'')
230230
]
231231
];
232232

0 commit comments

Comments
 (0)