@@ -56,6 +56,7 @@ public class SafariOptions extends MutableCapabilities {
5656
5757 private interface Option {
5858 String TECHNOLOGY_PREVIEW = "technologyPreview" ;
59+ String TECH_PREVIEW = "se:safari:techPreview" ;
5960 }
6061
6162 private Map <String , Object > options = new TreeMap <>();
@@ -120,13 +121,15 @@ public static SafariOptions fromCapabilities(Capabilities capabilities)
120121 */
121122 public SafariOptions setUseTechnologyPreview (boolean useTechnologyPreview ) {
122123 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" );
124127 return this ;
125128 }
126129
127130 @ Override
128131 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 ) ) {
130133 setUseTechnologyPreview (Boolean .valueOf (value .toString ()));
131134 } else {
132135 super .setCapability (key , value );
@@ -135,7 +138,7 @@ public void setCapability(String key, Object value) {
135138
136139 @ Override
137140 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 ) ) {
139142 setUseTechnologyPreview (value );
140143 } else {
141144 super .setCapability (key , value );
@@ -150,7 +153,7 @@ public SafariOptions setProxy(Proxy proxy) {
150153 // Getters
151154
152155 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 ;
154157 }
155158
156159 // (De)serialization of the options
@@ -163,9 +166,9 @@ public boolean getUseTechnologyPreview() {
163166 private static SafariOptions fromJsonMap (Map <?, ?> options ) {
164167 SafariOptions safariOptions = new SafariOptions ();
165168
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 );
169172 }
170173
171174 return safariOptions ;
0 commit comments