@@ -117,28 +117,14 @@ public static final class SystemProperty {
117117
118118 protected FirefoxBinary binary ;
119119
120- public FirefoxDriver (FirefoxOptions options ) {
121- this (toExecutor (options ), options .toDesiredCapabilities (), options .toRequiredCapabilities ());
122- }
123-
124- private static CommandExecutor toExecutor (FirefoxOptions options ) {
125- if (options .isLegacy ()) {
126- return new FirefoxDriver .LazyCommandExecutor (options .getBinary (), options .getProfile ());
127-
128- } else {
129- GeckoDriverService .Builder builder = new GeckoDriverService .Builder ().usingPort (0 );
130- Optional <FirefoxBinary > binary = options .getBinaryOrNull ();
131- if (binary .isPresent ()) {
132- builder .usingFirefoxBinary (binary .get ());
133- }
134- return new DriverCommandExecutor (builder .build ());
135- }
136- }
137-
138120 public FirefoxDriver () {
139121 this (new FirefoxOptions ());
140122 }
141123
124+ public FirefoxDriver (FirefoxOptions options ) {
125+ this (toExecutor (options ), options .toDesiredCapabilities (), options .toRequiredCapabilities ());
126+ }
127+
142128 /**
143129 * @deprecated Prefer {@link FirefoxOptions#setBinary(FirefoxBinary)}.
144130 */
@@ -164,35 +150,9 @@ public FirefoxDriver(Capabilities desiredCapabilities) {
164150 this (getFirefoxOptions (desiredCapabilities ).addDesiredCapabilities (desiredCapabilities ));
165151 }
166152
167- private static FirefoxOptions getFirefoxOptions (Capabilities capabilities ) {
168- FirefoxOptions options = new FirefoxOptions ();
169-
170- if (capabilities == null ) {
171- return options ;
172- }
173-
174- Object rawOptions = capabilities .getCapability (FIREFOX_OPTIONS );
175- if (rawOptions != null ) {
176- if (rawOptions instanceof Map ) {
177- try {
178- @ SuppressWarnings ("unchecked" )
179- Map <String , Object > map = (Map <String , Object >) rawOptions ;
180- rawOptions = FirefoxOptions .fromJsonMap (map );
181- } catch (IOException e ) {
182- throw new WebDriverException (e );
183- }
184- }
185- if (rawOptions != null && !(rawOptions instanceof FirefoxOptions )) {
186- throw new WebDriverException (
187- "Firefox option was set, but is not a FirefoxOption: " + rawOptions );
188- }
189- options = (FirefoxOptions ) rawOptions ;
190- }
191- return options ;
192- }
193-
194153 public FirefoxDriver (Capabilities desiredCapabilities , Capabilities requiredCapabilities ) {
195- this (getFirefoxOptions (desiredCapabilities ).addDesiredCapabilities (desiredCapabilities )
154+ this (getFirefoxOptions (desiredCapabilities )
155+ .addDesiredCapabilities (desiredCapabilities )
196156 .addRequiredCapabilities (requiredCapabilities ));
197157 }
198158
@@ -202,7 +162,9 @@ public FirefoxDriver(Capabilities desiredCapabilities, Capabilities requiredCapa
202162 */
203163 @ Deprecated
204164 public FirefoxDriver (FirefoxBinary binary , FirefoxProfile profile , Capabilities capabilities ) {
205- this (getFirefoxOptions (capabilities ).setBinary (binary ).setProfile (profile )
165+ this (getFirefoxOptions (capabilities )
166+ .setBinary (binary )
167+ .setProfile (profile )
206168 .addDesiredCapabilities (capabilities ));
207169 }
208170
@@ -211,10 +173,15 @@ public FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile, Capabilities
211173 * {@link FirefoxOptions#setProfile(FirefoxProfile)}
212174 */
213175 @ Deprecated
214- public FirefoxDriver (FirefoxBinary binary , FirefoxProfile profile ,
215- Capabilities desiredCapabilities , Capabilities requiredCapabilities ) {
216- this (getFirefoxOptions (desiredCapabilities ).setBinary (binary ).setProfile (profile )
217- .addDesiredCapabilities (desiredCapabilities ).addRequiredCapabilities (requiredCapabilities ));
176+ public FirefoxDriver (
177+ FirefoxBinary binary ,
178+ FirefoxProfile profile ,
179+ Capabilities desiredCapabilities ,
180+ Capabilities requiredCapabilities ) {
181+ this (getFirefoxOptions (desiredCapabilities )
182+ .setBinary (binary ).setProfile (profile )
183+ .addDesiredCapabilities (desiredCapabilities )
184+ .addRequiredCapabilities (requiredCapabilities ));
218185 }
219186
220187 /**
@@ -237,18 +204,63 @@ public FirefoxDriver(GeckoDriverService driverService, Capabilities desiredCapab
237204 * @deprecated No replacement.
238205 */
239206 @ Deprecated
240- public FirefoxDriver (GeckoDriverService driverService , Capabilities desiredCapabilities ,
207+ public FirefoxDriver (
208+ GeckoDriverService driverService ,
209+ Capabilities desiredCapabilities ,
241210 Capabilities requiredCapabilities ) {
242211 this (new DriverCommandExecutor (driverService ), desiredCapabilities , requiredCapabilities );
243212 }
244213
245- private FirefoxDriver (CommandExecutor executor , Capabilities desiredCapabilities ,
214+ private FirefoxDriver (
215+ CommandExecutor executor ,
216+ Capabilities desiredCapabilities ,
246217 Capabilities requiredCapabilities ) {
247218 super (executor ,
248219 dropCapabilities (desiredCapabilities ),
249220 dropCapabilities (requiredCapabilities ));
250221 }
251222
223+ private static CommandExecutor toExecutor (FirefoxOptions options ) {
224+ if (options .isLegacy ()) {
225+ return new FirefoxDriver .LazyCommandExecutor (options .getBinary (), options .getProfile ());
226+
227+ } else {
228+ GeckoDriverService .Builder builder = new GeckoDriverService .Builder ().usingPort (0 );
229+ Optional <FirefoxBinary > binary = options .getBinaryOrNull ();
230+ if (binary .isPresent ()) {
231+ builder .usingFirefoxBinary (binary .get ());
232+ }
233+ return new DriverCommandExecutor (builder .build ());
234+ }
235+ }
236+
237+ private static FirefoxOptions getFirefoxOptions (Capabilities capabilities ) {
238+ FirefoxOptions options = new FirefoxOptions ();
239+
240+ if (capabilities == null ) {
241+ return options ;
242+ }
243+
244+ Object rawOptions = capabilities .getCapability (FIREFOX_OPTIONS );
245+ if (rawOptions != null ) {
246+ if (rawOptions instanceof Map ) {
247+ try {
248+ @ SuppressWarnings ("unchecked" )
249+ Map <String , Object > map = (Map <String , Object >) rawOptions ;
250+ rawOptions = FirefoxOptions .fromJsonMap (map );
251+ } catch (IOException e ) {
252+ throw new WebDriverException (e );
253+ }
254+ }
255+ if (rawOptions != null && !(rawOptions instanceof FirefoxOptions )) {
256+ throw new WebDriverException (
257+ "Firefox option was set, but is not a FirefoxOption: " + rawOptions );
258+ }
259+ options = (FirefoxOptions ) rawOptions ;
260+ }
261+ return options ;
262+ }
263+
252264 @ Override
253265 public void setFileDetector (FileDetector detector ) {
254266 throw new WebDriverException (
0 commit comments