Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: lib/child/requestNotifier.js

Issue 29329839: Issue 3228 - Unbreak object tabs (Closed)
Left Patch Set: Created Nov. 6, 2015, 7:45 p.m.
Right Patch Set: Added comments Created Nov. 25, 2015, 10:49 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « lib/child/objectTabs.js ('k') | lib/contentPolicy.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2015 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 responseID, 89 responseID,
90 stats 90 stats
91 }); 91 });
92 } 92 }
93 } 93 }
94 94
95 /** 95 /**
96 * Creates a notifier object for a particular window. After creation the window 96 * Creates a notifier object for a particular window. After creation the window
97 * will first be scanned for previously saved requests. Once that scan is 97 * will first be scanned for previously saved requests. Once that scan is
98 * complete only new requests for this window will be reported. 98 * complete only new requests for this window will be reported.
99 * @param {Window} wnd window to attach the notifier to 99 * @param {Window} window window to attach the notifier to
100 * @param {Integer} id Parent notifier ID to be messaged 100 * @param {Integer} notifierID Parent notifier ID to be messaged
101 */ 101 */
102 function RequestNotifier(window, notifierID) 102 function RequestNotifier(window, notifierID)
103 { 103 {
104 this.window = window; 104 this.window = window;
105 this.id = notifierID; 105 this.id = notifierID;
106 notifiers.set(this.id, this); 106 notifiers.set(this.id, this);
107 this.nodes = new Map(); 107 this.nodes = new Map();
108 this.startScan(window); 108 this.startScan(window);
109 } 109 }
110 exports.RequestNotifier = RequestNotifier; 110 exports.RequestNotifier = RequestNotifier;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 * Starts the initial scan of the window (will recurse into frames). 171 * Starts the initial scan of the window (will recurse into frames).
172 * @param {Window} wnd the window to be scanned 172 * @param {Window} wnd the window to be scanned
173 */ 173 */
174 startScan: function(wnd) 174 startScan: function(wnd)
175 { 175 {
176 let doc = wnd.document; 176 let doc = wnd.document;
177 let walker = doc.createTreeWalker(doc, Ci.nsIDOMNodeFilter.SHOW_ELEMENT, nul l, false); 177 let walker = doc.createTreeWalker(doc, Ci.nsIDOMNodeFilter.SHOW_ELEMENT, nul l, false);
178 178
179 let process = function() 179 let process = function()
180 { 180 {
181 // Don't do anything if the notifier was shut down already.
181 if (!this.window) 182 if (!this.window)
182 return; 183 return;
183 184
184 let node = walker.currentNode; 185 let node = walker.currentNode;
185 let data = nodeData.get(node); 186 let data = nodeData.get(node);
186 if (typeof data != "undefined") 187 if (typeof data != "undefined")
187 for (let k in data) 188 for (let k in data)
188 this.notifyListener(node, data[k]); 189 this.notifyListener(node, data[k]);
189 190
190 if (walker.nextNode()) 191 if (walker.nextNode())
(...skipping 15 matching lines...) Expand all
206 207
207 // Process each node in a separate event to allow other events to process 208 // Process each node in a separate event to allow other events to process
208 this.eventsPosted++; 209 this.eventsPosted++;
209 Utils.runAsync(process); 210 Utils.runAsync(process);
210 }, 211 },
211 212
212 /** 213 /**
213 * Makes the nodes associated with the given requests blink. 214 * Makes the nodes associated with the given requests blink.
214 * @param {number[]} requests list of request IDs that were previously 215 * @param {number[]} requests list of request IDs that were previously
215 * reported by this notifier. 216 * reported by this notifier.
216 * @param {Boolean} scrollToItem if true, scroll to first node 217 * @param {boolean} scrollToItem if true, scroll to first node
217 */ 218 */
218 flashNodes: function(requests, scrollToItem) 219 flashNodes: function(requests, scrollToItem)
219 { 220 {
220 this.stopFlashing(); 221 this.stopFlashing();
221 222
222 let nodes = []; 223 let nodes = [];
223 for (let id of requests) 224 for (let id of requests)
224 { 225 {
225 if (!this.nodes.has(id)) 226 if (!this.nodes.has(id))
226 continue; 227 continue;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 responseID, 286 responseID,
286 size 287 size
287 }); 288 });
288 } 289 }
289 }; 290 };
290 291
291 /** 292 /**
292 * Attaches request data to a DOM node. 293 * Attaches request data to a DOM node.
293 * @param {Node} node node to attach data to 294 * @param {Node} node node to attach data to
294 * @param {Window} topWnd top-level window the node belongs to 295 * @param {Window} topWnd top-level window the node belongs to
295 * @param {String} contentType request type, e.g. "IMAGE" 296 * @param {Object} hitData
296 * @param {String} docDomain domain of the document that initiated the request 297 * @param {String} hitData.contentType request type, e.g. "IMAGE"
297 * @param {Boolean} thirdParty will be true if a third-party server has been re quested 298 * @param {String} hitData.docDomain domain of the document that initiated the request
298 * @param {String} location the address that has been requested 299 * @param {Boolean} hitData.thirdParty will be true if a third-party server has been requested
299 * @param {String} filter filter applied to the request or null if none 300 * @param {String} hitData.location the address that has been requested
300 * @param {String} filterType type of filter applied to the request 301 * @param {String} hitData.filter filter applied to the request or null if non e
302 * @param {String} hitData.filterType type of filter applied to the request
301 */ 303 */
302 RequestNotifier.addNodeData = function(node, topWnd, {contentType, docDomain, th irdParty, location, filter, filterType}) 304 RequestNotifier.addNodeData = function(node, topWnd, {contentType, docDomain, th irdParty, location, filter, filterType})
303 { 305 {
304 let entry = { 306 let entry = {
305 id: ++requestEntryMaxId, 307 id: ++requestEntryMaxId,
306 type: contentType, 308 type: contentType,
307 docDomain, thirdParty, location, filter 309 docDomain, thirdParty, location, filter
308 }; 310 };
309 311
310 let existingData = nodeData.get(node); 312 let existingData = nodeData.get(node);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 } 350 }
349 351
350 // Notify listeners 352 // Notify listeners
351 for (let notifier of notifiers.values()) 353 for (let notifier of notifiers.values())
352 if (!notifier.window || notifier.window == topWnd) 354 if (!notifier.window || notifier.window == topWnd)
353 notifier.notifyListener(node, entry); 355 notifier.notifyListener(node, entry);
354 } 356 }
355 357
356 /** 358 /**
357 * Retrieves the statistics for a window. 359 * Retrieves the statistics for a window.
358 * @result {Object} Object with the properties items, blocked, whitelisted, hidd en, filters containing statistics for the window (might be null) 360 * @return {Object} Object with the properties items, blocked, whitelisted, hidd en, filters containing statistics for the window (might be null)
359 */ 361 */
360 RequestNotifier.getWindowStatistics = function(/**Window*/ wnd) 362 RequestNotifier.getWindowStatistics = function(/**Window*/ wnd)
361 { 363 {
362 if (windowStats.has(wnd.document)) 364 if (windowStats.has(wnd.document))
363 return windowStats.get(wnd.document); 365 return windowStats.get(wnd.document);
364 else 366 else
365 return null; 367 return null;
366 } 368 }
367 369
368 /** 370 /**
369 * Retrieves the request data associated with a DOM node. 371 * Retrieves the request data associated with a DOM node.
370 * @param {Node} node 372 * @param {Node} node
371 * @param {Boolean} noParent if missing or false, the search will extend to the parent nodes until one is found that has data associated with it 373 * @param {Boolean} noParent if missing or false, the search will extend to the parent nodes until one is found that has data associated with it
372 * @param {Integer} [type] request type to be looking for 374 * @param {Integer} [type] request type to be looking for
373 * @param {String} [location] request location to be looking for 375 * @param {String} [location] request location to be looking for
374 * @result {[Node, Object]} 376 * @result {[Node, Object]}
375 * @static 377 * @static
376 */ 378 */
377 RequestNotifier.getDataForNode = function(node, noParent, type, location) 379 RequestNotifier.getDataForNode = function(node, noParent, type, location)
Wladimir Palant 2015/11/06 19:52:43 This function moved from lib/requestNotifier.js wi
378 { 380 {
379 while (node) 381 while (node)
380 { 382 {
381 let data = nodeData.get(node); 383 let data = nodeData.get(node);
382 if (typeof data != "undefined") 384 if (typeof data != "undefined")
383 { 385 {
384 let entry = null; 386 let entry = null;
385 // Look for matching entry 387 // Look for matching entry
386 for (let k in data) 388 for (let k in data)
387 { 389 {
(...skipping 15 matching lines...) Expand all
403 node = node.parentNode; 405 node = node.parentNode;
404 } 406 }
405 else 407 else
406 { 408 {
407 node = null; 409 node = null;
408 } 410 }
409 } 411 }
410 412
411 return null; 413 return null;
412 }; 414 };
LEFTRIGHT

Powered by Google App Engine
This is Rietveld