41
41
import java .nio .file .Paths ;
42
42
import java .time .Instant ;
43
43
import java .util .ArrayList ;
44
+ import java .util .Collection ;
44
45
import java .util .Collections ;
45
46
import java .util .List ;
46
47
import java .util .Locale ;
81
82
import org .junit .Rule ;
82
83
import org .junit .Test ;
83
84
import org .junit .rules .TestName ;
85
+ import org .junit .runner .RunWith ;
84
86
import org .junit .runners .MethodSorters ;
87
+ import org .junit .runners .Parameterized ;
88
+ import org .junit .runners .Parameterized .Parameters ;
85
89
86
90
/**
87
91
* Automated Test Suite for class org.eclipse.swt.browser.Browser
88
92
*
89
93
* @see org.eclipse.swt.browser.Browser
90
94
*/
95
+ @ RunWith (Parameterized .class )
91
96
@ FixMethodOrder (MethodSorters .NAME_ASCENDING )
92
97
public class Test_org_eclipse_swt_browser_Browser extends Test_org_eclipse_swt_widgets_Composite {
93
98
@@ -132,6 +137,24 @@ private void testLogAppend(String msg) {
132
137
boolean ignoreNonDisposedShells ;
133
138
static List <String > descriptors = new ArrayList <>();
134
139
140
+ private final int swtBrowserSettings ;
141
+
142
+ @ Parameters (name = "browser flags: {0}" )
143
+ public static Collection <Object []> browserFlagsToTest () {
144
+ List <Object []> browserFlags = new ArrayList <>();
145
+ if (SwtTestUtil .isWindows ) {
146
+ // NOTE: This is currently disabled due to test issues in the CI
147
+ // Execute Edge tests first, because IE starts some OS timer that conflicts with Edge event handling
148
+ // browserFlags.add(0, new Object[] {SWT.EDGE});
149
+ }
150
+ browserFlags .add (new Object [] {SWT .NONE });
151
+ return browserFlags ;
152
+ }
153
+
154
+ public Test_org_eclipse_swt_browser_Browser (int swtBrowserSettings ) {
155
+ this .swtBrowserSettings = swtBrowserSettings ;
156
+ }
157
+
135
158
@ Override
136
159
@ Before
137
160
public void setUp () {
@@ -147,7 +170,7 @@ public void setUp() {
147
170
System .out .println ("Running Test_org_eclipse_swt_browser_Browser#" + name .getMethodName ());
148
171
149
172
shell .setLayout (new FillLayout ());
150
- browser = createBrowser (shell , SWT . NONE );
173
+ browser = createBrowser (shell , swtBrowserSettings );
151
174
152
175
isEdge = browser .getBrowserType ().equals ("edge" );
153
176
@@ -249,8 +272,12 @@ private int reportOpenedDescriptors() {
249
272
}
250
273
251
274
private Browser createBrowser (Shell s , int flags ) {
275
+ long maximumBrowserCreationMilliseconds = 10_000 ;
276
+ long createStartTime = System .currentTimeMillis ();
252
277
Browser b = new Browser (s , flags );
253
278
createdBroswers .add (b );
279
+ long createDuration = System .currentTimeMillis () - createStartTime ;
280
+ assertTrue ("creating browser took too long: " + createDuration + "ms" , createDuration < maximumBrowserCreationMilliseconds );
254
281
return b ;
255
282
}
256
283
@@ -259,12 +286,12 @@ private Browser createBrowser(Shell s, int flags) {
259
286
*/
260
287
@ Override
261
288
public void test_ConstructorLorg_eclipse_swt_widgets_CompositeI () {
262
- Browser browser = createBrowser (shell , SWT . NONE );
289
+ Browser browser = createBrowser (shell , swtBrowserSettings );
263
290
browser .dispose ();
264
- browser = createBrowser (shell , SWT .BORDER );
291
+ browser = createBrowser (shell , SWT .BORDER | swtBrowserSettings );
265
292
// System.out.println("Test_org_eclipse_swt_browser_Browser#test_Constructor*#getBrowserType(): " + browser.getBrowserType());
266
293
browser .dispose ();
267
- assertThrows (IllegalArgumentException .class , () -> createBrowser (null , SWT . NONE ));
294
+ assertThrows (IllegalArgumentException .class , () -> createBrowser (null , swtBrowserSettings ));
268
295
}
269
296
270
297
/**
@@ -275,7 +302,7 @@ public void test_Constructor_asyncParentDisposal() {
275
302
Display .getCurrent ().asyncExec (() -> {
276
303
shell .dispose ();
277
304
});
278
- Browser browser = createBrowser (shell , SWT . EDGE );
305
+ Browser browser = createBrowser (shell , swtBrowserSettings );
279
306
assertFalse (browser .isDisposed ());
280
307
}
281
308
@@ -448,7 +475,7 @@ public void test_getChildren() {
448
475
public void test_CloseWindowListener_closeShell () {
449
476
Display display = Display .getCurrent ();
450
477
Shell shell = new Shell (display );
451
- Browser browser = createBrowser (shell , SWT . NONE );
478
+ Browser browser = createBrowser (shell , swtBrowserSettings );
452
479
browser .addCloseWindowListener (event -> {}); // shouldn't throw
453
480
shell .close ();
454
481
}
@@ -487,7 +514,7 @@ public void test_CloseWindowListener_close () {
487
514
public void test_LocationListener_adapter_closeShell () {
488
515
Display display = Display .getCurrent ();
489
516
Shell shell = new Shell (display );
490
- Browser browser = createBrowser (shell , SWT . NONE );
517
+ Browser browser = createBrowser (shell , swtBrowserSettings );
491
518
LocationAdapter adapter = new LocationAdapter () {};
492
519
browser .addLocationListener (adapter ); // shouldn't throw
493
520
shell .close ();
@@ -526,9 +553,9 @@ public void test_LocationListener_changing() {
526
553
boolean passed = waitForPassCondition (changingFired ::get );
527
554
assertTrue ("LocationListener.changing() event was never fired" , passed );
528
555
}
556
+
529
557
@ Test
530
558
public void test_LocationListener_changed () {
531
-
532
559
AtomicBoolean changedFired = new AtomicBoolean (false );
533
560
browser .addLocationListener (changedAdapter (e -> changedFired .set (true )));
534
561
shell .open ();
@@ -737,7 +764,7 @@ public void test_LocationListener_ProgressListener_noExtraEvents() {
737
764
public void test_OpenWindowListener_closeShell () {
738
765
Display display = Display .getCurrent ();
739
766
Shell shell = new Shell (display );
740
- Browser browser = createBrowser (shell , SWT . NONE );
767
+ Browser browser = createBrowser (shell , swtBrowserSettings );
741
768
browser .addOpenWindowListener (event -> {});
742
769
shell .close ();
743
770
}
@@ -762,7 +789,7 @@ public void test_OpenWindowListener_addAndRemove() {
762
789
@ Test
763
790
public void test_OpenWindowListener_openHasValidEventDetails () {
764
791
AtomicBoolean openFiredCorrectly = new AtomicBoolean (false );
765
- final Browser browserChild = createBrowser (shell , SWT . None );
792
+ final Browser browserChild = createBrowser (shell , swtBrowserSettings );
766
793
browser .addOpenWindowListener (event -> {
767
794
assertSame ("Expected Browser1 instance, but have another instance" , browser , event .widget );
768
795
assertNull ("Expected event.browser to be null" , event .browser );
@@ -786,7 +813,7 @@ public void test_OpenWindowListener_open_ChildPopup() {
786
813
Shell childShell = new Shell (shell , SWT .None );
787
814
childShell .setText ("Child shell" );
788
815
childShell .setLayout (new FillLayout ());
789
- final Browser browserChild = createBrowser (childShell , SWT . NONE );
816
+ final Browser browserChild = createBrowser (childShell , swtBrowserSettings );
790
817
791
818
browser .addOpenWindowListener (event -> {
792
819
event .browser = browserChild ;
@@ -816,15 +843,14 @@ public void test_OpenWindowListener_open_ChildPopup() {
816
843
/** Validate event order : Child's visibility should come before progress completed event */
817
844
@ Test
818
845
public void test_OpenWindow_Progress_Listener_ValidateEventOrder () {
819
-
820
846
AtomicBoolean windowOpenFired = new AtomicBoolean (false );
821
847
AtomicBoolean childCompleted = new AtomicBoolean (false );
822
848
AtomicBoolean visibilityShowed = new AtomicBoolean (false );
823
849
824
850
Shell childShell = new Shell (shell , SWT .None );
825
851
childShell .setText ("Child shell" );
826
852
childShell .setLayout (new FillLayout ());
827
- final Browser browserChild = createBrowser (childShell , SWT . NONE );
853
+ final Browser browserChild = createBrowser (childShell , swtBrowserSettings );
828
854
829
855
browser .addOpenWindowListener (event -> {
830
856
event .browser = browserChild ;
@@ -874,7 +900,7 @@ public void test_ProgressListener_newProgressAdapter() {
874
900
public void test_ProgressListener_newProgressAdapter_closeShell () {
875
901
Display display = Display .getCurrent ();
876
902
Shell shell = new Shell (display );
877
- Browser browser = createBrowser (shell , SWT . NONE );
903
+ Browser browser = createBrowser (shell , swtBrowserSettings );
878
904
browser .addProgressListener (new ProgressAdapter () {});
879
905
shell .close ();
880
906
}
@@ -883,7 +909,7 @@ public void test_ProgressListener_newProgressAdapter_closeShell() {
883
909
public void test_ProgressListener_newListener_closeShell () {
884
910
Display display = Display .getCurrent ();
885
911
Shell shell = new Shell (display );
886
- Browser browser = createBrowser (shell , SWT . NONE );
912
+ Browser browser = createBrowser (shell , swtBrowserSettings );
887
913
browser .addProgressListener (new ProgressListener () {
888
914
@ Override
889
915
public void changed (ProgressEvent event ) {
@@ -980,13 +1006,13 @@ public void test_StatusTextListener_addAndRemove() {
980
1006
*/
981
1007
@ Test
982
1008
public void test_StatusTextListener_hoverMouseOverLink () {
983
- assumeFalse (isEdge ); // no API in Edge for this
1009
+ assumeFalse (" no API in Edge for this" , isEdge );
984
1010
985
1011
AtomicBoolean statusChanged = new AtomicBoolean (false );
986
1012
int size = 500 ;
987
1013
988
1014
// 1) Create a page that has a hyper link (covering the whole page)
989
- Browser browser = createBrowser (shell , SWT . NONE );
1015
+ Browser browser = createBrowser (shell , swtBrowserSettings );
990
1016
StringBuilder longhtml = new StringBuilder ();
991
1017
for (int i = 0 ; i < 200 ; i ++) {
992
1018
longhtml .append ("text text text text text text text text text text text text text text text text text text text text text text text text<br>" );
@@ -1026,7 +1052,7 @@ public void test_StatusTextListener_hoverMouseOverLink() {
1026
1052
public void test_TitleListener_addListener_closeShell () {
1027
1053
Display display = Display .getCurrent ();
1028
1054
Shell shell = new Shell (display );
1029
- Browser browser = createBrowser (shell , SWT . NONE );
1055
+ Browser browser = createBrowser (shell , swtBrowserSettings );
1030
1056
browser .addTitleListener (event -> {
1031
1057
});
1032
1058
shell .close ();
@@ -1205,7 +1231,7 @@ public void test_VisibilityWindowListener_newAdapter() {
1205
1231
public void test_VisibilityWindowListener_newAdapter_closeShell () {
1206
1232
Display display = Display .getCurrent ();
1207
1233
Shell shell = new Shell (display );
1208
- Browser browser = createBrowser (shell , SWT . NONE );
1234
+ Browser browser = createBrowser (shell , swtBrowserSettings );
1209
1235
browser .addVisibilityWindowListener (new VisibilityWindowAdapter (){});
1210
1236
shell .close ();
1211
1237
}
@@ -1214,7 +1240,7 @@ public void test_VisibilityWindowListener_newAdapter_closeShell() {
1214
1240
public void test_VisibilityWindowListener_newListener_closeShell () {
1215
1241
Display display = Display .getCurrent ();
1216
1242
Shell shell = new Shell (display );
1217
- Browser browser = createBrowser (shell , SWT . NONE );
1243
+ Browser browser = createBrowser (shell , swtBrowserSettings );
1218
1244
browser .addVisibilityWindowListener (new VisibilityWindowListener () {
1219
1245
@ Override
1220
1246
public void hide (WindowEvent event ) {
@@ -1260,7 +1286,7 @@ public void test_VisibilityWindowListener_multiple_shells() {
1260
1286
Shell childShell = new Shell (shell );
1261
1287
childShell .setText ("Child shell " + childCount .get ());
1262
1288
childShell .setLayout (new FillLayout ());
1263
- Browser browserChild = createBrowser (childShell , SWT . NONE );
1289
+ Browser browserChild = createBrowser (childShell , swtBrowserSettings );
1264
1290
event .browser = browserChild ;
1265
1291
browserChild .setText ("Child window" );
1266
1292
browserChild .addVisibilityWindowListener (new VisibilityWindowAdapter () {
@@ -1319,7 +1345,7 @@ public void test_VisibilityWindowListener_eventSize() {
1319
1345
childShell .setSize (250 , 350 );
1320
1346
childShell .setText ("Child shell" );
1321
1347
childShell .setLayout (new FillLayout ());
1322
- final Browser browserChild = createBrowser (childShell , SWT . NONE );
1348
+ final Browser browserChild = createBrowser (childShell , swtBrowserSettings );
1323
1349
1324
1350
browser .addOpenWindowListener (event -> {
1325
1351
event .browser = browserChild ;
@@ -1439,7 +1465,7 @@ public void test_setJavascriptEnabled_multipleInstances() {
1439
1465
AtomicBoolean instanceTwoFinishedCorrectly = new AtomicBoolean (false );
1440
1466
1441
1467
1442
- Browser browserSecondInsance = createBrowser (shell , SWT . None );
1468
+ Browser browserSecondInsance = createBrowser (shell , swtBrowserSettings );
1443
1469
1444
1470
browser .addProgressListener (completedAdapter (event -> {
1445
1471
if (pageLoadCount .get () == 1 ) {
@@ -2511,8 +2537,8 @@ public Object function(Object[] arguments) {
2511
2537
@ Test
2512
2538
public void test_BrowserFunction_multiprocess () {
2513
2539
// Test that BrowserFunctions work in multiple Browser instances simultaneously.
2514
- Browser browser1 = createBrowser (shell , SWT . NONE );
2515
- Browser browser2 = createBrowser (shell , SWT . NONE );
2540
+ Browser browser1 = createBrowser (shell , swtBrowserSettings );
2541
+ Browser browser2 = createBrowser (shell , swtBrowserSettings );
2516
2542
2517
2543
class JavaFunc extends BrowserFunction {
2518
2544
JavaFunc (Browser browser ) {
0 commit comments