| 1816 | } |
| 1817 | |
| 1818 | static List<CSSStyleSheet> parseStyles(Elements styles) { |
| 1819 | List<CSSStyleSheet> sheets = new ArrayList<>(); |
| 1820 | for (Element style : styles) { |
| 1821 | if (BuildConfig.DEBUG) |
| 1822 | Log.i("Style=" + style.data()); |
| 1823 | try { |
| 1824 | InputSource source = new InputSource(new StringReader(style.data())); |
| 1825 | String media = style.attr("media"); |
| 1826 | if (!TextUtils.isEmpty(media)) |
| 1827 | source.setMedia(media); |
| 1828 | |
| 1829 | CSSOMParser parser = new CSSOMParser(new SACParserCSS3()); |
| 1830 | parser.setErrorHandler(new ErrorHandler() { |
| 1831 | @Override |
| 1832 | public void warning(CSSParseException ex) throws CSSException { |
| 1833 | Log.i("CSS warning=" + ex.getMessage()); |
| 1834 | } |
| 1835 | |
| 1836 | @Override |
| 1837 | public void error(CSSParseException ex) throws CSSException { |
| 1838 | Log.i("CSS error=" + ex.getMessage()); |
| 1839 | } |
| 1840 | |
| 1841 | @Override |
| 1842 | public void fatalError(CSSParseException ex) throws CSSException { |
| 1843 | Log.w(ex); |
| 1844 | } |
| 1845 | }); |
| 1846 | |
| 1847 | long start = new Date().getTime(); |
| 1848 | sheets.add(parser.parseStyleSheet(source, null, null)); |
| 1849 | long elapsed = new Date().getTime() - start; |
| 1850 | Log.i("Style parse=" + elapsed + " ms"); |
| 1851 | } catch (Throwable ex) { |
| 1852 | Log.w(ex); |
| 1853 | } |
| 1854 | } |
| 1855 | return sheets; |
| 1856 | } |
| 1857 | |
| 1858 | static String processStyles(Context context, String tag, String clazz, String style, List<CSSStyleSheet> sheets) { |
| 1859 | for (CSSStyleSheet sheet : sheets) |