Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion java/src/org/openqa/selenium/By.java
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ public String toString() {

public static class ByClassName extends PreW3CLocator {

private static final Pattern AT_LEAST_ONE_WHITESPACE = Pattern.compile(".*\\s.*");
private final String className;

public ByClassName(String className) {
Expand All @@ -305,7 +306,7 @@ public ByClassName(String className) {
.nonNull("Cannot find elements when the class name expression is null."),
".%s");

if (className.matches(".*\\s.*")) {
if (AT_LEAST_ONE_WHITESPACE.matcher(className).matches()) {
throw new InvalidSelectorException("Compound class names not permitted");
}

Expand Down
18 changes: 2 additions & 16 deletions java/src/org/openqa/selenium/PersistentCapabilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@

package org.openqa.selenium;

import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.openqa.selenium.internal.Require;
Expand Down Expand Up @@ -58,7 +56,7 @@ public PersistentCapabilities setCapability(String name, Object value) {
@Override
public Map<String, Object> asMap() {
return getCapabilityNames().stream()
.collect(toUnmodifiableMap(Function.identity(), this::getCapability));
.collect(Collectors.toUnmodifiableMap(Function.identity(), this::getCapability));
}

@Override
Expand All @@ -81,19 +79,7 @@ public Capabilities merge(Capabilities other) {
public Set<String> getCapabilityNames() {
return Stream.concat(
caps.getCapabilityNames().stream(), overrides.getCapabilityNames().stream())
.collect(toUnmodifiableSet());
}

// Needed, since we're dependent on Java 8 as a minimum version
private <T, K, U> Collector<T, ?, Map<K, U>> toUnmodifiableMap(
Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) {
return Collectors.collectingAndThen(
Collectors.toMap(keyMapper, valueMapper), Collections::unmodifiableMap);
}

// Needed, since we're dependent on Java 8 as a minimum version
private <T> Collector<T, ?, Set<T>> toUnmodifiableSet() {
return Collectors.collectingAndThen(Collectors.toSet(), Collections::unmodifiableSet);
.collect(Collectors.toUnmodifiableSet());
}

@Override
Expand Down
10 changes: 5 additions & 5 deletions java/src/org/openqa/selenium/Platform.java
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ public String toString() {
}
};

private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+).*");
private static @Nullable Platform current;
private final String[] partOfOsName;
private int minorVersion = 0;
Expand All @@ -389,21 +390,20 @@ public static Platform getCurrent() {

String version = System.getProperty("os.version", "0.0.0");
int major = 0;
int min = 0;
int minor = 0;

Pattern pattern = Pattern.compile("^(\\d+)\\.(\\d+).*");
Matcher matcher = pattern.matcher(version);
final Matcher matcher = VERSION_PATTERN.matcher(version);
if (matcher.matches()) {
try {
major = Integer.parseInt(matcher.group(1));
min = Integer.parseInt(matcher.group(2));
minor = Integer.parseInt(matcher.group(2));
} catch (NumberFormatException e) {
// These things happen
}
}

current.majorVersion = major;
current.minorVersion = min;
current.minorVersion = minor;
}
return current;
}
Expand Down
9 changes: 6 additions & 3 deletions java/src/org/openqa/selenium/grid/commands/InfoCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Set;
import java.util.regex.Pattern;
import org.openqa.selenium.cli.CliCommand;
import org.openqa.selenium.cli.WrappedPrintWriter;
import org.openqa.selenium.grid.config.Role;
Expand All @@ -39,6 +40,8 @@
@AutoService(CliCommand.class)
public class InfoCommand implements CliCommand {

private static final Pattern CODE_OR_LIST_PATTERN = Pattern.compile("^\\s*(\\*|\\d+\\.).*");

public String getName() {
return "info";
}
Expand Down Expand Up @@ -109,7 +112,7 @@ public Executable configure(PrintStream out, PrintStream err, String... args) {
break;
}

String path = getClass().getPackage().getName().replaceAll("\\.", "/") + "/" + toDisplay;
String path = getClass().getPackage().getName().replace('.', '/') + "/" + toDisplay;
String content;
try {
content = readContent(path);
Expand Down Expand Up @@ -143,11 +146,11 @@ private String readContent(String path) throws IOException {
} else if ("```".equals(line)) {
inCode = !inCode;
} else {
if (line.startsWith("=")) {
if (line.charAt(0) == '=') {
formattedText.append("\n");
}
formattedText.append(line);
if (inCode || line.matches("^\\s*\\*.*") || line.matches("^\\s*\\d+\\..*")) {
if (inCode || CODE_OR_LIST_PATTERN.matcher(line).matches()) {
formattedText.append("\n");
} else {
formattedText.append(" ");
Expand Down
14 changes: 6 additions & 8 deletions java/src/org/openqa/selenium/grid/node/docker/DockerOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ public class DockerOptions {
private static final String DEFAULT_DOCKER_NETWORK = "bridge";
private static final Logger LOG = Logger.getLogger(DockerOptions.class.getName());
private static final Json JSON = new Json();
private static final Pattern LINUX_DEVICE_MAPPING_WITH_DEFAULT_PERMISSIONS =
Pattern.compile("^([\\w/-]+):([\\w/-]+)$");
private static final Pattern LINUX_DEVICE_MAPPING_WITH_PERMISSIONS =
Pattern.compile("^([\\w/-]+):([\\w/-]+):(\\w+)$");
private final Config config;

public DockerOptions(Config config) {
Expand Down Expand Up @@ -208,23 +212,17 @@ public Map<Capabilities, Collection<SessionFactory>> getDockerSessionFactories(
}

protected List<Device> getDevicesMapping() {
Pattern linuxDeviceMappingWithDefaultPermissionsPattern =
Pattern.compile("^([\\w\\/-]+):([\\w\\/-]+)$");
Pattern linuxDeviceMappingWithPermissionsPattern =
Pattern.compile("^([\\w\\/-]+):([\\w\\/-]+):([\\w]+)$");

List<String> devices =
config.getAll(DOCKER_SECTION, "devices").orElseGet(Collections::emptyList);

List<Device> deviceMapping = new ArrayList<>();
for (String device : devices) {
String deviceMappingDefined = device.trim();
Matcher matcher =
linuxDeviceMappingWithDefaultPermissionsPattern.matcher(deviceMappingDefined);
Matcher matcher = LINUX_DEVICE_MAPPING_WITH_DEFAULT_PERMISSIONS.matcher(deviceMappingDefined);

if (matcher.matches()) {
deviceMapping.add(device(matcher.group(1), matcher.group(2), null));
} else if ((matcher = linuxDeviceMappingWithPermissionsPattern.matcher(deviceMappingDefined))
} else if ((matcher = LINUX_DEVICE_MAPPING_WITH_PERMISSIONS.matcher(deviceMappingDefined))
.matches()) {
deviceMapping.add(device(matcher.group(1), matcher.group(2), matcher.group(3)));
}
Expand Down
13 changes: 11 additions & 2 deletions java/src/org/openqa/selenium/net/Urls.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.regex.Pattern;
import org.openqa.selenium.internal.Require;

public class Urls {
Expand Down Expand Up @@ -88,7 +87,7 @@ public static URI from(String rawUri) {
return createHttpUri(rawUri);
}

if (Pattern.matches("\\d+", rawUri.substring(0, colonIndex))) {
if (isAllDigits(rawUri.substring(0, colonIndex))) {
return createHttpUri(rawUri);
}
}
Expand All @@ -101,6 +100,16 @@ public static URI from(String rawUri) {
}
}

private static boolean isAllDigits(final String input) {
for (int i = 0; i < input.length(); i++) {
if (!Character.isDigit(input.charAt(i))) {
return false;
}
}

return !input.isEmpty();
}

private static URI createHttpUri(String rawHost) {
int slashIndex = rawHost.indexOf('/');
String host = slashIndex == -1 ? rawHost : rawHost.substring(0, slashIndex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ public class W3CHttpCommandCodec extends AbstractHttpCommandCodec {

private static final ConcurrentHashMap<String, String> ATOM_SCRIPTS = new ConcurrentHashMap<>();
private static final Pattern CSS_ESCAPE =
Pattern.compile("([\\s'\"\\\\#.:;,!?+<>=~*^$|%&@`{}\\-\\/\\[\\]\\(\\)])");
Pattern.compile("([\\s'\"\\\\#.:;,!?+<>=~*^$|%&@`{}\\-/\\[\\]()])");
private static final Pattern AT_LEAST_ONE_WHITESPACE = Pattern.compile(".*\\s.*");

public W3CHttpCommandCodec() {
String sessionId = "/session/:sessionId";
Expand Down Expand Up @@ -181,7 +182,7 @@ public W3CHttpCommandCodec() {
String stringValue = (String) value;
switch (using) {
case "class name":
if (stringValue.matches(".*\\s.*")) {
if (AT_LEAST_ONE_WHITESPACE.matcher(stringValue).matches()) {
throw new InvalidSelectorException("Compound class names not permitted");
}
return amendLocatorToCssSelector(parameters, "." + cssEscape(stringValue));
Expand Down
Loading