| OLD | NEW | 
|---|
| 1 (function() | 1 "use strict"; | 
|  | 2 | 
| 2 { | 3 { | 
| 3   var filterClasses = require("filterClasses"); | 4   const {Filter, ElemHideFilter} = require("filterClasses"); | 
| 4   var Filter = filterClasses.Filter; | 5   const {escapeCSS, quoteCSS} = require("filterComposer"); | 
| 5   var ElemHideFilter = filterClasses.ElemHideFilter; |  | 
| 6 |  | 
| 7   var filterComposer = require("filterComposer"); |  | 
| 8   var escapeCSS = filterComposer.escapeCSS; |  | 
| 9   var quoteCSS = filterComposer.quoteCSS; |  | 
| 10 | 6 | 
| 11   module("CSS escaping"); | 7   module("CSS escaping"); | 
| 12 | 8 | 
| 13   test("CSS escaping", function() | 9   test("CSS escaping", () => | 
| 14   { | 10   { | 
| 15     function testSelector(opts) | 11     function testSelector(opts) | 
| 16     { | 12     { | 
| 17       var mustMatch = opts.mustMatch !== false; | 13       let mustMatch = opts.mustMatch !== false; | 
| 18       var doc = document.implementation.createHTMLDocument(); | 14       let doc = document.implementation.createHTMLDocument(); | 
| 19 | 15 | 
| 20       var style = doc.createElement("style"); | 16       let style = doc.createElement("style"); | 
| 21       doc.documentElement.appendChild(style); | 17       doc.documentElement.appendChild(style); | 
| 22       style.sheet.insertRule(opts.selector + " {}", 0); | 18       style.sheet.insertRule(opts.selector + " {}", 0); | 
| 23 | 19 | 
| 24       var element; | 20       let element; | 
| 25       try | 21       try | 
| 26       { | 22       { | 
| 27         element = doc.createElement(opts.tagName || "div"); | 23         element = doc.createElement(opts.tagName || "div"); | 
| 28       } | 24       } | 
| 29       catch (e) | 25       catch (e) | 
| 30       { | 26       { | 
| 31         // Some characters we are going to test can not occur in tag names, | 27         // Some characters we are going to test can not occur in tag names, | 
| 32         // but we still have to make sure that no exception is thrown when | 28         // but we still have to make sure that no exception is thrown when | 
| 33         // calling .querySelector() and .insertRule() | 29         // calling .querySelector() and .insertRule() | 
| 34         element = null; | 30         element = null; | 
| 35         mustMatch = false; | 31         mustMatch = false; | 
| 36       } | 32       } | 
| 37 | 33 | 
| 38       if (element) | 34       if (element) | 
| 39       { | 35       { | 
| 40         for (var attr in opts.attributes) | 36         for (let attr in opts.attributes) | 
| 41           element.setAttribute(attr, opts.attributes[attr]); | 37           element.setAttribute(attr, opts.attributes[attr]); | 
| 42 | 38 | 
| 43         doc.documentElement.appendChild(element); | 39         doc.documentElement.appendChild(element); | 
| 44       } | 40       } | 
| 45 | 41 | 
| 46       var foundElement = doc.querySelector(opts.selector); | 42       let foundElement = doc.querySelector(opts.selector); | 
| 47       var filter = Filter.fromText("##" + opts.selector); | 43       let filter = Filter.fromText("##" + opts.selector); | 
| 48 | 44 | 
| 49       if (!(filter instanceof ElemHideFilter)) | 45       if (!(filter instanceof ElemHideFilter)) | 
| 50       { | 46       { | 
| 51         ok(false, opts.selector + " (not allowed in elemhide filters)"); | 47         ok(false, opts.selector + " (not allowed in elemhide filters)"); | 
| 52       } | 48       } | 
| 53       else | 49       else | 
| 54       { | 50       { | 
| 55         if (mustMatch) | 51         if (mustMatch) | 
| 56           equal(foundElement, element, opts.selector); | 52           equal(foundElement, element, opts.selector); | 
| 57         else | 53         else | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 80         // is thrown when calling .querySelector() and .insertRule() | 76         // is thrown when calling .querySelector() and .insertRule() | 
| 81         mustMatch: !/\s/.test(s) | 77         mustMatch: !/\s/.test(s) | 
| 82       }); | 78       }); | 
| 83 | 79 | 
| 84       testSelector({ | 80       testSelector({ | 
| 85         selector: "[foo=" + quoteCSS(s) + "]", | 81         selector: "[foo=" + quoteCSS(s) + "]", | 
| 86         attributes: {foo: s} | 82         attributes: {foo: s} | 
| 87       }); | 83       }); | 
| 88     } | 84     } | 
| 89 | 85 | 
| 90     for (var i = 1; i < 0x80; i++) | 86     for (let i = 1; i < 0x80; i++) | 
| 91     { | 87     { | 
| 92       var chr = String.fromCharCode(i); | 88       let chr = String.fromCharCode(i); | 
| 93 | 89 | 
| 94       // Make sure that all ASCII characters are correctly escaped. | 90       // Make sure that all ASCII characters are correctly escaped. | 
| 95       testEscape(chr); | 91       testEscape(chr); | 
| 96 | 92 | 
| 97       // Some characters are only escaped when in the first positon, | 93       // Some characters are only escaped when in the first positon, | 
| 98       // so we still have to make sure that everything is correctly escaped | 94       // so we still have to make sure that everything is correctly escaped | 
| 99       // in subsequent positions. | 95       // in subsequent positions. | 
| 100       testEscape("x" + chr); | 96       testEscape("x" + chr); | 
| 101 | 97 | 
| 102       // Leading dashes must be escaped, when followed by certain characters. | 98       // Leading dashes must be escaped, when followed by certain characters. | 
| 103       testEscape("-" + chr); | 99       testEscape("-" + chr); | 
| 104     } | 100     } | 
| 105 | 101 | 
| 106     // Test some non-ASCII characters. However, those shouldn't require escaping
     . | 102     // Test some non-ASCII characters. However, those shouldn't require escaping
     . | 
| 107     testEscape("\uD83D\uDE3B\u2665\u00E4"); | 103     testEscape("\uD83D\uDE3B\u2665\u00E4"); | 
| 108   }); | 104   }); | 
| 109 })(); | 105 } | 
| OLD | NEW | 
|---|