Skip to content

Commit b778b07

Browse files
committed
[java] Making merge method in classes that implement Capabilities to return a new instance as specified in the Capabilities interface.
1 parent cf649a4 commit b778b07

File tree

10 files changed

+44
-20
lines changed

10 files changed

+44
-20
lines changed

java/client/src/org/openqa/selenium/MutableCapabilities.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void setCapability(String key, Object value) {
100100
// and this is no longer needed as options are capabilities. There will be a large amount of
101101
// legacy code that will always try and follow this pattern, however.
102102
if (OPTION_KEYS.contains(key) && value instanceof Capabilities) {
103-
merge((Capabilities) value);
103+
((Capabilities) value).asMap().forEach(this::setCapability);
104104
return;
105105
}
106106

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

+8-1
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,15 @@ public ChromeOptions setLogLevel(ChromeDriverLogLevel logLevel){
6262
return this;
6363
}
6464

65+
@Override
66+
public ChromeOptions merge(Capabilities extraCapabilities) {
67+
ChromeOptions newInstance = new ChromeOptions();
68+
this.asMap().forEach(newInstance::setCapability);
69+
extraCapabilities.asMap().forEach(newInstance::setCapability);
70+
return newInstance;
71+
}
72+
6573
public ChromeDriverLogLevel getLogLevel(){
6674
return logLevel;
6775
}
68-
6976
}

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

-6
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,6 @@ public ChromiumOptions(String capabilityType, String browserType, String capabil
7474
setCapability(capabilityType, browserType);
7575
}
7676

