[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:08:23 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=6b7d7eb

The following commit has been merged in the master branch:
commit 6b7d7eb6f091c647c82f600a0f0b3507fa6ac328
Author: Marcin Ziemiński <zieminn at gmail.com>
Date:   Wed Aug 13 18:34:04 2014 +0200

    Changed specification of fingerprint management functions.
    
    Signed-off-by: Marcin Ziemiński <zieminn at gmail.com>
---
 otr-proxy/KTpProxy/otr-manager.cpp           | 21 ++++----
 otr-proxy/KTpProxy/otr-manager.h             |  4 +-
 otr-proxy/KTpProxy/otr-utils.cpp             | 17 ++++++-
 otr-proxy/KTpProxy/otr-utils.h               |  2 +
 otr-proxy/KTpProxy/proxy-service-adaptee.cpp | 32 ++++++------
 otr-proxy/KTpProxy/proxy-service-adaptee.h   |  4 +-
 otr-proxy/KTpProxy/proxy-service.cpp         |  8 +--
 otr-proxy/KTpProxy/proxy-service.h           |  4 +-
 otr-proxy/KTpProxy/svc-proxy-service.cpp     | 12 ++---
 otr-proxy/KTpProxy/svc-proxy-service.h       | 24 +++++----
 otr-proxy/KTpProxy/types.cpp                 |  5 +-
 otr-proxy/KTpProxy/types.h                   |  1 +
 otr-proxy/spec/ProxyService.xml              | 16 ++++--
 otr-proxy/test/otr-test.cpp                  | 74 ++++++++++++++++++++++------
 14 files changed, 147 insertions(+), 77 deletions(-)

diff --git a/otr-proxy/KTpProxy/otr-manager.cpp b/otr-proxy/KTpProxy/otr-manager.cpp
index 3d65594..e150899 100644
--- a/otr-proxy/KTpProxy/otr-manager.cpp
+++ b/otr-proxy/KTpProxy/otr-manager.cpp
@@ -531,40 +531,41 @@ Tp::FingerprintInfoList Manager::getKnownFingerprints(const QString &accountId)
             const QString username = QLatin1String(context->username);
             const QString hrFp = utils::humanReadable(fingerprint->fingerprint);
             const bool trusted = otrl_context_is_fingerprint_trusted(fingerprint);
+            const bool used = utils::isFingerprintInUse(fingerprint);
 
-            fingerprints << Tp::FingerprintInfo { username, hrFp, trusted };
+            fingerprints << Tp::FingerprintInfo { username, hrFp, trusted, used };
         }
     }
 
     return fingerprints;
 }
 
-bool Manager::trustFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprintInfo)
+bool Manager::trustFingerprint(const QString &accountId, const QString &contactName, const QString &fp, bool trust)
 {
     Fingerprint *fingerprint = utils::findFingerprint(
-            getUserState(accountId)->userState(), fingerprintInfo.fingerprint, fingerprintInfo.contactName);
+            getUserState(accountId)->userState(), fp, contactName);
 
     if(fingerprint != nullptr) {
-        if(fingerprintInfo.isVerified) {
+        if(trust) {
             otrl_context_set_trust(fingerprint, "VERIFIED");
         } else {
             otrl_context_set_trust(fingerprint, NULL);
         }
 
-        Q_EMIT fingerprintTrusted(accountId, fingerprintInfo.fingerprint, fingerprintInfo.isVerified);
+        Q_EMIT fingerprintTrusted(accountId, fp, trust);
         return true;
     }
 
     return false;
 }
 
