aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/ios/simulatorcontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/ios/simulatorcontrol.cpp')
-rw-r--r--src/plugins/ios/simulatorcontrol.cpp127
1 files changed, 61 insertions, 66 deletions
diff --git a/src/plugins/ios/simulatorcontrol.cpp b/src/plugins/ios/simulatorcontrol.cpp
index 6e090b61886..0832a5faf37 100644
--- a/src/plugins/ios/simulatorcontrol.cpp
+++ b/src/plugins/ios/simulatorcontrol.cpp
@@ -5,9 +5,9 @@
#include "iosconfigurations.h"
#include <utils/algorithm.h>
-#include <utils/runextensions.h>
+#include <utils/async.h>
+#include <utils/process.h>
#include <utils/qtcassert.h>
-#include <utils/qtcprocess.h>
#ifdef Q_OS_MAC
#include <CoreFoundation/CoreFoundation.h>
@@ -57,7 +57,7 @@ static bool checkForTimeout(const chrono::high_resolution_clock::time_point &sta
static bool runCommand(const CommandLine &command, QString *stdOutput, QString *allOutput = nullptr)
{
- QtcProcess p;
+ Process p;
p.setTimeoutS(-1);
p.setCommand(command);
p.runBlocking();
@@ -98,7 +98,7 @@ static bool launchSimulator(const QString &simUdid) {
}
}
- return QtcProcess::startDetached({simulatorAppPath, {"--args", "-CurrentDeviceUDID", simUdid}});
+ return Process::startDetached({simulatorAppPath, {"--args", "-CurrentDeviceUDID", simUdid}});
}
static bool isAvailable(const QJsonObject &object)
@@ -162,30 +162,30 @@ static SimulatorInfo deviceInfo(const QString &simUdid);
static QString bundleIdentifier(const Utils::FilePath &bundlePath);
static QString bundleExecutable(const Utils::FilePath &bundlePath);
-static void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void startSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid);
-static void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void installApp(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const Utils::FilePath &bundlePath);
-static void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void launchApp(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &bundleIdentifier,
bool waitForDebugger,
const QStringList &extraArgs,
const QString &stdoutPath,
const QString &stderrPath);
-static void deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void deleteSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid);
-static void resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void resetSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid);
-static void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void renameSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &newName);
-static void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void createSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &name,
const DeviceTypeInfo &deviceType,
const RuntimeInfo &runtime);
-static void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
+static void takeSceenshot(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &filePath);
@@ -234,10 +234,10 @@ static QList<SimulatorInfo> getAvailableSimulators()
return availableDevices;
}
-QFuture<QList<DeviceTypeInfo> > SimulatorControl::updateDeviceTypes()
+QFuture<QList<DeviceTypeInfo>> SimulatorControl::updateDeviceTypes(QObject *context)
{
- QFuture< QList<DeviceTypeInfo> > future = Utils::runAsync(getAvailableDeviceTypes);
- Utils::onResultReady(future, [](const QList<DeviceTypeInfo> &deviceTypes) {
+ QFuture<QList<DeviceTypeInfo>> future = Utils::asyncRun(getAvailableDeviceTypes);
+ Utils::onResultReady(future, context, [](const QList<DeviceTypeInfo> &deviceTypes) {
s_availableDeviceTypes = deviceTypes;
});
return future;
@@ -248,20 +248,21 @@ QList<RuntimeInfo> SimulatorControl::availableRuntimes()
return s_availableRuntimes;
}
-QFuture<QList<RuntimeInfo> > SimulatorControl::updateRuntimes()
+QFuture<QList<RuntimeInfo>> SimulatorControl::updateRuntimes(QObject *context)
{
- QFuture< QList<RuntimeInfo> > future = Utils::runAsync(getAvailableRuntimes);
- Utils::onResultReady(future, [](const QList<RuntimeInfo> &runtimes) {
+ QFuture<QList<RuntimeInfo>> future = Utils::asyncRun(getAvailableRuntimes);
+ Utils::onResultReady(future, context, [](const QList<RuntimeInfo> &runtimes) {
s_availableRuntimes = runtimes;
});
return future;
}
-QFuture< QList<SimulatorInfo> > SimulatorControl::updateAvailableSimulators()
+QFuture<QList<SimulatorInfo>> SimulatorControl::updateAvailableSimulators(QObject *context)
{
- QFuture< QList<SimulatorInfo> > future = Utils::runAsync(getAvailableSimulators);
- Utils::onResultReady(future,
- [](const QList<SimulatorInfo> &devices) { s_availableDevices = devices; });
+ QFuture<QList<SimulatorInfo>> future = Utils::asyncRun(getAvailableSimulators);
+ Utils::onResultReady(future, context, [](const QList<SimulatorInfo> &devices) {
+ s_availableDevices = devices;
+ });
return future;
}
@@ -284,13 +285,13 @@ QString SimulatorControl::bundleExecutable(const Utils::FilePath &bundlePath)
QFuture<SimulatorControl::ResponseData> SimulatorControl::startSimulator(const QString &simUdid)
{
- return Utils::runAsync(Internal::startSimulator, simUdid);
+ return Utils::asyncRun(Internal::startSimulator, simUdid);
}
QFuture<SimulatorControl::ResponseData> SimulatorControl::installApp(
const QString &simUdid, const Utils::FilePath &bundlePath)
{
- return Utils::runAsync(Internal::installApp, simUdid, bundlePath);
+ return Utils::asyncRun(Internal::installApp, simUdid, bundlePath);
}
QFuture<SimulatorControl::ResponseData> SimulatorControl::launchApp(const QString &simUdid,
@@ -300,7 +301,7 @@ QFuture<SimulatorControl::ResponseData> SimulatorControl::launchApp(const QStrin
const QString &stdoutPath,
const QString &stderrPath)
{
- return Utils::runAsync(Internal::launchApp,
+ return Utils::asyncRun(Internal::launchApp,
simUdid,
bundleIdentifier,
waitForDebugger,
@@ -311,18 +312,18 @@ QFuture<SimulatorControl::ResponseData> SimulatorControl::launchApp(const QStrin
QFuture<SimulatorControl::ResponseData> SimulatorControl::deleteSimulator(const QString &simUdid)
{
- return Utils::runAsync(Internal::deleteSimulator, simUdid);
+ return Utils::asyncRun(Internal::deleteSimulator, simUdid);
}
QFuture<SimulatorControl::ResponseData> SimulatorControl::resetSimulator(const QString &simUdid)
{
- return Utils::runAsync(Internal::resetSimulator, simUdid);
+ return Utils::asyncRun(Internal::resetSimulator, simUdid);
}
QFuture<SimulatorControl::ResponseData> SimulatorControl::renameSimulator(const QString &simUdid,
const QString &newName)
{
- return Utils::runAsync(Internal::renameSimulator, simUdid, newName);
+ return Utils::asyncRun(Internal::renameSimulator, simUdid, newName);
}
QFuture<SimulatorControl::ResponseData>
@@ -330,13 +331,13 @@ SimulatorControl::createSimulator(const QString &name,
const DeviceTypeInfo &deviceType,
const RuntimeInfo &runtime)
{
- return Utils::runAsync(Internal::createSimulator, name, deviceType, runtime);
+ return Utils::asyncRun(Internal::createSimulator, name, deviceType, runtime);
}
QFuture<SimulatorControl::ResponseData> SimulatorControl::takeSceenshot(const QString &simUdid,
const QString &filePath)
{
- return Utils::runAsync(Internal::takeSceenshot, simUdid, filePath);
+ return Utils::asyncRun(Internal::takeSceenshot, simUdid, filePath);
}
// Static members
@@ -392,7 +393,7 @@ QString bundleExecutable(const Utils::FilePath &bundlePath)
return executable;
}
-void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
+void startSimulator(QPromise<SimulatorControl::ResponseData> &promise, const QString &simUdid)
{
SimulatorControl::ResponseData response(simUdid);
SimulatorInfo simInfo = deviceInfo(simUdid);
@@ -420,7 +421,7 @@ void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const
if (simInfo.isShutdown()) {
if (launchSimulator(simUdid)) {
- if (fi.isCanceled())
+ if (promise.isCanceled())
return;
// At this point the sim device exists, available and was not running.
// So the simulator is started and we'll wait for it to reach to a state
@@ -429,13 +430,11 @@ void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const
SimulatorInfo info;
do {
info = deviceInfo(simUdid);
- if (fi.isCanceled())
+ if (promise.isCanceled())
return;
- } while (!info.isBooted()
- && !checkForTimeout(start, simulatorStartTimeout));
- if (info.isBooted()) {
+ } while (!info.isBooted() && !checkForTimeout(start, simulatorStartTimeout));
+ if (info.isBooted())
response.success = true;
- }
} else {
qCDebug(simulatorLog) << "Error starting simulator.";
}
@@ -444,14 +443,12 @@ void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const
<< simInfo;
}
- if (!fi.isCanceled()) {
- fi.reportResult(response);
- }
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
- const QString &simUdid,
- const Utils::FilePath &bundlePath)
+void installApp(QPromise<SimulatorControl::ResponseData> &promise,
+ const QString &simUdid, const Utils::FilePath &bundlePath)
{
QTC_CHECK(bundlePath.exists());
@@ -459,11 +456,11 @@ void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
response.success = runSimCtlCommand({"install", simUdid, bundlePath.toString()},
nullptr,
&response.commandOutput);
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
+void launchApp(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &bundleIdentifier,
bool waitForDebugger,
@@ -472,7 +469,7 @@ void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
const QString &stderrPath)
{
SimulatorControl::ResponseData response(simUdid);
- if (!bundleIdentifier.isEmpty() && !fi.isCanceled()) {
+ if (!bundleIdentifier.isEmpty() && !promise.isCanceled()) {
QStringList args({"launch", simUdid, bundleIdentifier});
// simctl usage documentation : Note: Log output is often directed to stderr, not stdout.
@@ -499,30 +496,29 @@ void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
}
}
- if (!fi.isCanceled()) {
- fi.reportResult(response);
- }
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
+void deleteSimulator(QPromise<SimulatorControl::ResponseData> &promise, const QString &simUdid)
{
SimulatorControl::ResponseData response(simUdid);
response.success = runSimCtlCommand({"delete", simUdid}, nullptr, &response.commandOutput);
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
+void resetSimulator(QPromise<SimulatorControl::ResponseData> &promise, const QString &simUdid)
{
SimulatorControl::ResponseData response(simUdid);
response.success = runSimCtlCommand({"erase", simUdid}, nullptr, &response.commandOutput);
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+void renameSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &newName)
{
@@ -530,12 +526,11 @@ void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
response.success = runSimCtlCommand({"rename", simUdid, newName},
nullptr,
&response.commandOutput);
-
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
+void createSimulator(QPromise<SimulatorControl::ResponseData> &promise,
const QString &name,
const DeviceTypeInfo &deviceType,
const RuntimeInfo &runtime)
@@ -550,11 +545,11 @@ void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
response.simUdid = response.success ? stdOutput.trimmed() : QString();
}
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
-void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
+void takeSceenshot(QPromise<SimulatorControl::ResponseData> &promise,
const QString &simUdid,
const QString &filePath)
{
@@ -562,8 +557,8 @@ void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
response.success = runSimCtlCommand({"io", simUdid, "screenshot", filePath},
nullptr,
&response.commandOutput);
- if (!fi.isCanceled())
- fi.reportResult(response);
+ if (!promise.isCanceled())
+ promise.addResult(response);
}
QDebug &operator<<(QDebug &stream, const SimulatorInfo &info)