Skip to content

Commit 1ee7e1f

Browse files
committed
[java] Removing a few bits more of the magic that moves JWP to W3C.
1 parent d9e5d28 commit 1ee7e1f

File tree

4 files changed

+14
-66
lines changed

4 files changed

+14
-66
lines changed

java/src/org/openqa/selenium/remote/CapabilitiesUtils.java

+3-54
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,14 @@
2222
import com.google.common.collect.ImmutableSet;
2323

2424
import org.openqa.selenium.AcceptedW3CCapabilityKeys;
25-
import org.openqa.selenium.Capabilities;
26-
import org.openqa.selenium.ImmutableCapabilities;
27-
import org.openqa.selenium.Proxy;
2825
import org.openqa.selenium.internal.Require;
2926
import org.openqa.selenium.remote.session.CapabilitiesFilter;
3027
import org.openqa.selenium.remote.session.CapabilityTransform;
3128
import org.openqa.selenium.remote.session.ProxyTransform;
3229
import org.openqa.selenium.remote.session.StripAnyPlatform;
3330
import org.openqa.selenium.remote.session.W3CPlatformNameNormaliser;
3431

35-
import java.util.Arrays;
3632
import java.util.Collection;
37-
import java.util.HashMap;
3833
import java.util.HashSet;
3934
import java.util.LinkedList;
4035
import java.util.List;
@@ -48,10 +43,6 @@
4843
import java.util.stream.Collectors;
4944
import java.util.stream.Stream;
5045

