/** * Changes problematic ip6 uris in StyleSheet per indexes before DOM object is serialized. * Indexes follow pattern "ipv6i0f", "ipv6i1f", ..., "ipv6iNf". * * @param styleSheet StyleSheet object representing a CSS DOM to extract ip6 explicit uris * @param ip6Uris List of Strings where ip6 uris will be stored */ public static void saveIp6Uris(CssTree.StyleSheet styleSheet, List<String> ip6Uris) { if (styleSheet == null || ip6Uris == null) { // This case should not happen return; } List<CssTree.UriLiteral> uris = descendants(styleSheet, CssTree.UriLiteral.class); for (CssTree.UriLiteral uri : uris) { String sUri = uri.getValue(); String ip6 = extractIp6(sUri); if (ip6 != null) { int count = ip6Uris.indexOf(ip6); if (count == -1) { ip6Uris.add(ip6); count = ip6Uris.size() - 1; } String index = "ipv6i" + count + "f"; uri.setValue(sUri.replace(ip6, index)); } } }
/** Serialize a stylesheet to a String */ public String serialize(CssTree.StyleSheet styleSheet) { List<String> ip6Uris = new ArrayList<String>(); CajaCssUtils.saveIp6Uris(styleSheet, ip6Uris); StringWriter writer = new StringWriter(); serialize(styleSheet, writer); return CajaCssUtils.restoreIp6Uris(writer.toString(), ip6Uris); }
@Test public void testBasicCssParse() throws Exception { String css = ".xyz { font : bold; } A { color : #7f7f7f }"; CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(css); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants(styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testBasicCssParse() throws Exception { String css = ".xyz { font : bold; } A { color : #7f7f7f }"; CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(css); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants(styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testBasicCssParse() throws Exception { String css = ".xyz { font : bold; } A { color : #7f7f7f }"; CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(css); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants(styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInIdent() throws Exception { String original = "li{list-style:none;.padding-bottom:4px;}"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInIdent() throws Exception { String original = "li{list-style:none;.padding-bottom:4px;}"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseNoLValue() throws Exception { String original = "body, input, td {\n" + " Arial, sans-serif;\n" + '}'; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInFunction() throws Exception { String original = ".iepngfix {behavior: expression(IEPNGFIX.fix(this)); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); } }
@Test public void testCajaParseCommentInContent() throws Exception { String original = "body { font : bold; } \n//A comment\n A { font : bold; }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseNoLValue() throws Exception { String original = "body, input, td {\n" + " Arial, sans-serif;\n" + '}'; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInFunction() throws Exception { String original = ".iepngfix {behavior: expression(IEPNGFIX.fix(this)); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); } }
@Test public void testCajaParseCommentInContent() throws Exception { String original = "body { font : bold; } \n//A comment\n A { font : bold; }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInIdent() throws Exception { String original = "li{list-style:none;.padding-bottom:4px;}"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseNoLValue() throws Exception { String original = "body, input, td {\n" + " Arial, sans-serif;\n" + '}'; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseCommentInContent() throws Exception { String original = "body { font : bold; } \n//A comment\n A { font : bold; }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(2, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseDotInFunction() throws Exception { String original = ".iepngfix {behavior: expression(IEPNGFIX.fix(this)); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); assertEquals(1, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); } }
@Test public void testCajaParseNoScheme() throws Exception { String original = "span { background-image:url('//www.example.org/image.gif'); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); // TODO: Remove with next caja update // This will break once Caja cloning works again assertEquals(1, selectorList.size()); // assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseNoScheme() throws Exception { String original = "span { background-image:url('//www.example.org/image.gif'); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); // TODO: Remove with next caja update // This will break once Caja cloning works again assertEquals(1, selectorList.size()); // assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }
@Test public void testCajaParseNoScheme() throws Exception { String original = "span { background-image:url('//www.example.org/image.gif'); }"; cajaCssParser.parseDom(original); CssTree.StyleSheet styleSheet = cajaCssParser.parseDom(original); List<CssTree.SimpleSelector> selectorList = CajaCssUtils.descendants( styleSheet, CssTree.SimpleSelector.class); // TODO: Remove with next caja update // This will break once Caja cloning works again assertEquals(1, selectorList.size()); // assertEquals(3, selectorList.size()); assertSame(CssTree.SimpleSelector.class, selectorList.get(0).getClass()); }