-bool Manager::forgetFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprintInfo)
+bool Manager::forgetFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint)
 {
-    Fingerprint *fingerprint = utils::findFingerprint(
-            getUserState(accountId)->userState(), fingerprintInfo.fingerprint, fingerprintInfo.contactName);
+    Fingerprint *fp = utils::findFingerprint(
+            getUserState(accountId)->userState(), fingerprint, contactName);
 
-    if(fingerprint != nullptr) {
-        otrl_context_forget_fingerprint(fingerprint, 1);
+    if(fp != nullptr && !utils::isFingerprintInUse(fp)) {
+        otrl_context_forget_fingerprint(fp, 1);
         saveFingerprints(accountId);
 
         return true;
diff --git a/otr-proxy/KTpProxy/otr-manager.h b/otr-proxy/KTpProxy/otr-manager.h
index 8b2d6d3..aed1ee4 100644
--- a/otr-proxy/KTpProxy/otr-manager.h
+++ b/otr-proxy/KTpProxy/otr-manager.h
@@ -65,8 +65,8 @@ namespace OTR
             KeyGenerationWorker* createNewPrivateKey(const QString &accountId, const QString &accountName);
             QString getFingerprintFor(const QString &accountId, const QString &accountName);
             Tp::FingerprintInfoList getKnownFingerprints(const QString &accountId);
-            bool trustFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint);
-            bool forgetFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint);
+            bool trustFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint, bool trust);
+            bool forgetFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint);
 
             void createInstag(Session *session);
 
diff --git a/otr-proxy/KTpProxy/otr-utils.cpp b/otr-proxy/KTpProxy/otr-utils.cpp
index 3d376cc..1a60f07 100644
--- a/otr-proxy/KTpProxy/otr-utils.cpp
+++ b/otr-proxy/KTpProxy/otr-utils.cpp
@@ -37,7 +37,7 @@ namespace utils
             for(fingerprint = context->fingerprint_root.next;
                     fingerprint != nullptr; fingerprint = fingerprint->next)
             {
-                if(utils::humanReadable(fingerprint->fingerprint) == fp) {
+                if(humanReadable(fingerprint->fingerprint) == fp) {
                     return fingerprint;
                 }
             }
@@ -46,6 +46,21 @@ namespace utils
         return fingerprint;
     }
 