51-
import static org.openqa.selenium.remote.CapabilityType.PLATFORM;
52-
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
53-
import static org.openqa.selenium.remote.CapabilityType.PROXY;
54-
5546
public class CapabilitiesUtils {
5647

5748
private static final Predicate<String> ACCEPTED_W3C_PATTERNS = new AcceptedW3CCapabilityKeys();
@@ -60,12 +51,6 @@ private CapabilitiesUtils() {
6051
// Helper class
6152
}
6253

63-
public static Stream<Capabilities> makeW3CSafe(Capabilities possiblyInvalidCapabilities) {
64-
Require.nonNull("Capabilities", possiblyInvalidCapabilities);
65-
66-
return makeW3CSafe(possiblyInvalidCapabilities.asMap()).map(ImmutableCapabilities::new);
67-
}
68-
6954
public static Stream<Map<String, Object>> makeW3CSafe(Map<String, Object> possiblyInvalidCapabilities) {
7055
Require.nonNull("Capabilities", possiblyInvalidCapabilities);
7156

@@ -75,13 +60,12 @@ public static Stream<Map<String, Object>> makeW3CSafe(Map<String, Object> possib
7560
// then add magic to generate each of the w3c capabilities. For the sake of simplicity, we're
7661
// going to make the (probably wrong) assumption we can hold all of the firstMatch values and
7762
// alwaysMatch value in memory at the same time.
78-
Map<String, Object> oss = convertOssToW3C(possiblyInvalidCapabilities);
7963
Stream<Map<String, Object>> fromOss;
8064
Set<String> usedKeys = new HashSet<>();
8165

8266
// Are there any values we care want to pull out into a mapping of their own?
8367
List<Map<String, Object>> firsts = adapters.stream()
84-
.map(adapter -> adapter.apply(oss))
68+
.map(adapter -> adapter.apply(possiblyInvalidCapabilities))
8569
.filter(Objects::nonNull)
8670
.filter(map -> !map.isEmpty())
8771
.map(
@@ -97,7 +81,7 @@ public static Stream<Map<String, Object>> makeW3CSafe(Map<String, Object> possib
9781
}
9882

9983
// Are there any remaining unused keys?
100-
Map<String, Object> always = oss.entrySet().stream()
84+
Map<String, Object> always = possiblyInvalidCapabilities.entrySet().stream()
10185
.filter(entry -> !usedKeys.contains(entry.getKey()))
10286
.filter(entry -> entry.getValue() != null)
10387
.collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, Map.Entry::getValue));
@@ -114,42 +98,7 @@ public static Stream<Map<String, Object>> makeW3CSafe(Map<String, Object> possib
11498
return fromOss;
11599
}
116100

117-
private static Map<String, Object> convertOssToW3C(Map<String, Object> capabilities) {
118-
Map<String, Object> toReturn = new TreeMap<>(capabilities);
119-
120-
// Platform name
121-
if (capabilities.containsKey(PLATFORM) && !capabilities.containsKey(PLATFORM_NAME)) {
122-
toReturn.put(PLATFORM_NAME, String.valueOf(capabilities.get(PLATFORM)));
123-
}
124-
125-
if (capabilities.containsKey(PROXY)) {
126-
Map<String, Object> proxyMap = getProxyFromCapabilities(capabilities);
127-
if (proxyMap.containsKey("noProxy")) {
128-
Map<String, Object> w3cProxyMap = new HashMap<>(proxyMap);
129-
Object rawData = proxyMap.get("noProxy");
130-
if (rawData instanceof String) {
131-
w3cProxyMap.put("noProxy", Arrays.asList(((String) rawData).split(",\\s*")));
132-
}
133-
toReturn.put(CapabilityType.PROXY, w3cProxyMap);
134-
}
135-
}
136-
137-
return toReturn;
138-
}
139-
140-
private static Map<String, Object> getProxyFromCapabilities(Map<String, Object> capabilities) {
141-
Object rawProxy = capabilities.get(CapabilityType.PROXY);
142-
if (rawProxy instanceof Proxy) {
143-
return ((Proxy) rawProxy).toJson();
144-
} else if (rawProxy instanceof Map) {
145-
//noinspection unchecked
146-
return (Map<String, Object>) rawProxy;
147-
} else {
148-
return new HashMap<>();
149-
}
150-
}
151-
152-
private static Map<String, Object> applyTransforms(Map<String, Object> caps) {
101+
public static Map<String, Object> applyTransforms(Map<String, Object> caps) {
153102
Queue<Map.Entry<String, Object>> toExamine = new LinkedList<>(caps.entrySet());
154103
Set<String> seenKeys = new HashSet<>();
155104
Map<String, Object> toReturn = new TreeMap<>();

java/src/org/openqa/selenium/remote/session/ProxyTransform.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717

1818
package org.openqa.selenium.remote.session;
1919

20-
import static java.util.Collections.singleton;
21-
2220
import org.openqa.selenium.Proxy;
2321

2422
import java.util.AbstractMap;
2523
import java.util.Collection;
2624
import java.util.Map;
2725
import java.util.TreeMap;
2826

27+
import static java.util.Collections.singleton;
28+
2929
public class ProxyTransform implements CapabilityTransform {
3030

3131
@Override
@@ -43,9 +43,7 @@ public Collection<Map.Entry<String, Object>> apply(Map.Entry<String, Object> ent
4343
proxy = new TreeMap<>((Map<String, Object>) rawProxy);
4444
}
4545
if (proxy.containsKey("proxyType")) {
46-
proxy.put(
47-
"proxyType",
48-
String.valueOf(proxy.get("proxyType")).toLowerCase());
46+
proxy.put("proxyType", String.valueOf(proxy.get("proxyType")).toLowerCase());
4947
}
5048
return singleton(new AbstractMap.SimpleImmutableEntry<>(entry.getKey(), proxy));
5149
}

java/src/org/openqa/selenium/remote/session/StripAnyPlatform.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,17 @@
1717

1818
package org.openqa.selenium.remote.session;
1919

20-
import static java.util.Collections.singleton;
21-
import static org.openqa.selenium.remote.CapabilityType.PLATFORM;
22-
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
23-
2420
import java.util.Collection;
2521
import java.util.Map;
2622

23+
import static java.util.Collections.singleton;
24+
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
25+
2726
public class StripAnyPlatform implements CapabilityTransform {
2827

2928
@Override
3029
public Collection<Map.Entry<String, Object>> apply(Map.Entry<String, Object> entry) {
31-
if (!(PLATFORM.equals(entry.getKey()) || PLATFORM_NAME.equals(entry.getKey()))) {
30+
if (!(PLATFORM_NAME.equals(entry.getKey()))) {
3231
return singleton(entry);
3332
}
3433

java/test/org/openqa/selenium/remote/NewSessionPayloadTest.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.remote;
1919

2020
import com.google.common.collect.ImmutableMap;
21+
2122
import org.junit.jupiter.api.Tag;
2223
import org.junit.jupiter.api.Test;
2324
import org.openqa.selenium.Capabilities;
@@ -213,11 +214,12 @@ void convertEverythingToFirstMatchOnlyIfPayloadContainsAlwaysMatchSectionAndOssC
213214
singletonMap("browserName", "foo"),
214215
singletonMap("browserName", "firefox")))));
215216

216-
assertEquals(asList(
217+
assertEquals(
218+
asList(
217219
// From OSS
218220
new ImmutableCapabilities("browserName", "firefox", "platform", "WINDOWS"),
219221
// Generated from OSS
220-
new ImmutableCapabilities("browserName", "firefox", "platformName", "windows"),
222+
new ImmutableCapabilities("browserName", "firefox"),
221223
// From the actual W3C capabilities
222224
new ImmutableCapabilities("browserName", "foo", "platformName", "macos"),
223225
new ImmutableCapabilities("browserName", "firefox", "platformName", "macos")),

0 commit comments

Comments
 (0)