110 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
111 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
112 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
113
114 assertTrue(sm.platformUserAgentStylesheetContainers.size() == 2);
115
116 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
117 assertEquals(0,index);
118
119 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
120 assertEquals(1, index);
121
122 }
123
124 @Test
125 public void testSetDefaultUserAgentStyleshseet_String() {
126 StyleManager sm = StyleManager.getInstance();
127 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
128
129 int index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua0.css");
130 assertEquals(0,index);
131 }
132
133 @Test
134 public void testSetUserAgentStyleshseet_String_Multiple() {
135 StyleManager sm = StyleManager.getInstance();
136 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
137 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
138
139 assertTrue(sm.platformUserAgentStylesheetContainers.size() == 2);
140
141 int index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua0.css");
142 assertEquals(0,index);
143
144 index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua1.css");
145 assertEquals(1, index);
146 }
147
148 @Test
149 public void testSetUserAgentStyleshseet_String_Multiple2() {
150 StyleManager sm = StyleManager.getInstance();
274 @Test
275 public void testForgetParent() {
276
277 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
278
279 StyleManager sm = StyleManager.getInstance();
280 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
281
282 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
283 assertEquals(0,index);
284
285 sm.forget(scene.getRoot());
286
287 // forgetting the scene should not affect the platform user-agent stylesheets
288 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
289 assertEquals(0,index);
290
291 }
292
293 @Test
294 public void testForgetParent_withSceneUAStylesheet() {
295
296 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
297 scene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
298
299 StyleManager sm = StyleManager.getInstance();
300 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
301
302 // sm.findMatchingStyles(scene.getRoot(), null, null);
303
304 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
305 assertEquals(0,index);
306
307 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
308 assertEquals(-1, index);
309
310 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
311 assertEquals(0,index);
312
313 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
329 public void testForgetParent_withTwoScenes() {
330 Scene scene0 = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
331 scene0.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
332
333 Scene scene1 = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
334 scene1.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
335
336 StyleManager sm = StyleManager.getInstance();
337 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
338
339 // even though there are two scenes using this stylesheet, there should only be one container.
340 assertEquals(1, sm.userAgentStylesheetContainers.size());
341
342 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
343 assertEquals(0,index);
344
345 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
346 assertEquals(-1, index);
347
348 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
349 assertEquals(0,index);
350
351 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
352 assertEquals(-1, index);
353
354 sm.forget(scene0.getRoot());
355
356 // forgetting the scene should not affect the platform user-agent stylesheets
357 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
358 assertEquals(0,index);
359
360 // we should still have ua1.css since scene1 is still using it
361 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
362 assertEquals(0,index);
363
364 sm.forget(scene1.getRoot());
365
366 // only forgetting the scene should affect the platform user-agent stylesheets
367 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
368 assertEquals(0, index);
369 }
438 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
439 assertEquals(0,index);
440
441 sm.forget(scene);
442
443 // forgetting the scene should not affect the platform user-agent stylesheets
444 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
445 assertEquals(0,index);
446 }
447
448 @Test
449 public void testForgetScene_withUAStylesheet() {
450
451 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
452 scene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
453
454 StyleManager sm = StyleManager.getInstance();
455 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
456
457 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
458 assertEquals(0,index);
459
460 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
461 assertEquals(-1, index);
462
463 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
464 assertEquals(0,index);
465
466 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
467 assertEquals(-1, index);
468
469 sm.forget(scene);
470
471 // forgetting the scene should not affect the platform user-agent stylesheets
472 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
473 assertEquals(0,index);
474
475 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
476 assertEquals(-1, index);
477
478 }
534
535 sm.forget(subScene);
536
537 // forgetting the scene should not affect the platform user-agent stylesheets
538 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
539 assertEquals(0,index);
540 }
541
542 @Test
543 public void testForgetSubScene_withUAStylesheet() {
544
545 Pane subSceneRoot = new Pane(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
546 SubScene subScene = new SubScene(subSceneRoot, 100, 100);
547 subScene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
548 Scene scene = new Scene(new Group(subScene));
549
550 StyleManager sm = StyleManager.getInstance();
551 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
552
553 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
554 assertEquals(0,index);
555
556 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
557 assertEquals(-1, index);
558
559 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
560 assertEquals(0,index);
561
562 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
563 assertEquals(-1, index);
564
565 sm.forget(subScene);
566
567 // forgetting the scene should not affect the platform user-agent stylesheets
568 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
569 assertEquals(0,index);
570
571 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
572 assertEquals(-1, index);
573
574 }
871 public void testGetCacheContainer_subScene() {
872
873 SubScene subScene = new SubScene(null, 0, 0);
874
875 StyleManager sm = StyleManager.getInstance();
876
877 // no scene, should return null
878 StyleManager.CacheContainer container = sm.getCacheContainer(null, subScene);
879
880 assertNull(container);
881
882 // has scene, should return non-null
883 subScene.setRoot(new Group());
884 Scene scene = new Scene(new Group(subScene));
885 container = sm.getCacheContainer(null, subScene);
886
887 assertNotNull(container);
888
889 }
890
891 }
|
110 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
111 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
112 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
113
114 assertTrue(sm.platformUserAgentStylesheetContainers.size() == 2);
115
116 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
117 assertEquals(0,index);
118
119 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
120 assertEquals(1, index);
121
122 }
123
124 @Test
125 public void testSetDefaultUserAgentStyleshseet_String() {
126 StyleManager sm = StyleManager.getInstance();
127 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
128
129 int index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua0.css");
130 assertEquals(0, index);
131 }
132
133 @Test
134 public void testSetUserAgentStyleshseet_String_Multiple() {
135 StyleManager sm = StyleManager.getInstance();
136 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
137 sm.addUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
138
139 assertTrue(sm.platformUserAgentStylesheetContainers.size() == 2);
140
141 int index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua0.css");
142 assertEquals(0,index);
143
144 index = indexOf(sm.platformUserAgentStylesheetContainers, "/com/sun/javafx/css/ua1.css");
145 assertEquals(1, index);
146 }
147
148 @Test
149 public void testSetUserAgentStyleshseet_String_Multiple2() {
150 StyleManager sm = StyleManager.getInstance();
274 @Test
275 public void testForgetParent() {
276
277 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
278
279 StyleManager sm = StyleManager.getInstance();
280 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
281
282 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
283 assertEquals(0,index);
284
285 sm.forget(scene.getRoot());
286
287 // forgetting the scene should not affect the platform user-agent stylesheets
288 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
289 assertEquals(0,index);
290
291 }
292
293 @Test
294 public void testForgetParent_withStylesheets() {
295
296 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
297
298 StyleManager sm = StyleManager.getInstance();
299 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
300
301 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
302 assertEquals(0,index);
303
304 sm.forget(scene.getRoot());
305
306 // forgetting the scene should not affect the platform user-agent stylesheets
307 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
308 assertEquals(0,index);
309
310 }
311
312 @Test
313 public void testForgetParent_withSceneUAStylesheet() {
314
315 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
316 scene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
317
318 StyleManager sm = StyleManager.getInstance();
319 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
320
321 // sm.findMatchingStyles(scene.getRoot(), null, null);
322
323 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
324 assertEquals(0,index);
325
326 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
327 assertEquals(-1, index);
328
329 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
330 assertEquals(0,index);
331
332 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
348 public void testForgetParent_withTwoScenes() {
349 Scene scene0 = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
350 scene0.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
351
352 Scene scene1 = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
353 scene1.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
354
355 StyleManager sm = StyleManager.getInstance();
356 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
357
358 // even though there are two scenes using this stylesheet, there should only be one container.
359 assertEquals(1, sm.userAgentStylesheetContainers.size());
360
361 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
362 assertEquals(0,index);
363
364 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
365 assertEquals(-1, index);
366
367 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
368 assertEquals(0, index);
369
370 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
371 assertEquals(-1, index);
372
373 sm.forget(scene0.getRoot());
374
375 // forgetting the scene should not affect the platform user-agent stylesheets
376 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
377 assertEquals(0,index);
378
379 // we should still have ua1.css since scene1 is still using it
380 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
381 assertEquals(0,index);
382
383 sm.forget(scene1.getRoot());
384
385 // only forgetting the scene should affect the platform user-agent stylesheets
386 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
387 assertEquals(0, index);
388 }
457 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
458 assertEquals(0,index);
459
460 sm.forget(scene);
461
462 // forgetting the scene should not affect the platform user-agent stylesheets
463 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
464 assertEquals(0,index);
465 }
466
467 @Test
468 public void testForgetScene_withUAStylesheet() {
469
470 Scene scene = new Scene(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
471 scene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
472
473 StyleManager sm = StyleManager.getInstance();
474 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
475
476 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
477 assertEquals(0, index);
478
479 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
480 assertEquals(-1, index);
481
482 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
483 assertEquals(0,index);
484
485 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
486 assertEquals(-1, index);
487
488 sm.forget(scene);
489
490 // forgetting the scene should not affect the platform user-agent stylesheets
491 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
492 assertEquals(0,index);
493
494 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
495 assertEquals(-1, index);
496
497 }
553
554 sm.forget(subScene);
555
556 // forgetting the scene should not affect the platform user-agent stylesheets
557 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
558 assertEquals(0,index);
559 }
560
561 @Test
562 public void testForgetSubScene_withUAStylesheet() {
563
564 Pane subSceneRoot = new Pane(new Group(new Rectangle(){{ getStyleClass().add("rect"); }}));
565 SubScene subScene = new SubScene(subSceneRoot, 100, 100);
566 subScene.setUserAgentStylesheet("/com/sun/javafx/css/ua1.css");
567 Scene scene = new Scene(new Group(subScene));
568
569 StyleManager sm = StyleManager.getInstance();
570 sm.setDefaultUserAgentStylesheet("/com/sun/javafx/css/ua0.css");
571
572 int index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
573 assertEquals(0, index);
574
575 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
576 assertEquals(-1, index);
577
578 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
579 assertEquals(0,index);
580
581 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
582 assertEquals(-1, index);
583
584 sm.forget(subScene);
585
586 // forgetting the scene should not affect the platform user-agent stylesheets
587 index = indexOf(sm.platformUserAgentStylesheetContainers,"/com/sun/javafx/css/ua0.css");
588 assertEquals(0,index);
589
590 index = indexOf(sm.userAgentStylesheetContainers,"/com/sun/javafx/css/ua1.css");
591 assertEquals(-1, index);
592
593 }
890 public void testGetCacheContainer_subScene() {
891
892 SubScene subScene = new SubScene(null, 0, 0);
893
894 StyleManager sm = StyleManager.getInstance();
895
896 // no scene, should return null
897 StyleManager.CacheContainer container = sm.getCacheContainer(null, subScene);
898
899 assertNull(container);
900
901 // has scene, should return non-null
902 subScene.setRoot(new Group());
903 Scene scene = new Scene(new Group(subScene));
904 container = sm.getCacheContainer(null, subScene);
905
906 assertNotNull(container);
907
908 }
909
910 @Test
911 public void testRT_37025() {
912
913 //
914 // The issue in RT-37025 was that the stylesheet container wasn't getting removed even
915 // though the parent had been forgotten. The StyleManager#forget(Parent) method didn't
916 // look to see if _any_ stylesheet container had the parent as a reference.
917 //
918 final StyleManager sm = StyleManager.getInstance();
919
920 // This test needs a bit more complexity to the scene-graph
921 Group group = null;
922 Pane pane = new Pane(
923 new Group(
924 new Pane(
925 // I want these to be a Parent, not a Node
926 new Group(new Pane(){{ getStyleClass().add("rect"); }}),
927 group = new Group(new Pane(){{ getStyleClass().add("rect"); }})
928 )
929 )
930 );
931 pane.getStylesheets().add("/com/sun/javafx/css/ua0.css");
932 group.getStylesheets().add("/com/sun/javafx/css/ua1.css");
933
934 Group root = new Group(pane);
935 Scene scene = new Scene(root);
936
937 root.applyCss();
938
939 assertTrue(sm.stylesheetContainerMap.containsKey("/com/sun/javafx/css/ua0.css"));
940 StyleManager.StylesheetContainer container = sm.stylesheetContainerMap.get("/com/sun/javafx/css/ua0.css");
941 assertEquals(7, container.parentUsers.list.size());
942
943 assertTrue(sm.stylesheetContainerMap.containsKey("/com/sun/javafx/css/ua1.css"));
944 container = sm.stylesheetContainerMap.get("/com/sun/javafx/css/ua1.css");
945 assertEquals(2, container.parentUsers.list.size());
946
947 ((Pane)group.getParent()).getChildren().remove(group);
948
949 assertFalse(sm.stylesheetContainerMap.containsKey("/com/sun/javafx/css/ua1.css"));
950 assertTrue(sm.stylesheetContainerMap.containsKey("/com/sun/javafx/css/ua0.css"));
951 container = sm.stylesheetContainerMap.get("/com/sun/javafx/css/ua0.css");
952 assertEquals(5, container.parentUsers.list.size());
953
954 scene.setRoot(new Group());
955 assertFalse(sm.stylesheetContainerMap.containsKey("/com/sun/javafx/css/ua0.css"));
956 assertFalse(StyleManager.cacheContainerMap.containsKey(root));
957 assertTrue(StyleManager.cacheContainerMap.containsKey(scene.getRoot()));
958
959 }
960
961 }
|