+    bool isFingerprintInUse(Fingerprint *fingerprint)
+    {
+        // check if used in all parent contexts
+        for(ConnContext *ctx_iter = fingerprint->context->m_context;
+                ctx_iter != nullptr && ctx_iter->m_context == fingerprint->context->m_context;
+                ctx_iter = ctx_iter->next)
+        {
+            if(ctx_iter->active_fingerprint == fingerprint) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     TrustLevel getTrustLevel(const SessionContext &ctx, OtrlUserState userState, otrl_instag_t instance)
     {
         ConnContext *context = otrl_context_find(
diff --git a/otr-proxy/KTpProxy/otr-utils.h b/otr-proxy/KTpProxy/otr-utils.h
index a9ea8a9..ce96c85 100644
--- a/otr-proxy/KTpProxy/otr-utils.h
+++ b/otr-proxy/KTpProxy/otr-utils.h
@@ -53,6 +53,8 @@ namespace utils
 
     Fingerprint* findFingerprint(OtrlUserState userState, const QString &fp, const QString &user);
 
+    bool isFingerprintInUse(Fingerprint *fingerprint);
+
     inline QString accountIdFor(const QDBusObjectPath &objectPath)
     {
         QStringList elems = objectPath.path().split(QLatin1Char('/'));
diff --git a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp b/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
index 94a6e0d..509349d 100644
--- a/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
+++ b/otr-proxy/KTpProxy/proxy-service-adaptee.cpp
@@ -92,7 +92,7 @@ void ProxyServiceAdaptee::generatePrivateKey(const QDBusObjectPath &accountPath,
         const Tp::Service::ProxyServiceAdaptor::GeneratePrivateKeyContextPtr &context)
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
-    if(ac && ac->isValidAccount() &&
+    if(ac && ac->isValid() &&
             ps->createNewPrivateKey(OTR::utils::accountIdFor(accountPath), ac->displayName())) {
         context->setFinished();
     } else {
@@ -106,10 +106,10 @@ void ProxyServiceAdaptee::getFingerprintForAccount(QDBusObjectPath accountPath,
         const Tp::Service::ProxyServiceAdaptor::GetFingerprintForAccountContextPtr &context)
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
-    if(ac && ac->isValidAccount()) {
+    if(ac && ac->isValid()) {
         context->setFinished(ps->getFingerprintFor(OTR::utils::accountIdFor(accountPath), ac->displayName()));
     } else {
-        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such valid account"));
+        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such account"));
     }
 }
 
@@ -117,40 +117,40 @@ void ProxyServiceAdaptee::getKnownFingerprints(const QDBusObjectPath &accountPat
         const Tp::Service::ProxyServiceAdaptor::GetKnownFingerprintsContextPtr &context)
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
-    if(ac && ac->isValidAccount()) {
+    if(ac && ac->isValid()) {
         context->setFinished(ps->getKnownFingerprints(OTR::utils::accountIdFor(accountPath)));
     } else {
-        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such valid account"));
+        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such account"));
     }
 }
 
-void ProxyServiceAdaptee::trustFingerprint(const QDBusObjectPath &accountPath, const Tp::FingerprintInfo &fingerprintInfo,
-        const Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr &context)
+void ProxyServiceAdaptee::trustFingerprint(const QDBusObjectPath &accountPath, const QString &contactName,
+        const QString &fingerprint, bool trust, const Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr &context)
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
-    if(ac && ac->isValidAccount()) {
-        if(ps->trustFingerprint(OTR::utils::accountIdFor(accountPath), fingerprintInfo)) {
+    if(ac && ac->isValid()) {
+        if(ps->trustFingerprint(OTR::utils::accountIdFor(accountPath), contactName, fingerprint, trust)) {
             context->setFinished();
         } else {
             context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("Invalid finerprint info"));
         }
     } else {
-        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such valid account"));
+        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such account"));
     }
 }
 
-void ProxyServiceAdaptee::forgetFingerprint(const QDBusObjectPath &accountPath, const Tp::FingerprintInfo &fingerprintInfo,
-        const Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr &context)
+void ProxyServiceAdaptee::forgetFingerprint(const QDBusObjectPath &accountPath, const QString &contactName,
+        const QString &fingerprint, const Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr &context)
 {
     Tp::AccountPtr ac = ps->accountManager()->accountForObjectPath(accountPath.path());
-    if(ac && ac->isValidAccount()) {
-        if(ps->forgetFingerprint(OTR::utils::accountIdFor(accountPath), fingerprintInfo)) {
+    if(ac && ac->isValid()) {
+        if(ps->forgetFingerprint(OTR::utils::accountIdFor(accountPath), contactName, fingerprint)) {
             context->setFinished();
         } else {
             context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT,
-                   QLatin1String("Invalid finerprint info"));
+                   QLatin1String("Invalid finerprint info or fingerpirnt is in use"));
         }
     } else {
-        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such valid account"));
+        context->setFinishedWithError(TP_QT_ERROR_INVALID_ARGUMENT, QLatin1String("No such account"));
     }
 }
diff --git a/otr-proxy/KTpProxy/proxy-service-adaptee.h b/otr-proxy/KTpProxy/proxy-service-adaptee.h
index 5a5f951..25b5e1e 100644
--- a/otr-proxy/KTpProxy/proxy-service-adaptee.h
+++ b/otr-proxy/KTpProxy/proxy-service-adaptee.h
@@ -62,9 +62,9 @@ class ProxyServiceAdaptee : public QObject
                 const Tp::Service::ProxyServiceAdaptor::GetFingerprintForAccountContextPtr &context);
         void getKnownFingerprints(const QDBusObjectPath &account,
                 const Tp::Service::ProxyServiceAdaptor::GetKnownFingerprintsContextPtr &context);
-        void trustFingerprint(const QDBusObjectPath &account, const Tp::FingerprintInfo &fingerprintInfo,
+        void trustFingerprint(const QDBusObjectPath &account, const QString &contactName, const QString &fingerprint, bool trust,
                 const Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr &context);
-        void forgetFingerprint(const QDBusObjectPath &account, const Tp::FingerprintInfo &fingerprintInfo,
+        void forgetFingerprint(const QDBusObjectPath &account, const QString &contactName, const QString &fingerprint,
                 const Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr &context);
 
     private Q_SLOTS:
diff --git a/otr-proxy/KTpProxy/proxy-service.cpp b/otr-proxy/KTpProxy/proxy-service.cpp
index ef3090c..79a0d00 100644
--- a/otr-proxy/KTpProxy/proxy-service.cpp
+++ b/otr-proxy/KTpProxy/proxy-service.cpp
@@ -224,14 +224,14 @@ Tp::FingerprintInfoList ProxyService::getKnownFingerprints(const QString &accoun
     return manager.getKnownFingerprints(accountId);
 }
 
-bool ProxyService::trustFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint)
+bool ProxyService::trustFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint, bool trust)
 {
-    return manager.trustFingerprint(accountId, fingerprint);
+    return manager.trustFingerprint(accountId, contactName, fingerprint, trust);
 }
 
-bool ProxyService::forgetFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint)
+bool ProxyService::forgetFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint)
 {
-    return manager.forgetFingerprint(accountId, fingerprint);
+    return manager.forgetFingerprint(accountId, contactName, fingerprint);
 }
 
 void ProxyService::onKeyGenerationThreadFinished()
diff --git a/otr-proxy/KTpProxy/proxy-service.h b/otr-proxy/KTpProxy/proxy-service.h
index b384d42..3d46430 100644
--- a/otr-proxy/KTpProxy/proxy-service.h
+++ b/otr-proxy/KTpProxy/proxy-service.h
@@ -60,8 +60,8 @@ class ProxyService : public Tp::DBusService
         bool createNewPrivateKey(const QString &accountId, const QString &accountName);
         QString getFingerprintFor(const QString &accountId, const QString &accountName);
         Tp::FingerprintInfoList getKnownFingerprints(const QString &accountId);
-        bool trustFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint);
-        bool forgetFingerprint(const QString &accountId, const Tp::FingerprintInfo &fingerprint);
+        bool trustFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint, bool trust);
+        bool forgetFingerprint(const QString &accountId, const QString &contactName, const QString &fingerprint);
 
         OTR::Manager* managerOTR();
         Tp::AccountManagerPtr accountManager();
diff --git a/otr-proxy/KTpProxy/svc-proxy-service.cpp b/otr-proxy/KTpProxy/svc-proxy-service.cpp
index 36ecdc9..b2b42f1 100644
--- a/otr-proxy/KTpProxy/svc-proxy-service.cpp
+++ b/otr-proxy/KTpProxy/svc-proxy-service.cpp
@@ -75,9 +75,9 @@ Tp::FingerprintInfoList ProxyServiceAdaptor::GetKnownFingerprints(const QDBusObj
     return Tp::FingerprintInfoList();
 }
 
-void ProxyServiceAdaptor::TrustFingerprint(const QDBusObjectPath& account, const Tp::FingerprintInfo& fingerprint, const QDBusMessage& dbusMessage)
+void ProxyServiceAdaptor::TrustFingerprint(const QDBusObjectPath& account, const QString& contactName, const QString& fingerprint, bool trust, const QDBusMessage& dbusMessage)
 {
-    if (!adaptee()->metaObject()->indexOfMethod("trustFingerprint(QDBusObjectPath,Tp::FingerprintInfo,Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr)") == -1) {
+    if (!adaptee()->metaObject()->indexOfMethod("trustFingerprint(QDBusObjectPath,QString,QString,bool,Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr)") == -1) {
         dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")));
         return;
     }
@@ -85,13 +85,13 @@ void ProxyServiceAdaptor::TrustFingerprint(const QDBusObjectPath& account, const
     TrustFingerprintContextPtr ctx = TrustFingerprintContextPtr(
             new Tp::MethodInvocationContext<  >(dbusConnection(), dbusMessage));
     QMetaObject::invokeMethod(adaptee(), "trustFingerprint",
-        Q_ARG(QDBusObjectPath, account), Q_ARG(Tp::FingerprintInfo, fingerprint),
+        Q_ARG(QDBusObjectPath, account), Q_ARG(QString, contactName), Q_ARG(QString, fingerprint), Q_ARG(bool, trust),
         Q_ARG(Tp::Service::ProxyServiceAdaptor::TrustFingerprintContextPtr, ctx));
 }
 
-void ProxyServiceAdaptor::ForgetFingerprint(const QDBusObjectPath& account, const Tp::FingerprintInfo& fingerprint, const QDBusMessage& dbusMessage)
+void ProxyServiceAdaptor::ForgetFingerprint(const QDBusObjectPath& account, const QString& contactName, const QString& fingerprint, const QDBusMessage& dbusMessage)
 {
-    if (!adaptee()->metaObject()->indexOfMethod("forgetFingerprint(QDBusObjectPath,Tp::FingerprintInfo,Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr)") == -1) {
+    if (!adaptee()->metaObject()->indexOfMethod("forgetFingerprint(QDBusObjectPath,QString,QString,Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr)") == -1) {
         dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")));
         return;
     }
@@ -99,7 +99,7 @@ void ProxyServiceAdaptor::ForgetFingerprint(const QDBusObjectPath& account, cons
     ForgetFingerprintContextPtr ctx = ForgetFingerprintContextPtr(
             new Tp::MethodInvocationContext<  >(dbusConnection(), dbusMessage));
     QMetaObject::invokeMethod(adaptee(), "forgetFingerprint",
-        Q_ARG(QDBusObjectPath, account), Q_ARG(Tp::FingerprintInfo, fingerprint),
+        Q_ARG(QDBusObjectPath, account), Q_ARG(QString, contactName), Q_ARG(QString, fingerprint),
         Q_ARG(Tp::Service::ProxyServiceAdaptor::ForgetFingerprintContextPtr, ctx));
 }
 
diff --git a/otr-proxy/KTpProxy/svc-proxy-service.h b/otr-proxy/KTpProxy/svc-proxy-service.h
index b87f6e4..c2c76fe 100644
--- a/otr-proxy/KTpProxy/svc-proxy-service.h
+++ b/otr-proxy/KTpProxy/svc-proxy-service.h
@@ -45,21 +45,20 @@ class TP_QT_EXPORT ProxyServiceAdaptor : public Tp::AbstractAdaptor
 "    </method>
"
 "    <method name=\"GetKnownFingerprints\">
"
 "      <arg direction=\"in\" type=\"o\" name=\"account\"/>
"
-"      <arg direction=\"out\" type=\"a(ssb)\" name=\"fingerprints\">
"
+"      <arg direction=\"out\" type=\"a(ssbb)\" name=\"fingerprints\">
"
 "        <annotation value=\"Tp::FingerprintInfoList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>
"
 "      </arg>
"
 "    </method>
"
 "    <method name=\"TrustFingerprint\">
"
 "      <arg direction=\"in\" type=\"o\" name=\"account\"/>
"
-"      <arg direction=\"in\" type=\"(ssb)\" name=\"fingerprint\">
"
-"        <annotation value=\"Tp::FingerprintInfo\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>
"
-"      </arg>
"
+"      <arg direction=\"in\" type=\"s\" name=\"contactName\"/>
"
+"      <arg direction=\"in\" type=\"s\" name=\"fingerprint\"/>
"
+"      <arg direction=\"in\" type=\"b\" name=\"trust\"/>
"
 "    </method>
"
 "    <method name=\"ForgetFingerprint\">
"
 "      <arg direction=\"in\" type=\"o\" name=\"account\"/>
"
-"      <arg direction=\"in\" type=\"(ssb)\" name=\"fingerprint\">
"
-"        <annotation value=\"Tp::FingerprintInfo\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>
"
-"      </arg>
"
+"      <arg direction=\"in\" type=\"s\" name=\"contactName\"/>
"
+"      <arg direction=\"in\" type=\"s\" name=\"fingerprint\"/>
"
 "    </method>
"
 "    <signal name=\"ProxyConnected\">
"
 "      <arg type=\"o\" name=\"proxy\"/>
"
@@ -173,7 +172,7 @@ public Q_SLOTS: // METHODS
      * Begins a call to the exported D-Bus method 
-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list