forked from qt-creator/qt-creator
iOS: Make SimulatorControl static
It already contained only static members, so creating instances didn't serve a purpose. Change-Id: I261503b606c21cf498dcd8470d5645d92d97c325 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -38,10 +38,9 @@ namespace Internal {
|
|||||||
|
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
CreateSimulatorDialog::CreateSimulatorDialog(QWidget *parent) :
|
CreateSimulatorDialog::CreateSimulatorDialog(QWidget *parent)
|
||||||
QDialog(parent),
|
: QDialog(parent)
|
||||||
m_ui(new Ui::CreateSimulatorDialog),
|
, m_ui(new Ui::CreateSimulatorDialog)
|
||||||
m_simControl(new SimulatorControl(this))
|
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||||
|
@@ -60,7 +60,6 @@ private:
|
|||||||
private:
|
private:
|
||||||
Utils::FutureSynchronizer m_futureSync;
|
Utils::FutureSynchronizer m_futureSync;
|
||||||
Ui::CreateSimulatorDialog *m_ui = nullptr;
|
Ui::CreateSimulatorDialog *m_ui = nullptr;
|
||||||
SimulatorControl *m_simControl = nullptr;
|
|
||||||
QList<RuntimeInfo> m_runtimes;
|
QList<RuntimeInfo> m_runtimes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -63,8 +63,7 @@ static void onSimOperation(const SimulatorInfo &simInfo, SimulatorOperationDialo
|
|||||||
}
|
}
|
||||||
|
|
||||||
IosSettingsWidget::IosSettingsWidget()
|
IosSettingsWidget::IosSettingsWidget()
|
||||||
: m_ui(new Ui::IosSettingsWidget),
|
: m_ui(new Ui::IosSettingsWidget)
|
||||||
m_simControl(new SimulatorControl(this))
|
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
auto proxyModel = new QSortFilterProxyModel(this);
|
auto proxyModel = new QSortFilterProxyModel(this);
|
||||||
@@ -134,9 +133,9 @@ void IosSettingsWidget::onStart()
|
|||||||
.arg(info.name).arg(info.runtimeName).arg(info.state),
|
.arg(info.name).arg(info.runtimeName).arg(info.state),
|
||||||
Utils::StdErrFormat);
|
Utils::StdErrFormat);
|
||||||
} else {
|
} else {
|
||||||
futureList << QFuture<void>(Utils::onResultReady(m_simControl->startSimulator(info.identifier),
|
futureList << QFuture<void>(Utils::onResultReady(
|
||||||
std::bind(onSimOperation, info, statusDialog,
|
SimulatorControl::startSimulator(info.identifier),
|
||||||
tr("simulator start"), _1)));
|
std::bind(onSimOperation, info, statusDialog, tr("simulator start"), _1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,9 +166,8 @@ void IosSettingsWidget::onCreate()
|
|||||||
|
|
||||||
CreateSimulatorDialog createDialog(this);
|
CreateSimulatorDialog createDialog(this);
|
||||||
if (createDialog.exec() == QDialog::Accepted) {
|
if (createDialog.exec() == QDialog::Accepted) {
|
||||||
QFuture<void> f = QFuture<void>(Utils::onResultReady(
|
QFuture<void> f = QFuture<void>(
|
||||||
m_simControl->createSimulator(
|
Utils::onResultReady(SimulatorControl::createSimulator(createDialog.name(),
|
||||||
createDialog.name(),
|
|
||||||
createDialog.deviceType(),
|
createDialog.deviceType(),
|
||||||
createDialog.runtime()),
|
createDialog.runtime()),
|
||||||
std::bind(onSimulatorCreate, createDialog.name(), _1)));
|
std::bind(onSimulatorCreate, createDialog.name(), _1)));
|
||||||
@@ -201,9 +199,9 @@ void IosSettingsWidget::onReset()
|
|||||||
|
|
||||||
QList<QFuture<void>> futureList;
|
QList<QFuture<void>> futureList;
|
||||||
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
||||||
futureList << QFuture<void>(Utils::onResultReady(m_simControl->resetSimulator(info.identifier),
|
futureList << QFuture<void>(Utils::onResultReady(
|
||||||
std::bind(onSimOperation, info, statusDialog,
|
SimulatorControl::resetSimulator(info.identifier),
|
||||||
tr("simulator reset"), _1)));
|
std::bind(onSimOperation, info, statusDialog, tr("simulator reset"), _1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
statusDialog->addFutures(futureList);
|
statusDialog->addFutures(futureList);
|
||||||
@@ -229,9 +227,9 @@ void IosSettingsWidget::onRename()
|
|||||||
QPointer<SimulatorOperationDialog> statusDialog = new SimulatorOperationDialog(this);
|
QPointer<SimulatorOperationDialog> statusDialog = new SimulatorOperationDialog(this);
|
||||||
statusDialog->setAttribute(Qt::WA_DeleteOnClose);
|
statusDialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
statusDialog->addMessage(tr("Renaming simulator device..."), Utils::NormalMessageFormat);
|
statusDialog->addMessage(tr("Renaming simulator device..."), Utils::NormalMessageFormat);
|
||||||
QFuture<void> f = QFuture<void>(Utils::onResultReady(m_simControl->renameSimulator(simInfo.identifier, newName),
|
QFuture<void> f = QFuture<void>(Utils::onResultReady(
|
||||||
std::bind(onSimOperation, simInfo, statusDialog,
|
SimulatorControl::renameSimulator(simInfo.identifier, newName),
|
||||||
tr("simulator rename"), _1)));
|
std::bind(onSimOperation, simInfo, statusDialog, tr("simulator rename"), _1)));
|
||||||
statusDialog->addFutures({f});
|
statusDialog->addFutures({f});
|
||||||
statusDialog->exec(); // Modal dialog returns only when all the operations are done or cancelled.
|
statusDialog->exec(); // Modal dialog returns only when all the operations are done or cancelled.
|
||||||
}
|
}
|
||||||
@@ -258,9 +256,9 @@ void IosSettingsWidget::onDelete()
|
|||||||
Utils::NormalMessageFormat);
|
Utils::NormalMessageFormat);
|
||||||
QList<QFuture<void>> futureList;
|
QList<QFuture<void>> futureList;
|
||||||
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
||||||
futureList << QFuture<void>(Utils::onResultReady(m_simControl->deleteSimulator(info.identifier),
|
futureList << QFuture<void>(Utils::onResultReady(
|
||||||
std::bind(onSimOperation, info, statusDialog,
|
SimulatorControl::deleteSimulator(info.identifier),
|
||||||
tr("simulator delete"), _1)));
|
std::bind(onSimOperation, info, statusDialog, tr("simulator delete"), _1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
statusDialog->addFutures(futureList);
|
statusDialog->addFutures(futureList);
|
||||||
@@ -289,10 +287,9 @@ void IosSettingsWidget::onScreenshot()
|
|||||||
simulatorInfoList.count()), Utils::NormalMessageFormat);
|
simulatorInfoList.count()), Utils::NormalMessageFormat);
|
||||||
QList<QFuture<void>> futureList;
|
QList<QFuture<void>> futureList;
|
||||||
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
foreach (const SimulatorInfo &info, simulatorInfoList) {
|
||||||
futureList << QFuture<void>(Utils::onResultReady(m_simControl->takeSceenshot(info.identifier,
|
futureList << QFuture<void>(Utils::onResultReady(
|
||||||
generatePath(info)),
|
SimulatorControl::takeSceenshot(info.identifier, generatePath(info)),
|
||||||
std::bind(onSimOperation, info, statusDialog,
|
std::bind(onSimOperation, info, statusDialog, tr("simulator screenshot"), _1)));
|
||||||
tr("simulator screenshot"), _1)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
statusDialog->addFutures(futureList);
|
statusDialog->addFutures(futureList);
|
||||||
|
@@ -58,7 +58,6 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::IosSettingsWidget *m_ui = nullptr;
|
Ui::IosSettingsWidget *m_ui = nullptr;
|
||||||
SimulatorControl *m_simControl = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -307,7 +307,6 @@ class IosSimulatorToolHandlerPrivate : public IosToolHandlerPrivate
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit IosSimulatorToolHandlerPrivate(const IosDeviceType &devType, IosToolHandler *q);
|
explicit IosSimulatorToolHandlerPrivate(const IosDeviceType &devType, IosToolHandler *q);
|
||||||
~IosSimulatorToolHandlerPrivate() override;
|
|
||||||
|
|
||||||
// IosToolHandlerPrivate overrides
|
// IosToolHandlerPrivate overrides
|
||||||
public:
|
public:
|
||||||
@@ -327,7 +326,6 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
qint64 m_pid = -1;
|
qint64 m_pid = -1;
|
||||||
SimulatorControl *simCtl;
|
|
||||||
LogTailFiles outputLogger;
|
LogTailFiles outputLogger;
|
||||||
Utils::FutureSynchronizer futureSynchronizer;
|
Utils::FutureSynchronizer futureSynchronizer;
|
||||||
};
|
};
|
||||||
@@ -803,19 +801,13 @@ void IosDeviceToolHandlerPrivate::stop(int errorCode)
|
|||||||
|
|
||||||
IosSimulatorToolHandlerPrivate::IosSimulatorToolHandlerPrivate(const IosDeviceType &devType,
|
IosSimulatorToolHandlerPrivate::IosSimulatorToolHandlerPrivate(const IosDeviceType &devType,
|
||||||
IosToolHandler *q)
|
IosToolHandler *q)
|
||||||
: IosToolHandlerPrivate(devType, q),
|
: IosToolHandlerPrivate(devType, q)
|
||||||
simCtl(new SimulatorControl)
|
|
||||||
{
|
{
|
||||||
QObject::connect(&outputLogger, &LogTailFiles::logMessage,
|
QObject::connect(&outputLogger, &LogTailFiles::logMessage,
|
||||||
std::bind(&IosToolHandlerPrivate::appOutput, this, _1));
|
std::bind(&IosToolHandlerPrivate::appOutput, this, _1));
|
||||||
futureSynchronizer.setCancelOnWait(true);
|
futureSynchronizer.setCancelOnWait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
IosSimulatorToolHandlerPrivate::~IosSimulatorToolHandlerPrivate()
|
|
||||||
{
|
|
||||||
futureSynchronizer.waitForFinished();
|
|
||||||
delete simCtl;
|
|
||||||
}
|
|
||||||
void IosSimulatorToolHandlerPrivate::requestTransferApp(const QString &appBundlePath,
|
void IosSimulatorToolHandlerPrivate::requestTransferApp(const QString &appBundlePath,
|
||||||
const QString &deviceIdentifier, int timeout)
|
const QString &deviceIdentifier, int timeout)
|
||||||
{
|
{
|
||||||
@@ -840,7 +832,8 @@ void IosSimulatorToolHandlerPrivate::requestTransferApp(const QString &appBundle
|
|||||||
if (SimulatorControl::isSimulatorRunning(m_deviceId))
|
if (SimulatorControl::isSimulatorRunning(m_deviceId))
|
||||||
installAppOnSimulator();
|
installAppOnSimulator();
|
||||||
else
|
else
|
||||||
futureSynchronizer.addFuture(Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart));
|
futureSynchronizer.addFuture(
|
||||||
|
Utils::onResultReady(SimulatorControl::startSimulator(m_deviceId), onSimulatorStart));
|
||||||
}
|
}
|
||||||
|
|
||||||
void IosSimulatorToolHandlerPrivate::requestRunApp(const QString &appBundlePath,
|
void IosSimulatorToolHandlerPrivate::requestRunApp(const QString &appBundlePath,
|
||||||
@@ -876,7 +869,8 @@ void IosSimulatorToolHandlerPrivate::requestRunApp(const QString &appBundlePath,
|
|||||||
if (SimulatorControl::isSimulatorRunning(m_deviceId))
|
if (SimulatorControl::isSimulatorRunning(m_deviceId))
|
||||||
launchAppOnSimulator(extraArgs);
|
launchAppOnSimulator(extraArgs);
|
||||||
else
|
else
|
||||||
futureSynchronizer.addFuture(Utils::onResultReady(simCtl->startSimulator(m_deviceId), onSimulatorStart));
|
futureSynchronizer.addFuture(
|
||||||
|
Utils::onResultReady(SimulatorControl::startSimulator(m_deviceId), onSimulatorStart));
|
||||||
}
|
}
|
||||||
|
|
||||||
void IosSimulatorToolHandlerPrivate::requestDeviceInfo(const QString &deviceId, int timeout)
|
void IosSimulatorToolHandlerPrivate::requestDeviceInfo(const QString &deviceId, int timeout)
|
||||||
@@ -926,7 +920,8 @@ void IosSimulatorToolHandlerPrivate::installAppOnSimulator()
|
|||||||
};
|
};
|
||||||
|
|
||||||
isTransferringApp(m_bundlePath, m_deviceId, 20, 100, "");
|
isTransferringApp(m_bundlePath, m_deviceId, 20, 100, "");
|
||||||
auto installFuture = simCtl->installApp(m_deviceId, Utils::FilePath::fromString(m_bundlePath));
|
auto installFuture = SimulatorControl::installApp(m_deviceId,
|
||||||
|
Utils::FilePath::fromString(m_bundlePath));
|
||||||
futureSynchronizer.addFuture(Utils::onResultReady(installFuture, onResponseAppInstall));
|
futureSynchronizer.addFuture(Utils::onResultReady(installFuture, onResponseAppInstall));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -990,10 +985,15 @@ void IosSimulatorToolHandlerPrivate::launchAppOnSimulator(const QStringList &ext
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
futureSynchronizer.addFuture(Utils::onResultReady(
|
futureSynchronizer.addFuture(
|
||||||
simCtl->launchApp(m_deviceId, bundleId, debugRun, extraArgs,
|
Utils::onResultReady(SimulatorControl::launchApp(m_deviceId,
|
||||||
captureConsole ? stdoutFile->fileName() : QString(),
|
bundleId,
|
||||||
captureConsole ? stderrFile->fileName() : QString()),
|
debugRun,
|
||||||
|
extraArgs,
|
||||||
|
captureConsole ? stdoutFile->fileName()
|
||||||
|
: QString(),
|
||||||
|
captureConsole ? stderrFile->fileName()
|
||||||
|
: QString()),
|
||||||
onResponseAppLaunch));
|
onResponseAppLaunch));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -178,54 +178,44 @@ static QList<RuntimeInfo> getAvailableRuntimes()
|
|||||||
return runtimes;
|
return runtimes;
|
||||||
}
|
}
|
||||||
|
|
||||||
class SimulatorControlPrivate {
|
|
||||||
private:
|
|
||||||
SimulatorControlPrivate();
|
|
||||||
~SimulatorControlPrivate();
|
|
||||||
|
|
||||||
static SimulatorInfo deviceInfo(const QString &simUdid);
|
static SimulatorInfo deviceInfo(const QString &simUdid);
|
||||||
static QString bundleIdentifier(const Utils::FilePath &bundlePath);
|
static QString bundleIdentifier(const Utils::FilePath &bundlePath);
|
||||||
static QString bundleExecutable(const Utils::FilePath &bundlePath);
|
static QString bundleExecutable(const Utils::FilePath &bundlePath);
|
||||||
|
|
||||||
void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid);
|
static void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid,
|
const QString &simUdid);
|
||||||
|
static void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
|
const QString &simUdid,
|
||||||
const Utils::FilePath &bundlePath);
|
const Utils::FilePath &bundlePath);
|
||||||
void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid,
|
static void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &bundleIdentifier, bool waitForDebugger,
|
const QString &simUdid,
|
||||||
const QStringList &extraArgs, const QString &stdoutPath,
|
const QString &bundleIdentifier,
|
||||||
|
bool waitForDebugger,
|
||||||
|
const QStringList &extraArgs,
|
||||||
|
const QString &stdoutPath,
|
||||||
const QString &stderrPath);
|
const QString &stderrPath);
|
||||||
void deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
static void deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid);
|
const QString &simUdid);
|
||||||
void resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
static void resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid);
|
const QString &simUdid);
|
||||||
void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
static void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid, const QString &newName);
|
const QString &simUdid,
|
||||||
void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
const QString &newName);
|
||||||
const QString &name, const DeviceTypeInfo &deviceType,
|
static void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
|
const QString &name,
|
||||||
|
const DeviceTypeInfo &deviceType,
|
||||||
const RuntimeInfo &runtime);
|
const RuntimeInfo &runtime);
|
||||||
void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid,
|
static void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
|
const QString &simUdid,
|
||||||
const QString &filePath);
|
const QString &filePath);
|
||||||
|
|
||||||
static QList<SimulatorInfo> availableDevices;
|
static QList<SimulatorInfo> s_availableDevices;
|
||||||
static QList<DeviceTypeInfo> availableDeviceTypes;
|
static QList<DeviceTypeInfo> s_availableDeviceTypes;
|
||||||
static QList<RuntimeInfo> availableRuntimes;
|
static QList<RuntimeInfo> s_availableRuntimes;
|
||||||
friend class SimulatorControl;
|
|
||||||
};
|
|
||||||
|
|
||||||
SimulatorControl::SimulatorControl(QObject *parent) :
|
|
||||||
QObject(parent),
|
|
||||||
d(new SimulatorControlPrivate)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
SimulatorControl::~SimulatorControl()
|
|
||||||
{
|
|
||||||
delete d;
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<SimulatorInfo> SimulatorControl::availableSimulators()
|
QList<SimulatorInfo> SimulatorControl::availableSimulators()
|
||||||
{
|
{
|
||||||
return SimulatorControlPrivate::availableDevices;
|
return s_availableDevices;
|
||||||
}
|
}
|
||||||
|
|
||||||
static QList<SimulatorInfo> getAllSimulatorDevices()
|
static QList<SimulatorInfo> getAllSimulatorDevices()
|
||||||
@@ -267,21 +257,21 @@ QFuture<QList<DeviceTypeInfo> > SimulatorControl::updateDeviceTypes()
|
|||||||
{
|
{
|
||||||
QFuture< QList<DeviceTypeInfo> > future = Utils::runAsync(getAvailableDeviceTypes);
|
QFuture< QList<DeviceTypeInfo> > future = Utils::runAsync(getAvailableDeviceTypes);
|
||||||
Utils::onResultReady(future, [](const QList<DeviceTypeInfo> &deviceTypes) {
|
Utils::onResultReady(future, [](const QList<DeviceTypeInfo> &deviceTypes) {
|
||||||
SimulatorControlPrivate::availableDeviceTypes = deviceTypes;
|
s_availableDeviceTypes = deviceTypes;
|
||||||
});
|
});
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<RuntimeInfo> SimulatorControl::availableRuntimes()
|
QList<RuntimeInfo> SimulatorControl::availableRuntimes()
|
||||||
{
|
{
|
||||||
return SimulatorControlPrivate::availableRuntimes;
|
return s_availableRuntimes;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<QList<RuntimeInfo> > SimulatorControl::updateRuntimes()
|
QFuture<QList<RuntimeInfo> > SimulatorControl::updateRuntimes()
|
||||||
{
|
{
|
||||||
QFuture< QList<RuntimeInfo> > future = Utils::runAsync(getAvailableRuntimes);
|
QFuture< QList<RuntimeInfo> > future = Utils::runAsync(getAvailableRuntimes);
|
||||||
Utils::onResultReady(future, [](const QList<RuntimeInfo> &runtimes) {
|
Utils::onResultReady(future, [](const QList<RuntimeInfo> &runtimes) {
|
||||||
SimulatorControlPrivate::availableRuntimes = runtimes;
|
s_availableRuntimes = runtimes;
|
||||||
});
|
});
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
@@ -289,9 +279,8 @@ QFuture<QList<RuntimeInfo> > SimulatorControl::updateRuntimes()
|
|||||||
QFuture< QList<SimulatorInfo> > SimulatorControl::updateAvailableSimulators()
|
QFuture< QList<SimulatorInfo> > SimulatorControl::updateAvailableSimulators()
|
||||||
{
|
{
|
||||||
QFuture< QList<SimulatorInfo> > future = Utils::runAsync(getAvailableSimulators);
|
QFuture< QList<SimulatorInfo> > future = Utils::runAsync(getAvailableSimulators);
|
||||||
Utils::onResultReady(future, [](const QList<SimulatorInfo> &devices) {
|
Utils::onResultReady(future,
|
||||||
SimulatorControlPrivate::availableDevices = devices;
|
[](const QList<SimulatorInfo> &devices) { s_availableDevices = devices; });
|
||||||
});
|
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,53 +288,60 @@ bool SimulatorControl::isSimulatorRunning(const QString &simUdid)
|
|||||||
{
|
{
|
||||||
if (simUdid.isEmpty())
|
if (simUdid.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
return SimulatorControlPrivate::deviceInfo(simUdid).isBooted();
|
return deviceInfo(simUdid).isBooted();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SimulatorControl::bundleIdentifier(const Utils::FilePath &bundlePath)
|
QString SimulatorControl::bundleIdentifier(const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
return SimulatorControlPrivate::bundleIdentifier(bundlePath);
|
return Internal::bundleIdentifier(bundlePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SimulatorControl::bundleExecutable(const Utils::FilePath &bundlePath)
|
QString SimulatorControl::bundleExecutable(const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
return SimulatorControlPrivate::bundleExecutable(bundlePath);
|
return Internal::bundleExecutable(bundlePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData> SimulatorControl::startSimulator(const QString &simUdid) const
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::startSimulator(const QString &simUdid)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::startSimulator, d, simUdid);
|
return Utils::runAsync(Internal::startSimulator, simUdid);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData>
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::installApp(
|
||||||
SimulatorControl::installApp(const QString &simUdid, const Utils::FilePath &bundlePath) const
|
const QString &simUdid, const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::installApp, d, simUdid, bundlePath);
|
return Utils::runAsync(Internal::installApp, simUdid, bundlePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData>
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::launchApp(const QString &simUdid,
|
||||||
SimulatorControl::launchApp(const QString &simUdid, const QString &bundleIdentifier,
|
const QString &bundleIdentifier,
|
||||||
bool waitForDebugger, const QStringList &extraArgs,
|
bool waitForDebugger,
|
||||||
const QString &stdoutPath, const QString &stderrPath) const
|
const QStringList &extraArgs,
|
||||||
|
const QString &stdoutPath,
|
||||||
|
const QString &stderrPath)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::launchApp, d, simUdid, bundleIdentifier,
|
return Utils::runAsync(Internal::launchApp,
|
||||||
waitForDebugger, extraArgs, stdoutPath, stderrPath);
|
simUdid,
|
||||||
|
bundleIdentifier,
|
||||||
|
waitForDebugger,
|
||||||
|
extraArgs,
|
||||||
|
stdoutPath,
|
||||||
|
stderrPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData> SimulatorControl::deleteSimulator(const QString &simUdid) const
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::deleteSimulator(const QString &simUdid)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::deleteSimulator, d, simUdid);
|
return Utils::runAsync(Internal::deleteSimulator, simUdid);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData> SimulatorControl::resetSimulator(const QString &simUdid) const
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::resetSimulator(const QString &simUdid)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::resetSimulator, d, simUdid);
|
return Utils::runAsync(Internal::resetSimulator, simUdid);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData> SimulatorControl::renameSimulator(const QString &simUdid,
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::renameSimulator(const QString &simUdid,
|
||||||
const QString &newName) const
|
const QString &newName)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::renameSimulator, d, simUdid, newName);
|
return Utils::runAsync(Internal::renameSimulator, simUdid, newName);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData>
|
QFuture<SimulatorControl::ResponseData>
|
||||||
@@ -353,25 +349,18 @@ SimulatorControl::createSimulator(const QString &name,
|
|||||||
const DeviceTypeInfo &deviceType,
|
const DeviceTypeInfo &deviceType,
|
||||||
const RuntimeInfo &runtime)
|
const RuntimeInfo &runtime)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::createSimulator, d, name, deviceType, runtime);
|
return Utils::runAsync(Internal::createSimulator, name, deviceType, runtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SimulatorControl::ResponseData> SimulatorControl::takeSceenshot(const QString &simUdid,
|
QFuture<SimulatorControl::ResponseData> SimulatorControl::takeSceenshot(const QString &simUdid,
|
||||||
const QString &filePath)
|
const QString &filePath)
|
||||||
{
|
{
|
||||||
return Utils::runAsync(&SimulatorControlPrivate::takeSceenshot, d, simUdid, filePath);
|
return Utils::runAsync(Internal::takeSceenshot, simUdid, filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Static members
|
// Static members
|
||||||
QList<SimulatorInfo> SimulatorControlPrivate::availableDevices;
|
|
||||||
QList<DeviceTypeInfo> SimulatorControlPrivate::availableDeviceTypes;
|
|
||||||
QList<RuntimeInfo> SimulatorControlPrivate::availableRuntimes;
|
|
||||||
|
|
||||||
SimulatorControlPrivate::SimulatorControlPrivate() = default;
|
SimulatorInfo deviceInfo(const QString &simUdid)
|
||||||
|
|
||||||
SimulatorControlPrivate::~SimulatorControlPrivate() = default;
|
|
||||||
|
|
||||||
SimulatorInfo SimulatorControlPrivate::deviceInfo(const QString &simUdid)
|
|
||||||
{
|
{
|
||||||
auto matchDevice = [simUdid](const SimulatorInfo &device) {
|
auto matchDevice = [simUdid](const SimulatorInfo &device) {
|
||||||
return device.identifier == simUdid;
|
return device.identifier == simUdid;
|
||||||
@@ -383,7 +372,7 @@ SimulatorInfo SimulatorControlPrivate::deviceInfo(const QString &simUdid)
|
|||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SimulatorControlPrivate::bundleIdentifier(const Utils::FilePath &bundlePath)
|
QString bundleIdentifier(const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
QString bundleID;
|
QString bundleID;
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
@@ -403,7 +392,7 @@ QString SimulatorControlPrivate::bundleIdentifier(const Utils::FilePath &bundleP
|
|||||||
return bundleID;
|
return bundleID;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SimulatorControlPrivate::bundleExecutable(const Utils::FilePath &bundlePath)
|
QString bundleExecutable(const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
QString executable;
|
QString executable;
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
@@ -422,8 +411,7 @@ QString SimulatorControlPrivate::bundleExecutable(const Utils::FilePath &bundleP
|
|||||||
return executable;
|
return executable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void startSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
|
||||||
const QString &simUdid)
|
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
SimulatorInfo simInfo = deviceInfo(simUdid);
|
SimulatorInfo simInfo = deviceInfo(simUdid);
|
||||||
@@ -480,8 +468,9 @@ void SimulatorControlPrivate::startSimulator(QFutureInterface<SimulatorControl::
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void installApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid, const Utils::FilePath &bundlePath)
|
const QString &simUdid,
|
||||||
|
const Utils::FilePath &bundlePath)
|
||||||
{
|
{
|
||||||
QTC_CHECK(bundlePath.exists());
|
QTC_CHECK(bundlePath.exists());
|
||||||
|
|
||||||
@@ -493,10 +482,13 @@ void SimulatorControlPrivate::installApp(QFutureInterface<SimulatorControl::Resp
|
|||||||
fi.reportResult(response);
|
fi.reportResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid, const QString &bundleIdentifier,
|
const QString &simUdid,
|
||||||
bool waitForDebugger, const QStringList &extraArgs,
|
const QString &bundleIdentifier,
|
||||||
const QString &stdoutPath, const QString &stderrPath)
|
bool waitForDebugger,
|
||||||
|
const QStringList &extraArgs,
|
||||||
|
const QString &stdoutPath,
|
||||||
|
const QString &stderrPath)
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
if (!bundleIdentifier.isEmpty() && !fi.isCanceled()) {
|
if (!bundleIdentifier.isEmpty() && !fi.isCanceled()) {
|
||||||
@@ -531,8 +523,7 @@ void SimulatorControlPrivate::launchApp(QFutureInterface<SimulatorControl::Respo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void deleteSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
|
||||||
const QString &simUdid)
|
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
response.success = runSimCtlCommand({"delete", simUdid}, nullptr, &response.commandOutput);
|
response.success = runSimCtlCommand({"delete", simUdid}, nullptr, &response.commandOutput);
|
||||||
@@ -541,8 +532,7 @@ void SimulatorControlPrivate::deleteSimulator(QFutureInterface<SimulatorControl:
|
|||||||
fi.reportResult(response);
|
fi.reportResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void resetSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi, const QString &simUdid)
|
||||||
const QString &simUdid)
|
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
response.success = runSimCtlCommand({"erase", simUdid}, nullptr, &response.commandOutput);
|
response.success = runSimCtlCommand({"erase", simUdid}, nullptr, &response.commandOutput);
|
||||||
@@ -551,8 +541,9 @@ void SimulatorControlPrivate::resetSimulator(QFutureInterface<SimulatorControl::
|
|||||||
fi.reportResult(response);
|
fi.reportResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void renameSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid, const QString &newName)
|
const QString &simUdid,
|
||||||
|
const QString &newName)
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
response.success = runSimCtlCommand({"rename", simUdid, newName},
|
response.success = runSimCtlCommand({"rename", simUdid, newName},
|
||||||
@@ -563,7 +554,7 @@ void SimulatorControlPrivate::renameSimulator(QFutureInterface<SimulatorControl:
|
|||||||
fi.reportResult(response);
|
fi.reportResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void createSimulator(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &name,
|
const QString &name,
|
||||||
const DeviceTypeInfo &deviceType,
|
const DeviceTypeInfo &deviceType,
|
||||||
const RuntimeInfo &runtime)
|
const RuntimeInfo &runtime)
|
||||||
@@ -582,8 +573,9 @@ void SimulatorControlPrivate::createSimulator(QFutureInterface<SimulatorControl:
|
|||||||
fi.reportResult(response);
|
fi.reportResult(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SimulatorControlPrivate::takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
void takeSceenshot(QFutureInterface<SimulatorControl::ResponseData> &fi,
|
||||||
const QString &simUdid, const QString &filePath)
|
const QString &simUdid,
|
||||||
|
const QString &filePath)
|
||||||
{
|
{
|
||||||
SimulatorControl::ResponseData response(simUdid);
|
SimulatorControl::ResponseData response(simUdid);
|
||||||
response.success = runSimCtlCommand({"io", simUdid, "screenshot", filePath},
|
response.success = runSimCtlCommand({"io", simUdid, "screenshot", filePath},
|
||||||
|
@@ -74,9 +74,8 @@ public:
|
|||||||
|
|
||||||
class DeviceTypeInfo : public SimulatorEntity {};
|
class DeviceTypeInfo : public SimulatorEntity {};
|
||||||
|
|
||||||
class SimulatorControl : public QObject
|
class SimulatorControl
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
public:
|
public:
|
||||||
struct ResponseData {
|
struct ResponseData {
|
||||||
ResponseData(const QString & udid):
|
ResponseData(const QString & udid):
|
||||||
@@ -88,10 +87,6 @@ public:
|
|||||||
QString commandOutput;
|
QString commandOutput;
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
|
||||||
explicit SimulatorControl(QObject* parent = nullptr);
|
|
||||||
~SimulatorControl() override;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static QList<DeviceTypeInfo> availableDeviceTypes();
|
static QList<DeviceTypeInfo> availableDeviceTypes();
|
||||||
static QFuture<QList<DeviceTypeInfo> > updateDeviceTypes();
|
static QFuture<QList<DeviceTypeInfo> > updateDeviceTypes();
|
||||||
@@ -104,23 +99,24 @@ public:
|
|||||||
static QString bundleExecutable(const Utils::FilePath &bundlePath);
|
static QString bundleExecutable(const Utils::FilePath &bundlePath);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QFuture<ResponseData> startSimulator(const QString &simUdid) const;
|
static QFuture<ResponseData> startSimulator(const QString &simUdid);
|
||||||
QFuture<ResponseData> installApp(const QString &simUdid, const Utils::FilePath &bundlePath) const;
|
static QFuture<ResponseData> installApp(const QString &simUdid,
|
||||||
QFuture<ResponseData> launchApp(const QString &simUdid, const QString &bundleIdentifier,
|
const Utils::FilePath &bundlePath);
|
||||||
bool waitForDebugger, const QStringList &extraArgs,
|
static QFuture<ResponseData> launchApp(const QString &simUdid,
|
||||||
|
const QString &bundleIdentifier,
|
||||||
|
bool waitForDebugger,
|
||||||
|
const QStringList &extraArgs,
|
||||||
const QString &stdoutPath = QString(),
|
const QString &stdoutPath = QString(),
|
||||||
const QString& stderrPath = QString()) const;
|
const QString &stderrPath = QString());
|
||||||
QFuture<ResponseData> deleteSimulator(const QString &simUdid) const;
|
static QFuture<ResponseData> deleteSimulator(const QString &simUdid);
|
||||||
QFuture<ResponseData> resetSimulator(const QString &simUdid) const;
|
static QFuture<ResponseData> resetSimulator(const QString &simUdid);
|
||||||
QFuture<ResponseData> renameSimulator(const QString &simUdid, const QString &newName) const;
|
static QFuture<ResponseData> renameSimulator(const QString &simUdid, const QString &newName);
|
||||||
QFuture<ResponseData> createSimulator(const QString &name,
|
static QFuture<ResponseData> createSimulator(const QString &name,
|
||||||
const DeviceTypeInfo &deviceType,
|
const DeviceTypeInfo &deviceType,
|
||||||
const RuntimeInfo &runtime);
|
const RuntimeInfo &runtime);
|
||||||
QFuture<ResponseData> takeSceenshot(const QString &simUdid, const QString &filePath);
|
static QFuture<ResponseData> takeSceenshot(const QString &simUdid, const QString &filePath);
|
||||||
|
|
||||||
private:
|
|
||||||
SimulatorControlPrivate *d;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Ios
|
} // namespace Ios
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user