|
21 | 21 | import static java.util.Collections.unmodifiableMap;
|
22 | 22 | import static java.util.stream.Collectors.toList;
|
23 | 23 |
|
| 24 | +import org.openqa.selenium.Capabilities; |
24 | 25 | import org.openqa.selenium.SessionNotCreatedException;
|
| 26 | +import org.openqa.selenium.chrome.ChromeOptions; |
25 | 27 | import org.openqa.selenium.internal.Require;
|
26 | 28 | import org.openqa.selenium.remote.AbstractDriverOptions;
|
27 | 29 |
|
|
31 | 33 | import java.util.ArrayList;
|
32 | 34 | import java.util.Arrays;
|
33 | 35 | import java.util.Base64;
|
| 36 | +import java.util.Collections; |
34 | 37 | import java.util.HashMap;
|
35 | 38 | import java.util.List;
|
36 | 39 | import java.util.Map;
|
|
61 | 64 | public class ChromiumOptions<T extends ChromiumOptions> extends AbstractDriverOptions<ChromiumOptions> {
|
62 | 65 |
|
63 | 66 | private String binary;
|
64 |
| - private List<String> args = new ArrayList<>(); |
65 |
| - private List<File> extensionFiles = new ArrayList<>(); |
66 |
| - private List<String> extensions = new ArrayList<>(); |
67 |
| - private Map<String, Object> experimentalOptions = new HashMap<>(); |
| 67 | + private final List<String> args = new ArrayList<>(); |
| 68 | + private final List<File> extensionFiles = new ArrayList<>(); |
| 69 | + private final List<String> extensions = new ArrayList<>(); |
| 70 | + private final Map<String, Object> experimentalOptions = new HashMap<>(); |
68 | 71 |
|
69 | 72 | private final String CAPABILITY;
|
70 | 73 |
|
@@ -232,4 +235,15 @@ public Map<String, Object> asMap() {
|
232 | 235 |
|
233 | 236 | return unmodifiableMap(toReturn);
|
234 | 237 | }
|
| 238 | + |
| 239 | + protected void mergeInPlace(Capabilities capabilities) { |
| 240 | + capabilities.asMap().forEach(this::setCapability); |
| 241 | + if (capabilities instanceof ChromiumOptions) { |
| 242 | + ChromiumOptions<?> options = (ChromiumOptions<?>) capabilities; |
| 243 | + addArguments(options.args); |
| 244 | + addExtensions(options.extensionFiles); |
| 245 | + addEncodedExtensions(options.extensions); |
| 246 | + options.experimentalOptions.forEach(this::setExperimentalOption); |
| 247 | + } |
| 248 | + } |
235 | 249 | }
|
0 commit comments