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

Delta Between Two Patch Sets: include.preload.js

Issue 29710595: Issue 6433 - Use generators in getURLsFromElement (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Left Patch Set: Minor changes Created Feb. 28, 2018, 8:55 p.m.
Right Patch Set: Refactor (fixed) Created March 1, 2018, 9:37 a.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 | « no previous file | no next file » | 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-present eyeo GmbH 3 * Copyright (C) 2006-present 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 17 matching lines...) Expand all
28 ["input", "IMAGE"], 28 ["input", "IMAGE"],
29 ["picture", "IMAGE"], 29 ["picture", "IMAGE"],
30 ["audio", "MEDIA"], 30 ["audio", "MEDIA"],
31 ["video", "MEDIA"], 31 ["video", "MEDIA"],
32 ["frame", "SUBDOCUMENT"], 32 ["frame", "SUBDOCUMENT"],
33 ["iframe", "SUBDOCUMENT"], 33 ["iframe", "SUBDOCUMENT"],
34 ["object", "OBJECT"], 34 ["object", "OBJECT"],
35 ["embed", "OBJECT"] 35 ["embed", "OBJECT"]
36 ]); 36 ]);
37 37
38 function* getURLsFromObjectElement(element) 38 function* getURLsFromObjectParamChildren({children: [...children]})
39 { 39 {
40 const paramNames = [ 40 const names = [
41 "movie", // Adobe Flash 41 "movie", // Adobe Flash
42 "source", // Silverlight 42 "source", // Silverlight
43 "src", // Real Media + Quicktime 43 "src", // Real Media + Quicktime
44 "FileName" // Windows Media 44 "FileName" // Windows Media
45 ]; 45 ];
46 46
47 let param = children.find(
48 child => child.localName == "param" &&
49 names.includes(child.getAttribute("name")) &&
50 child.getAttribute("value")
51 );
52
53 if (param)
54 yield param.getAttribute("value");
55 }
56
57 function* getURLsFromObjectElement(element)
58 {
47 let data = element.getAttribute("data"); 59 let data = element.getAttribute("data");
48 if (data) 60 if (data)
49 {
50 yield data; 61 yield data;
51 return; 62 else
52 } 63 yield* getURLsFromObjectParamChildren(element);
53 64 }
54 let param = [...element.children].find( 65
55 child => child.localName == "param" && 66 function* getURLsFromMediaSourceChildren({children: [...children]})
56 paramNames.includes(child.getAttribute("name")) && 67 {
57 child.getAttribute("value") 68 let sources = children.filter(
58 );
59
60 if (param)
61 yield param.getAttribute("value");
62 }
63
64 function* getURLsFromAttributes({src, srcset = ""})
65 {
66 yield src;
67
68 yield* srcset.split(",").map(url => url.trim().replace(/\s+\S+$/, ""));
69 }
70
71 function* getURLsFromMediaElement(element)
72 {
73 yield* getURLsFromAttributes(element);
74
75 let sources = [...element.children].filter(
76 ({localName}) => ["source", "track"].includes(localName) 69 ({localName}) => ["source", "track"].includes(localName)
77 ); 70 );
78 71
79 for (let urls of sources.map(getURLsFromAttributes)) 72 for (let source of sources)
80 yield* urls; 73 yield* getURLsFromAttributes(source);
74 }
75
76 function* getURLsFromMediaElement(element)
77 {
78 yield* getURLsFromAttributes(element);
79 yield* getURLsFromMediaSourceChildren(element);
81 80
82 yield element.poster; 81 yield element.poster;
82 }
83
84 function* getURLsFromAttributes({src, srcset = ""})
85 {
86 yield src;
87
88 yield* srcset.split(",").map(url => url.trim().replace(/\s+\S+$/, ""));
83 } 89 }
84 90
85 function getURLsFromElement(element) 91 function getURLsFromElement(element)
86 { 92 {
87 let urls = null; 93 let urls = null;
88 94
89 let {localName} = element; 95 let {localName} = element;
90 96
91 if (localName == "object") 97 if (localName == "object")
92 urls = getURLsFromObjectElement(element); 98 urls = getURLsFromObjectElement(element);
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 let element = event.target; 513 let element = event.target;
508 if (/^i?frame$/.test(element.localName)) 514 if (/^i?frame$/.test(element.localName))
509 checkCollapse(element); 515 checkCollapse(element);
510 }, true); 516 }, true);
511 } 517 }
512 518
513 window.checkCollapse = checkCollapse; 519 window.checkCollapse = checkCollapse;
514 window.elemhide = elemhide; 520 window.elemhide = elemhide;
515 window.typeMap = typeMap; 521 window.typeMap = typeMap;
516 window.getURLsFromElement = getURLsFromElement; 522 window.getURLsFromElement = getURLsFromElement;
LEFTRIGHT
« no previous file | no next file » | Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Toggle Comments ('s')

Powered by Google App Engine
This is Rietveld