@@ -56,6 +56,7 @@ public class SafariOptions extends MutableCapabilities {
56
56
57
57
private interface Option {
58
58
String TECHNOLOGY_PREVIEW = "technologyPreview" ;
59
+ String TECH_PREVIEW = "se:safari:techPreview" ;
59
60
}
60
61
61
62
private Map <String , Object > options = new TreeMap <>();
@@ -120,13 +121,15 @@ public static SafariOptions fromCapabilities(Capabilities capabilities)
120
121
*/
121
122
public SafariOptions setUseTechnologyPreview (boolean useTechnologyPreview ) {
122
123
options .put (Option .TECHNOLOGY_PREVIEW , useTechnologyPreview );
123
- setCapability (BROWSER_NAME , useTechnologyPreview ? "Safari Technology Preview" : "safari" );
124
+ // Use an object here, rather than a boolean to avoid a stack overflow
125
+ super .setCapability (Option .TECH_PREVIEW , Boolean .valueOf (useTechnologyPreview ));
126
+ super .setCapability (BROWSER_NAME , useTechnologyPreview ? "Safari Technology Preview" : "safari" );
124
127
return this ;
125
128
}
126
129
127
130
@ Override
128
131
public void setCapability (String key , Object value ) {
129
- if (Option .TECHNOLOGY_PREVIEW .equals (key )) {
132
+ if (Option .TECHNOLOGY_PREVIEW .equals (key ) || Option . TECH_PREVIEW . equals ( key ) ) {
130
133
setUseTechnologyPreview (Boolean .valueOf (value .toString ()));
131
134
} else {
132
135
super .setCapability (key , value );
@@ -135,7 +138,7 @@ public void setCapability(String key, Object value) {
135
138
136
139
@ Override
137
140
public void setCapability (String key , boolean value ) {
138
- if (Option .TECHNOLOGY_PREVIEW .equals (key )) {
141
+ if (Option .TECHNOLOGY_PREVIEW .equals (key ) || Option . TECH_PREVIEW . equals ( key ) ) {
139
142
setUseTechnologyPreview (value );
140
143
} else {
141
144
super .setCapability (key , value );
@@ -150,7 +153,7 @@ public SafariOptions setProxy(Proxy proxy) {
150
153
// Getters
151
154
152
155
public boolean getUseTechnologyPreview () {
153
- return ( boolean ) options .getOrDefault (Option .TECHNOLOGY_PREVIEW , false ) ;
156
+ return is ( Option . TECH_PREVIEW )|| options .get (Option .TECHNOLOGY_PREVIEW ) == Boolean . TRUE ;
154
157
}
155
158
156
159
// (De)serialization of the options
@@ -163,9 +166,9 @@ public boolean getUseTechnologyPreview() {
163
166
private static SafariOptions fromJsonMap (Map <?, ?> options ) {
164
167
SafariOptions safariOptions = new SafariOptions ();
165
168
166
- Boolean useTechnologyPreview = ( Boolean ) options .get (Option .TECHNOLOGY_PREVIEW );
167
- if (useTechnologyPreview != null ) {
168
- safariOptions .setUseTechnologyPreview (useTechnologyPreview );
169
+ Object useTechnologyPreview = options .get (Option .TECHNOLOGY_PREVIEW );
170
+ if (useTechnologyPreview instanceof Boolean ) {
171
+ safariOptions .setUseTechnologyPreview (( Boolean ) useTechnologyPreview );
169
172
}
170
173
171
174
return safariOptions ;
0 commit comments