Skip to content

Commit 673d069

Browse files
committed
Avoid creating unnecessary map instance when merging options
1 parent 647822a commit 673d069

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

java/client/src/org/openqa/selenium/chrome/ChromeOptions.java

+2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public ChromeOptions setLogLevel(ChromeDriverLogLevel logLevel){
6464

6565
@Override
6666
public ChromeOptions merge(Capabilities extraCapabilities) {
67+
Require.nonNull("Capabilities to merge", extraCapabilities);
68+
6769
ChromeOptions newInstance = new ChromeOptions();
6870
newInstance.mergeInPlace(this);
6971
newInstance.mergeInPlace(extraCapabilities);

java/client/src/org/openqa/selenium/chromium/ChromiumOptions.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,9 @@ public Map<String, Object> asMap() {
235235
}
236236

237237
protected void mergeInPlace(Capabilities capabilities) {
238-
capabilities.asMap().forEach(this::setCapability);
238+
Require.nonNull("Capabilities to merge", capabilities);
239+
240+
capabilities.getCapabilityNames().forEach(name -> setCapability(name, capabilities.getCapability(name)));
239241
if (capabilities instanceof ChromiumOptions) {
240242
ChromiumOptions<?> options = (ChromiumOptions<?>) capabilities;
241243
addArguments(options.args);

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -334,9 +334,10 @@ public Map<String, Object> asMap() {
334334

335335
@Override
336336
public FirefoxOptions merge(Capabilities capabilities) {
337+
Require.nonNull("Capabilities to merge", capabilities);
337338
FirefoxOptions newInstance = new FirefoxOptions();
338-
this.asMap().forEach(newInstance::setCapability);
339-
capabilities.asMap().forEach(newInstance::setCapability);
339+
getCapabilityNames().forEach(name -> newInstance.setCapability(name, getCapability(name)));
340+
capabilities.getCapabilityNames().forEach(name -> newInstance.setCapability(name, capabilities.getCapability(name)));
340341
newInstance.mirror(this);
341342
if (capabilities instanceof FirefoxOptions) {
342343
newInstance.mirror((FirefoxOptions) capabilities);

java/client/src/org/openqa/selenium/safari/SafariOptions.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.openqa.selenium.remote.CapabilityType.BROWSER_NAME;
2222

2323
import org.openqa.selenium.MutableCapabilities;
24+
import org.openqa.selenium.internal.Require;
2425
import org.openqa.selenium.remote.AbstractDriverOptions;
2526
import org.openqa.selenium.Capabilities;
2627
import org.openqa.selenium.WebDriverException;
@@ -87,9 +88,14 @@ public SafariOptions(Capabilities source) {
8788

8889
@Override
8990
public SafariOptions merge(Capabilities extraCapabilities) {
91+
Require.nonNull("Capabilities to merge", extraCapabilities);
92+
9093
SafariOptions newInstance = new SafariOptions();
91-
this.asMap().forEach(newInstance::setCapability);
92-
extraCapabilities.asMap().forEach(newInstance::setCapability);
94+
95+
getCapabilityNames().forEach(name -> newInstance.setCapability(name, getCapability(name)));
96+
extraCapabilities.getCapabilityNames()
97+
.forEach(name -> newInstance.setCapability(name, extraCapabilities.getCapability(name)));
98+
9399
return newInstance;
94100
}
95101

0 commit comments

Comments
 (0)