Skip to content

Commit

Permalink
Avoid enforcing the platform name while creating drivers (#1164)
Browse files Browse the repository at this point in the history
  • Loading branch information
mykola-mokhnach committed Jun 25, 2019
1 parent 50744b3 commit ef71924
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 64 deletions.
34 changes: 34 additions & 0 deletions src/main/java/io/appium/java_client/AppiumDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.openqa.selenium.By;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.DeviceRotation;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.ScreenOrientation;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
Expand Down Expand Up @@ -136,14 +137,34 @@ public AppiumDriver(Capabilities desiredCapabilities) {
* @param newPlatform a {@link MobileCapabilityType#PLATFORM_NAME} value which has
* to be set up
* @return {@link Capabilities} with changed mobile platform value
* @deprecated Please use {@link #updateDefaultPlatformName(Capabilities, String)} instead
*/
@Deprecated
protected static Capabilities substituteMobilePlatform(Capabilities originalCapabilities,
String newPlatform) {
DesiredCapabilities dc = new DesiredCapabilities(originalCapabilities);
dc.setCapability(PLATFORM_NAME, newPlatform);
return dc;
}

/**
* Changes platform name if it is not set and returns new capabilities.
*
* @param originalCapabilities the given {@link Capabilities}.
* @param defaultName a {@link MobileCapabilityType#PLATFORM_NAME} value which has
* to be set up
* @return {@link Capabilities} with changed mobile platform name value or the original capabilities
*/
protected static Capabilities updateDefaultPlatformName(Capabilities originalCapabilities,
String defaultName) {
if (originalCapabilities.getCapability(PLATFORM_NAME) == null) {
DesiredCapabilities dc = new DesiredCapabilities(originalCapabilities);
dc.setCapability(PLATFORM_NAME, defaultName);
return dc;
}
return originalCapabilities;
}

@Override
public List<T> findElements(By by) {
return super.findElements(by);
Expand Down Expand Up @@ -295,4 +316,17 @@ public boolean isBrowser() {
return super.isBrowser()
&& !containsIgnoreCase(getContext(), "NATIVE_APP");
}

@Override
protected void startSession(Capabilities capabilities) {
super.startSession(capabilities);
// The RemoteWebDriver implementation overrides platformName
// so we need to restore it back to the original value
Object originalPlatformName = capabilities.getCapability(PLATFORM_NAME);
Capabilities originalCaps = super.getCapabilities();
if (originalPlatformName != null && originalCaps instanceof MutableCapabilities) {
((MutableCapabilities) super.getCapabilities()).setCapability(PLATFORM_NAME,
originalPlatformName);
}
}
}
35 changes: 9 additions & 26 deletions src/main/java/io/appium/java_client/android/AndroidDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import static io.appium.java_client.android.AndroidMobileCommandHelper.endTestCoverageCommand;
import static io.appium.java_client.android.AndroidMobileCommandHelper.openNotificationsCommand;
import static io.appium.java_client.android.AndroidMobileCommandHelper.toggleLocationServicesCommand;
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
import static org.openqa.selenium.remote.DriverCommand.EXECUTE_SCRIPT;

import com.google.common.collect.ImmutableMap;
Expand All @@ -40,15 +39,13 @@
import io.appium.java_client.service.local.AppiumServiceBuilder;
import io.appium.java_client.ws.StringWebSocketClient;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.http.HttpClient;

import java.net.URL;
import java.util.Collections;
import java.util.Map;
import javax.annotation.Nullable;

/**
* Android driver implementation.
Expand Down Expand Up @@ -84,7 +81,7 @@ public class AndroidDriver<T extends WebElement>
* @param capabilities take a look at {@link Capabilities}
*/
public AndroidDriver(HttpCommandExecutor executor, Capabilities capabilities) {
super(executor, substituteMobilePlatform(capabilities, ANDROID_PLATFORM));
super(executor, updateDefaultPlatformName(capabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -94,7 +91,7 @@ public AndroidDriver(HttpCommandExecutor executor, Capabilities capabilities) {
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public AndroidDriver(URL remoteAddress, Capabilities desiredCapabilities) {
super(remoteAddress, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
super(remoteAddress, updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -107,7 +104,7 @@ public AndroidDriver(URL remoteAddress, Capabilities desiredCapabilities) {
public AndroidDriver(URL remoteAddress, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(remoteAddress, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -117,7 +114,7 @@ public AndroidDriver(URL remoteAddress, HttpClient.Factory httpClientFactory,
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public AndroidDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities) {
super(service, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
super(service, updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -130,7 +127,7 @@ public AndroidDriver(AppiumDriverLocalService service, Capabilities desiredCapab
public AndroidDriver(AppiumDriverLocalService service, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(service, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -140,7 +137,7 @@ public AndroidDriver(AppiumDriverLocalService service, HttpClient.Factory httpCl
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public AndroidDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities) {
super(builder, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
super(builder, updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -153,7 +150,7 @@ public AndroidDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilit
public AndroidDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(builder, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -163,7 +160,7 @@ public AndroidDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClient
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities desiredCapabilities) {
super(httpClientFactory, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
super(httpClientFactory, updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand All @@ -172,7 +169,7 @@ public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities desiredC
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public AndroidDriver(Capabilities desiredCapabilities) {
super(substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM));
super(updateDefaultPlatformName(desiredCapabilities, ANDROID_PLATFORM));
}

/**
Expand Down Expand Up @@ -203,20 +200,6 @@ public AndroidBatteryInfo getBatteryInfo() {
"script", "mobile: batteryInfo", "args", Collections.emptyList())).getValue());
}

/**
* Returns capabilities that were provided on instantiation.
*
* @return given {@link Capabilities}
*/
@Nullable
public Capabilities getCapabilities() {
MutableCapabilities capabilities = (MutableCapabilities) super.getCapabilities();
if (capabilities != null) {
capabilities.setCapability(PLATFORM_NAME, ANDROID_PLATFORM);
}
return capabilities;
}

@Override
public synchronized StringWebSocketClient getLogcatClient() {
if (logcatClient == null) {
Expand Down
39 changes: 10 additions & 29 deletions src/main/java/io/appium/java_client/ios/IOSDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import static io.appium.java_client.MobileCommand.RUN_APP_IN_BACKGROUND;
import static io.appium.java_client.MobileCommand.prepareArguments;
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
import static org.openqa.selenium.remote.DriverCommand.EXECUTE_SCRIPT;

import com.google.common.collect.ImmutableMap;
Expand All @@ -37,7 +36,6 @@
import io.appium.java_client.ws.StringWebSocketClient;
import org.openqa.selenium.Alert;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DriverCommand;
import org.openqa.selenium.remote.HttpCommandExecutor;
Expand All @@ -48,7 +46,6 @@
import java.time.Duration;
import java.util.Collections;
import java.util.Map;
import javax.annotation.Nullable;

/**
* iOS driver implementation.
Expand All @@ -69,7 +66,7 @@ public class IOSDriver<T extends WebElement>
PushesFiles, CanRecordScreen, HasIOSClipboard, ListensToSyslogMessages,
HasBattery<IOSBatteryInfo> {

private static final String IOS_PLATFORM = MobilePlatform.IOS;
private static final String IOS_DEFAULT_PLATFORM = MobilePlatform.IOS;

private StringWebSocketClient syslogClient;

Expand All @@ -82,7 +79,7 @@ public class IOSDriver<T extends WebElement>
* @param capabilities take a look at {@link Capabilities}
*/
public IOSDriver(HttpCommandExecutor executor, Capabilities capabilities) {
super(executor, substituteMobilePlatform(capabilities, IOS_PLATFORM));
super(executor, updateDefaultPlatformName(capabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -92,7 +89,7 @@ public IOSDriver(HttpCommandExecutor executor, Capabilities capabilities) {
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public IOSDriver(URL remoteAddress, Capabilities desiredCapabilities) {
super(remoteAddress, substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(remoteAddress, updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -105,7 +102,7 @@ public IOSDriver(URL remoteAddress, Capabilities desiredCapabilities) {
public IOSDriver(URL remoteAddress, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(remoteAddress, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -115,7 +112,7 @@ public IOSDriver(URL remoteAddress, HttpClient.Factory httpClientFactory,
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public IOSDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities) {
super(service, substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(service, updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -127,8 +124,7 @@ public IOSDriver(AppiumDriverLocalService service, Capabilities desiredCapabilit
*/
public IOSDriver(AppiumDriverLocalService service, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(service, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(service, httpClientFactory, updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -138,7 +134,7 @@ public IOSDriver(AppiumDriverLocalService service, HttpClient.Factory httpClient
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public IOSDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities) {
super(builder, substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(builder, updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -151,7 +147,7 @@ public IOSDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities)
public IOSDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(builder, httpClientFactory,
substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -161,7 +157,7 @@ public IOSDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClientFact
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public IOSDriver(HttpClient.Factory httpClientFactory, Capabilities desiredCapabilities) {
super(httpClientFactory, substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(httpClientFactory, updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand All @@ -170,7 +166,7 @@ public IOSDriver(HttpClient.Factory httpClientFactory, Capabilities desiredCapab
* @param desiredCapabilities take a look at {@link Capabilities}
*/
public IOSDriver(Capabilities desiredCapabilities) {
super(substituteMobilePlatform(desiredCapabilities, IOS_PLATFORM));
super(updateDefaultPlatformName(desiredCapabilities, IOS_DEFAULT_PLATFORM));
}

/**
Expand Down Expand Up @@ -203,21 +199,6 @@ private class InnerTargetLocator extends RemoteTargetLocator {
}
}

/**
* Returns capabilities that were provided on instantiation.
*
* @return given {@link Capabilities}
*/
@Nullable
public Capabilities getCapabilities() {
MutableCapabilities capabilities = (MutableCapabilities) super.getCapabilities();
if (capabilities != null) {
capabilities.setCapability(PLATFORM_NAME, IOS_PLATFORM);
}
return capabilities;
}


class IOSAlert implements Alert {

private final Alert alert;
Expand Down
18 changes: 9 additions & 9 deletions src/main/java/io/appium/java_client/windows/WindowsDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,40 +35,40 @@ public class WindowsDriver<T extends WebElement>
FindsByWindowsAutomation<T> {

public WindowsDriver(HttpCommandExecutor executor, Capabilities capabilities) {
super(executor, substituteMobilePlatform(capabilities, WINDOWS));
super(executor, updateDefaultPlatformName(capabilities, WINDOWS));
}

public WindowsDriver(URL remoteAddress, Capabilities desiredCapabilities) {
super(remoteAddress, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(remoteAddress, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(URL remoteAddress, HttpClient.Factory httpClientFactory, Capabilities desiredCapabilities) {
super(remoteAddress, httpClientFactory, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(remoteAddress, httpClientFactory, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities) {
super(service, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(service, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(AppiumDriverLocalService service, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(service, httpClientFactory, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(service, httpClientFactory, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities) {
super(builder, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(builder, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory,
Capabilities desiredCapabilities) {
super(builder, httpClientFactory, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(builder, httpClientFactory, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(HttpClient.Factory httpClientFactory, Capabilities desiredCapabilities) {
super(httpClientFactory, substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(httpClientFactory, updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}

public WindowsDriver(Capabilities desiredCapabilities) {
super(substituteMobilePlatform(desiredCapabilities, WINDOWS));
super(updateDefaultPlatformName(desiredCapabilities, WINDOWS));
}
}

0 comments on commit ef71924

Please sign in to comment.