Skip to content

Commit fdd21f9

Browse files
committed
Also pass firefox profile to options on start up
1 parent f091afe commit fdd21f9

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

java/client/src/org/openqa/selenium/firefox/FirefoxDriver.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.firefox;
1919

2020
import static org.openqa.selenium.Platform.WINDOWS;
21+
import static org.openqa.selenium.firefox.FirefoxOptions.FIREFOX_OPTIONS;
2122
import static org.openqa.selenium.remote.CapabilityType.ACCEPT_SSL_CERTS;
2223
import static org.openqa.selenium.remote.CapabilityType.HAS_NATIVE_EVENTS;
2324
import static org.openqa.selenium.remote.CapabilityType.LOGGING_PREFS;
@@ -192,6 +193,21 @@ static void populateProfile(FirefoxProfile profile, Capabilities capabilities) {
192193
Boolean nativeEventsEnabled = (Boolean) capabilities.getCapability(HAS_NATIVE_EVENTS);
193194
profile.setEnableNativeEvents(nativeEventsEnabled);
194195
}
196+
197+
Object rawOptions = capabilities.getCapability(FIREFOX_OPTIONS);
198+
if (rawOptions != null && !(rawOptions instanceof FirefoxOptions)) {
199+
throw new WebDriverException("Firefox option was set, but is not a FirefoxOption: " + rawOptions);
200+
}
201+
FirefoxOptions options = (FirefoxOptions) rawOptions;
202+
if (options == null) {
203+
options = new FirefoxOptions();
204+
}
205+
options.setProfileSafely(profile);
206+
207+
DesiredCapabilities toReturn = capabilities instanceof DesiredCapabilities ?
208+
(DesiredCapabilities) capabilities :
209+
new DesiredCapabilities(capabilities);
210+
toReturn.setCapability(FIREFOX_OPTIONS, options);
195211
}
196212

197213
private static FirefoxBinary getBinary(Capabilities capabilities) {

java/client/src/org/openqa/selenium/firefox/FirefoxOptions.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.openqa.selenium.firefox.FirefoxDriver.BINARY;
2222
import static org.openqa.selenium.firefox.FirefoxDriver.PROFILE;
2323

24+
import com.google.common.base.Preconditions;
2425
import com.google.common.collect.ImmutableList;
2526
import com.google.gson.JsonArray;
2627
import com.google.gson.JsonElement;
@@ -53,6 +54,8 @@
5354
*/
5455
public class FirefoxOptions {
5556

57+
public final static String FIREFOX_OPTIONS = "firefoxOptions";
58+
5659
private String binary;
5760
private FirefoxProfile profile;
5861
private List<String> args = new ArrayList<>();
@@ -74,6 +77,14 @@ public FirefoxOptions setProfile(FirefoxProfile profile) {
7477
return this;
7578
}
7679

80+
// Confusing API. Keeping package visible only
81+
FirefoxOptions setProfileSafely(FirefoxProfile profile) {
82+
Preconditions.checkState(
83+
this.profile == null || this.profile.equals(profile),
84+
"Profile passed to options is different from existing profile that has been set.");
85+
return setProfile(profile);
86+
}
87+
7788
public FirefoxOptions addArguments(String... arguments) {
7889
addArguments(ImmutableList.copyOf(arguments));
7990
return this;
@@ -120,7 +131,7 @@ public DesiredCapabilities addTo(DesiredCapabilities capabilities) {
120131
}
121132
}
122133

123-
capabilities.setCapability("firefoxOptions", this);
134+
capabilities.setCapability(FIREFOX_OPTIONS, this);
124135

125136
if (binary != null) {
126137
FirefoxBinary actualBinary = new FirefoxBinary(new File(binary));

0 commit comments

Comments
 (0)