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