Bearer/Connman: emit missing updateCompleted()

emit missing updateCompleted() in some conditions after
QNetworkConfigurationManager::updateConfigurations() is called.

* There is no wifi devices.
* The wifi device returns error when scan is called.

Change-Id: I2668644249a0584bf43efea95348424aa64ab4a6
Reviewed-by: Lorn Potter <lorn.potter@canonical.com>
bb10
Takumi ASAKI 2016-07-04 13:57:09 +09:00 committed by Takumi ASAKI
parent cc119dee73
commit b2029e9ca6
4 changed files with 21 additions and 10 deletions

View File

@ -85,7 +85,7 @@ void QConnmanEngine::initialize()
this, SLOT(updateServices(ConnmanMapList,QList<QDBusObjectPath>)));
connect(connmanManager,SIGNAL(servicesReady(QStringList)),this,SLOT(servicesReady(QStringList)));
connect(connmanManager,SIGNAL(scanFinished()),this,SLOT(finishedScan()));
connect(connmanManager,SIGNAL(scanFinished(bool)),this,SLOT(finishedScan(bool)));
foreach (const QString &servPath, connmanManager->getServices()) {
addServiceConfiguration(servPath);
@ -197,11 +197,15 @@ void QConnmanEngine::requestUpdate()
void QConnmanEngine::doRequestUpdate()
{
connmanManager->requestScan("wifi");
bool scanned = connmanManager->requestScan("wifi");
if (!scanned)
Q_EMIT updateCompleted();
}
void QConnmanEngine::finishedScan()
void QConnmanEngine::finishedScan(bool error)
{
if (error)
Q_EMIT updateCompleted();
}
void QConnmanEngine::updateServices(const ConnmanMapList &changed, const QList<QDBusObjectPath> &removed)

View File

@ -94,7 +94,7 @@ private Q_SLOTS:
void updateServices(const ConnmanMapList &changed, const QList<QDBusObjectPath> &removed);
void servicesReady(const QStringList &);
void finishedScan();
void finishedScan(bool error);
void changedModem();
void serviceStateChanged(const QString &state);
void configurationChange(QConnmanServiceInterface * service);

View File

@ -243,13 +243,16 @@ QStringList QConnmanManagerInterface::getServices()
return servicesList;
}
void QConnmanManagerInterface::requestScan(const QString &type)
bool QConnmanManagerInterface::requestScan(const QString &type)
{
bool scanned = false;
Q_FOREACH (QConnmanTechnologyInterface *tech, technologiesMap) {
if (tech->type() == type) {
tech->scan();
scanned = true;
}
}
return scanned;
}
void QConnmanManagerInterface::technologyAdded(const QDBusObjectPath &path, const QVariantMap &)
@ -259,7 +262,7 @@ void QConnmanManagerInterface::technologyAdded(const QDBusObjectPath &path, cons
QConnmanTechnologyInterface *tech;
tech = new QConnmanTechnologyInterface(path.path(),this);
technologiesMap.insert(path.path(),tech);
connect(tech,SIGNAL(scanFinished()),this,SIGNAL(scanFinished()));
connect(tech,SIGNAL(scanFinished(bool)),this,SIGNAL(scanFinished(bool)));
}
}
@ -495,7 +498,11 @@ void QConnmanTechnologyInterface::scan()
void QConnmanTechnologyInterface::scanReply(QDBusPendingCallWatcher *call)
{
Q_EMIT scanFinished();
QDBusPendingReply<QVariantMap> props_reply = *call;
if (props_reply.isError()) {
qDebug() << props_reply.error().message();
}
Q_EMIT scanFinished(props_reply.isError());
call->deleteLater();
}

View File

@ -108,7 +108,7 @@ public:
bool getOfflineMode();
QStringList getTechnologies();
QStringList getServices();
void requestScan(const QString &type);
bool requestScan(const QString &type);
QHash<QString, QConnmanTechnologyInterface *> technologiesMap;
@ -119,7 +119,7 @@ Q_SIGNALS:
void servicesChanged(const ConnmanMapList&, const QList<QDBusObjectPath> &);
void servicesReady(const QStringList &);
void scanFinished();
void scanFinished(bool error);
protected:
void connectNotify(const QMetaMethod &signal);
@ -204,7 +204,7 @@ public:
Q_SIGNALS:
void propertyChanged(const QString &, const QDBusVariant &value);
void propertyChangedContext(const QString &,const QString &,const QDBusVariant &);
void scanFinished();
void scanFinished(bool error);
protected:
void connectNotify(const QMetaMethod &signal);
QVariant getProperty(const QString &);