Skip to content

Commit b95aa5a

Browse files
committed
Add android options to chromium options.
1 parent 73807b6 commit b95aa5a

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public class ChromiumOptions<T extends ChromiumOptions<?>> extends AbstractDrive
6767
private final List<File> extensionFiles = new ArrayList<>();
6868
private final List<String> extensions = new ArrayList<>();
6969
private final Map<String, Object> experimentalOptions = new HashMap<>();
70+
private Map<String, Object> androidOptions = new HashMap<>();
7071

7172
private final String capabilityName;
7273

@@ -193,6 +194,43 @@ public T setHeadless(boolean headless) {
193194
return (T) this;
194195
}
195196

197+
public T setAndroidPackage(String androidPackage) {
198+
Require.nonNull("Android package", androidPackage);
199+
return setAndroidCapability("androidPackage", androidPackage);
200+
}
201+
202+
public T setAndroidActivity(String activity) {
203+
Require.nonNull("Android activity", activity);
204+
return setAndroidCapability("androidActivity", activity);
205+
}
206+
207+
public T setAndroidDeviceSerialNumber(String serial) {
208+
Require.nonNull("Android device serial number", serial);
209+
return setAndroidCapability("androidDeviceSerial", serial);
210+
}
211+
212+
public T setUseRunningAndroidApp(boolean useIt) {
213+
return setAndroidCapability("androidUseRunningApp", useIt);
214+
}
215+
216+
/**
217+
* Process name of the Activity hosting the WebView (as given by ps).
218+
* If not set, the process name is assumed to be the same as androidPackage.
219+
*/
220+
public T setAndroidProcess(String processName) {
221+
Require.nonNull("Android process name", processName);
222+
return setAndroidCapability("androidProcess", processName);
223+
}
224+
225+
private T setAndroidCapability(String name, Object value) {
226+
Require.nonNull("Name", name);
227+
Require.nonNull("Value", value);
228+
Map<String, Object> newOptions = new TreeMap<>(androidOptions);
229+
newOptions.put(name, value);
230+
androidOptions = Collections.unmodifiableMap(newOptions);
231+
return (T) this;
232+
}
233+
196234
@Override
197235
protected Set<String> getExtraCapabilityNames() {
198236
return Collections.singleton(capabilityName);
@@ -228,6 +266,8 @@ protected Object getExtraCapability(String capabilityName) {
228266
extensions.stream()
229267
).collect(toList())));
230268

269+
options.putAll(androidOptions);
270+
231271
return unmodifiableMap(options);
232272
}
233273

java/test/org/openqa/selenium/chrome/ChromeOptionsTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,16 @@ public void isW3CSafe() {
223223

224224
assertThat(seen).isEmpty();
225225
}
226+
227+
@Test
228+
public void shouldBeAbleToSetAnAndroidOption() {
229+
Map<String, Object> converted = new ChromeOptions()
230+
.setAndroidActivity("com.cheese.nom")
231+
.asMap();
232+
233+
assertThat(converted)
234+
.extractingByKey(ChromeOptions.CAPABILITY).asInstanceOf(MAP)
235+
.extractingByKey("androidActivity")
236+
.isEqualTo("com.cheese.nom");
237+
}
226238
}

0 commit comments

Comments
 (0)