A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/seleniumhq/selenium/commit/6bc5a589ddebcf825e49dd10d20fb9e784ff2a24 below:

[java] Merge capabilities of slot with the new session request capabi… · SeleniumHQ/selenium@6bc5a58 · GitHub

22 22

import org.openqa.selenium.Capabilities;

23 23

import org.openqa.selenium.ImmutableCapabilities;

24 24

import org.openqa.selenium.PersistentCapabilities;

25 - 25 +

import java.util.ArrayList;

26 26

import java.util.HashMap;

27 +

import java.util.List;

27 28

import java.util.Map;

28 29

import java.util.Objects;

29 30

import java.util.function.Function;

@@ -56,33 +57,128 @@ public Capabilities apply(Capabilities capabilities) {

56 57

}

57 58 58 59

String browserName = capabilities.getBrowserName().toLowerCase();

59 -

if (!BROWSER_OPTIONS.containsKey(browserName)) {

60 -

return capabilities;

61 -

}

62 - 63 60

String options = BROWSER_OPTIONS.get(browserName);

64 -

if (!slotStereotype.asMap().containsKey(options)) {

65 -

return capabilities;

61 +

if (slotStereotype.asMap().containsKey(options) && capabilities.asMap().containsKey(options)) {

62 + 63 +

@SuppressWarnings("unchecked")

64 +

Map<String, Object>

65 +

stereotypeOptions =

66 +

(Map<String, Object>) slotStereotype.asMap().get(options);

67 + 68 +

@SuppressWarnings("unchecked")

69 +

Map<String, Object> capsOptions = (Map<String, Object>) capabilities.asMap().get(options);

70 + 71 +

// Merge top level capabilities, excluding browser specific options.

72 +

// This will overwrite the browser options too, but it does not matter since we tackle it separately just after this.

73 +

Map<String, Object> toReturn = new HashMap<>(slotStereotype.merge(capabilities).asMap());

74 + 75 +

// Merge browser specific stereotype and capabilities options

76 +

switch (browserName.toLowerCase()) {

77 +

case "chrome":

78 +

case "microsoftedge":

79 +

case "msedge":

80 +

toReturn.put(options, mergeChromiumOptions(stereotypeOptions, capsOptions));

81 +

break;

82 +

case "firefox":

83 +

toReturn.put(options, mergeFirefoxOptions(stereotypeOptions, capsOptions));

84 +

break;

85 +

default:

86 +

break;

87 +

}

88 + 89 +

return new ImmutableCapabilities(toReturn);

66 90

}

67 91 68 -

@SuppressWarnings("unchecked")

69 -

Map<String, Object> stereotypeOptions = (Map<String, Object>) slotStereotype.asMap().get(options);

92 +

return slotStereotype.merge(capabilities);

93 +

}

70 94 71 -

Map<String, Object> toReturn = new HashMap<>(capabilities.asMap());

95 +

private Map<String, Object> mergeChromiumOptions(Map<String, Object> stereotypeOptions,

96 +

Map<String, Object> capsOptions) {

97 +

Map<String, Object> toReturn = new HashMap<>(stereotypeOptions);

72 98 73 -

if (!toReturn.containsKey(options)) {

74 -

toReturn.put(options, stereotypeOptions);

75 -

return new ImmutableCapabilities(toReturn);

99 +

for (String name : capsOptions.keySet()) {

100 +

if (name.equals("args")) {

101 +

List<String> arguments =

102 +

(List<String>) (capsOptions.getOrDefault(("args"), new ArrayList<>()));

103 + 104 +

List<String> stereotypeArguments =

105 +

(List<String>) (stereotypeOptions.getOrDefault(("args"), new ArrayList<>()));

106 + 107 +

arguments.forEach(arg -> {

108 +

if (!stereotypeArguments.contains(arg)) {

109 +

stereotypeArguments.add(arg);

110 +

}

111 +

});

112 +

toReturn.put("args", stereotypeArguments);

113 +

}

114 + 115 +

if (name.equals("extensions")) {

116 +

List<String> extensionList = (List<String>) (capsOptions.get(("extensions")));

117 + 118 +

List<String> stereotypeExtensions =

119 +

(List<String>) (stereotypeOptions.getOrDefault(("extensions"), new ArrayList<>()));

120 + 121 +

extensionList.forEach(extension -> {

122 +

if (!stereotypeExtensions.contains(extension)) {

123 +

stereotypeExtensions.add(extension);

124 +

}

125 +

});

126 + 127 +

toReturn.put("extensions", stereotypeExtensions);

128 +

}

129 + 130 +

if (!name.equals("binary") && !name.equals("extensions") && !name.equals("args")) {

131 +

toReturn.put(name, capsOptions.get(name));

132 +

}

76 133

}

77 134 78 -

@SuppressWarnings("unchecked")

79 -

Map<String, Object> capsOptions = (Map<String, Object>) toReturn.get(options);

80 -

stereotypeOptions.forEach((key, value) -> {

81 -

if (!capsOptions.containsKey(key)) {

82 -

capsOptions.put(key, value);

135 +

return toReturn;

136 +

}

137 + 138 +

private Map<String, Object> mergeFirefoxOptions(Map<String, Object> stereotypeOptions,

139 +

Map<String, Object> capsOptions) {

140 +

Map<String, Object> toReturn = new HashMap<>(stereotypeOptions);

141 + 142 +

for (String name : capsOptions.keySet()) {

143 +

if (name.equals("args")) {

144 +

List<String>

145 +

arguments =

146 +

(List<String>) (capsOptions.getOrDefault(("args"), new ArrayList<>()));

147 +

List<String> stereotypeArguments =

148 +

(List<String>) (stereotypeOptions.getOrDefault(("args"), new ArrayList<>()));

149 +

arguments.forEach(arg -> {

150 +

if (!stereotypeArguments.contains(arg)) {

151 +

stereotypeArguments.add(arg);

152 +

}

153 +

});

154 +

toReturn.put("args", stereotypeArguments);

155 +

}

156 + 157 +

if (name.equals("prefs")) {

158 +

Map<String, Object> prefs =

159 +

(Map<String, Object>) (capsOptions.getOrDefault(("prefs"), new HashMap<>()));

160 + 161 +

Map<String, Object> stereotypePrefs =

162 +

(Map<String, Object>) (stereotypeOptions.getOrDefault(("prefs"), new HashMap<>()));

163 + 164 +

stereotypePrefs.putAll(prefs);

165 +

toReturn.put("prefs", stereotypePrefs);

166 +

}

167 + 168 +

if (name.equals("profile")) {

169 +

String rawProfile =

170 +

(String) capsOptions.get("profile");

171 + 172 +

toReturn.put("profile", rawProfile);

173 +

}

174 + 175 +

if (name.equals("log")) {

176 +

Map<String, Object> logLevelMap =

177 +

(Map<String, Object>) capsOptions.get("log");

178 +

toReturn.put("log", logLevelMap);

83 179

}

84 -

});

180 +

}

85 181 86 -

return new ImmutableCapabilities(toReturn);

182 +

return toReturn;

87 183

}

88 184

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4