1 package test.com.sun.javafx.css; 2 3 4 import javafx.css.Declaration; 5 import javafx.css.Rule; 6 import javafx.css.Selector; 7 import com.sun.javafx.css.StyleManager; 8 import com.sun.javafx.css.StyleManager; 9 import javafx.css.Stylesheet; 10 import javafx.collections.FXCollections; 11 import javafx.collections.ObservableList; 12 import javafx.collections.ObservableSet; 13 import javafx.css.CssMetaData; 14 import javafx.css.PseudoClass; 15 import javafx.css.Styleable; 16 import javafx.scene.paint.Color; 17 import org.junit.Ignore; 18 import org.junit.Test; 19 20 import java.io.FilePermission; 21 import java.lang.reflect.ReflectPermission; 22 import java.net.URL; 23 import java.security.Permission; 24 import java.util.List; 25 import java.util.PropertyPermission; 26 27 import static org.junit.Assert.*; 28 import static org.junit.Assume.*; 29 30 /** 31 * Created by dgrieve on 9/17/14. 32 */ 33 public class StylesheetWithSecurityManagerTest { 34 35 static final Styleable styleable = new Styleable() { 36 @Override 37 public String getTypeSelector() { 38 return "*"; 39 } 40 41 @Override 42 public String getId() { 43 return null; 44 } 45 46 ObservableList<String> styleClasses = FXCollections.observableArrayList("root"); 47 @Override 48 public ObservableList<String> getStyleClass() { 49 return styleClasses; 50 } 51 52 @Override 53 public String getStyle() { 54 return null; 55 } 56 57 @Override 58 public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() { 59 return null; 60 } 61 62 @Override 63 public Styleable getStyleableParent() { 64 return null; 65 } 66 67 @Override 68 public ObservableSet<PseudoClass> getPseudoClassStates() { 69 return FXCollections.<PseudoClass>emptyObservableSet(); 70 } 71 }; 72 73 @Test 74 public void testRT_38395() throws Exception { 75 76 System.setSecurityManager(new TestSecurityManager()); 77 Stylesheet stylesheet = StyleManager.loadStylesheet("com/sun/javafx/scene/control/skin/modena/modena.css"); 78 assertNotNull(stylesheet); 79 80 Color base = null; 81 for(Rule rule : stylesheet.getRules()) { 82 for (Selector s : rule.getSelectors()) { 83 if (s.applies(styleable)) { 84 for(Declaration decl : rule.getDeclarations()) { 85 if ("-fx-base".equals(decl.getProperty())) { 86 base = (Color)decl.getParsedValue().convert(null); 87 } 88 } 89 } 90 } 91 } 92 assertNotNull(base); 93 Color expected = Color.web("#ececec"); 94 assertEquals(expected.getRed(), base.getGreen(), 1E-6); 95 assertEquals(expected.getGreen(), base.getGreen(), 1E-6); 96 assertEquals(expected.getBlue(), base.getBlue(), 1E-6); 97 } 98 99 @Test 100 public void testRT_38395_the_sequel() throws Exception { 101 102 System.setSecurityManager(new TestSecurityManager()); 103 Stylesheet stylesheet = StyleManager.loadStylesheet("test/com/sun/javafx/css/StylesheetTest.css"); 104 assertNotNull(stylesheet); 105 106 Color hoverBase = null; 107 for(Rule rule : stylesheet.getRules()) { 108 for (Selector s : rule.getSelectors()) { 109 if (s.applies(styleable)) { 110 for(Declaration decl : rule.getDeclarations()) { 111 if ("-fx-hover-base".equals(decl.getProperty())) { 112 hoverBase = (Color)decl.getParsedValue().convert(null); 113 } 114 } 115 } 116 } 117 } 118 assertNotNull(hoverBase); 119 assertEquals(Color.YELLOW.getRed(), hoverBase.getRed(), 1E-6); 120 assertEquals(Color.YELLOW.getGreen(), hoverBase.getGreen(), 1E-6); 121 assertEquals(Color.YELLOW.getBlue(), hoverBase.getBlue(), 1E-6); 122 } 123 124 // 125 // The code in URLConverter that this attempts to test only checks to see whether or not there is a SecurityManager. 126 // 127 static class TestSecurityManager extends SecurityManager { 128 @Override 129 public void checkPermission(Permission perm) { 130 return; 131 } 132 } 133 }