package com.mumux.androidtesting.actions.impl;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import com.mumux.androidtesting.actions.OnOffAction;
import java.io.IOException;
import static com.mumux.androidtesting.actions.impl.ActionUtils.readFile;
public class WifiAction extends OnOffAction {
private final static int TIMEOUT = 3000;
public WifiAction() {
super("WIFI", true, "turn on/off wifi", Category.SYSTEM, "Setting not changed");
}
private boolean isSatisfied(String current) {
return (status && "up".equals(current)) || (!status && "dormant".equals(current));
}
@Override
public String run(UiAutomatorTestCase uiAutomatorTestCase, Runtime runtime) {
String current = readFile("/sys/class/net/wlan0/operstate").trim();
if (isSatisfied(current)) {
return null;
}
String command = "su -c svc wifi " + (status ? "enable" : "disable");
try {
runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
long start = System.currentTimeMillis();
while ((System.currentTimeMillis() - start) < TIMEOUT) {
current = readFile("/sys/class/net/wlan0/operstate").trim();
if (isSatisfied(current)) {
return null;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Wifi setting not updated";
}
}