77-
@Override
78-
public T merge(Capabilities extraCapabilities) {
79-
super.merge(extraCapabilities);
80-
return (T) this;
81-
}
82-
8377
/**
8478
* Sets the path to the Chrome executable. This path should exist on the
8579
* machine which will launch Chrome. The path should either be absolute or

java/client/src/org/openqa/selenium/edge/EdgeOptions.java

+9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.openqa.selenium.edge;
1818

1919
import org.openqa.selenium.Capabilities;
20+
import org.openqa.selenium.chrome.ChromeOptions;
2021
import org.openqa.selenium.chromium.ChromiumOptions;
2122
import org.openqa.selenium.remote.BrowserType;
2223
import org.openqa.selenium.remote.CapabilityType;
@@ -56,4 +57,12 @@ public class EdgeOptions extends ChromiumOptions<EdgeOptions> {
5657
public EdgeOptions() {
5758
super(CapabilityType.BROWSER_NAME, BrowserType.EDGE, CAPABILITY);
5859
}
60+
61+
@Override
62+
public EdgeOptions merge(Capabilities extraCapabilities) {
63+
EdgeOptions newInstance = new EdgeOptions();
64+
this.asMap().forEach(newInstance::setCapability);
65+
extraCapabilities.asMap().forEach(newInstance::setCapability);
66+
return newInstance;
67+
}
5968
}

java/client/src/org/openqa/selenium/edgehtml/EdgeHtmlOptions.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static org.openqa.selenium.remote.CapabilityType.BROWSER_NAME;
2020

2121
import org.openqa.selenium.Capabilities;
22+
import org.openqa.selenium.edge.EdgeOptions;
2223
import org.openqa.selenium.remote.AbstractDriverOptions;
2324
import org.openqa.selenium.remote.BrowserType;
2425

@@ -59,7 +60,9 @@ public EdgeHtmlOptions() {
5960

6061
@Override
6162
public EdgeHtmlOptions merge(Capabilities extraCapabilities) {
62-
super.merge(extraCapabilities);
63-
return this;
63+
EdgeHtmlOptions newInstance = new EdgeHtmlOptions();
64+
this.asMap().forEach(newInstance::setCapability);
65+
extraCapabilities.asMap().forEach(newInstance::setCapability);
66+
return newInstance;
6467
}
6568
}

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -325,11 +325,13 @@ public Map<String, Object> asMap() {
325325

326326
@Override
327327
public FirefoxOptions merge(Capabilities capabilities) {
328-
super.merge(capabilities);
328+
FirefoxOptions newInstance = new FirefoxOptions();
329+
this.asMap().forEach(newInstance::setCapability);
330+
capabilities.asMap().forEach(newInstance::setCapability);
329331
if (capabilities instanceof FirefoxOptions) {
330-
mirror((FirefoxOptions) capabilities);
332+
newInstance.mirror((FirefoxOptions) capabilities);
331333
}
332-
return this;
334+
return newInstance;
333335
}
334336

335337
@Override

java/client/src/org/openqa/selenium/ie/InternetExplorerOptions.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import static org.openqa.selenium.ie.InternetExplorerDriver.REQUIRE_WINDOW_FOCUS;
3333
import static org.openqa.selenium.remote.CapabilityType.BROWSER_NAME;
3434

35+
import org.openqa.selenium.edgehtml.EdgeHtmlOptions;
3536
import org.openqa.selenium.internal.Require;
3637
import org.openqa.selenium.remote.AbstractDriverOptions;
3738
import org.openqa.selenium.Beta;
@@ -98,8 +99,10 @@ public InternetExplorerOptions(Capabilities source) {
9899

99100
@Override
100101
public InternetExplorerOptions merge(Capabilities extraCapabilities) {
101-
super.merge(extraCapabilities);
102-
return this;
102+
InternetExplorerOptions newInstance = new InternetExplorerOptions();
103+
this.asMap().forEach(newInstance::setCapability);
104+
extraCapabilities.asMap().forEach(newInstance::setCapability);
105+
return newInstance;
103106
}
104107

105108
public InternetExplorerOptions withAttachTimeout(long duration, TimeUnit unit) {

java/client/src/org/openqa/selenium/opera/OperaOptions.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.openqa.selenium.remote.BrowserType.OPERA_BLINK;
2323
import static org.openqa.selenium.remote.CapabilityType.BROWSER_NAME;
2424

25+
import org.openqa.selenium.edge.EdgeOptions;
2526
import org.openqa.selenium.internal.Require;
2627
import org.openqa.selenium.remote.AbstractDriverOptions;
2728
import org.openqa.selenium.Capabilities;
@@ -76,8 +77,10 @@ public OperaOptions() {
7677

7778
@Override
7879
public OperaOptions merge(Capabilities extraCapabilities) {
79-
super.merge(extraCapabilities);
80-
return this;
80+
OperaOptions newInstance = new OperaOptions();
81+
this.asMap().forEach(newInstance::setCapability);
82+
extraCapabilities.asMap().forEach(newInstance::setCapability);
83+
return newInstance;
8184
}
8285

8386
/**

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

+5-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.edge.EdgeOptions;
2425
import org.openqa.selenium.remote.AbstractDriverOptions;
2526
import org.openqa.selenium.Capabilities;
2627
import org.openqa.selenium.WebDriverException;
@@ -87,8 +88,10 @@ public SafariOptions(Capabilities source) {
8788

8889
@Override
8990
public SafariOptions merge(Capabilities extraCapabilities) {
90-
super.merge(extraCapabilities);
91-
return this;
91+
SafariOptions newInstance = new SafariOptions();
92+
this.asMap().forEach(newInstance::setCapability);
93+
extraCapabilities.asMap().forEach(newInstance::setCapability);
94+
return newInstance;
9295
}
9396

9497
/**

java/client/test/org/openqa/selenium/testing/drivers/TestChromeDriver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private static ChromeOptions chromeWithCustomCapabilities(Capabilities originalC
7676
}
7777

7878
if (originalCapabilities != null) {
79-
options.merge(originalCapabilities);
79+
options = options.merge(originalCapabilities);
8080
}
8181

8282
return options;

0 commit comments

Comments
 (0)