File indexing completed on 2023-09-24 04:02:11
0001 /* 0002 * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "fakebluez.h" 0008 #include "agentmanager.h" 0009 #include "devicemanager.h" 0010 #include "obexagentmanager.h" 0011 #include "obexclient.h" 0012 #include "objectmanager.h" 0013 #include "profilemanager.h" 0014 #include "testinterface.h" 0015 0016 #include <QDBusConnection> 0017 #include <QDebug> 0018 #include <QTimer> 0019 0020 // ObexObject 0021 class ObexObject : public QObject 0022 { 0023 public: 0024 explicit ObexObject(QObject *parent = nullptr) 0025 : QObject(parent) 0026 { 0027 QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/bluez/obex"), this); 0028 } 0029 }; 0030 0031 // FakeBluez 0032 FakeBluez::FakeBluez(QObject *parent) 0033 : QObject(parent) 0034 , m_testInterface(new TestInterface(this)) 0035 , m_objectManager(nullptr) 0036 , m_agentManager(nullptr) 0037 , m_profileManager(nullptr) 0038 , m_deviceManager(nullptr) 0039 , m_obexObject(nullptr) 0040 , m_obexAgentManager(nullptr) 0041 , m_obexClient(nullptr) 0042 { 0043 QDBusConnection::sessionBus().registerObject(QStringLiteral("/"), this); 0044 } 0045 0046 void FakeBluez::runTest(const QString &testName) 0047 { 0048 if (testName == QLatin1String("bluez-not-exporting-interfaces")) { 0049 runBluezNotExportingInterfacesTest(); 0050 } else if (testName == QLatin1String("bluez-empty-managed-objects")) { 0051 runBluezEmptyManagedObjectsTest(); 0052 } else if (testName == QLatin1String("bluez-no-adapters")) { 0053 runBluezNoAdaptersTest(); 0054 } else if (testName == QLatin1String("bluez-standard")) { 0055 runBluezStandardTest(); 0056 } 0057 0058 if (testName == QLatin1String("obex-not-exporting-interfaces")) { 0059 runObexNotExportingInterfacesTest(); 0060 } else if (testName == QLatin1String("obex-empty-managed-objects")) { 0061 runObexEmptyManagedObjectsTest(); 0062 } else if (testName == QLatin1String("obex-no-client")) { 0063 runObexNoClientTest(); 0064 } else if (testName == QLatin1String("obex-no-agentmanager")) { 0065 runObexNoAgentManagerTest(); 0066 } else if (testName == QLatin1String("obex-standard")) { 0067 runObexStandardTest(); 0068 } 0069 0070 if (!QDBusConnection::sessionBus().registerService(QStringLiteral("org.kde.bluezqt.fakebluez"))) { 0071 qWarning() << "Cannot register org.kde.bluezqt.fakebluez service!"; 0072 } 0073 } 0074 0075 void FakeBluez::runAction(const QString &object, const QString &actionName, const QVariantMap &properties) 0076 { 0077 m_actionObject = object; 0078 m_actionName = actionName; 0079 m_actionProperties = properties; 0080 0081 QTimer::singleShot(0, this, SLOT(doRunAction())); 0082 } 0083 0084 void FakeBluez::doRunAction() 0085 { 0086 if (m_actionObject == QLatin1String("agentmanager")) { 0087 m_agentManager->runAction(m_actionName, m_actionProperties); 0088 } else if (m_actionObject == QLatin1String("devicemanager")) { 0089 m_deviceManager->runAction(m_actionName, m_actionProperties); 0090 } 0091 0092 QTimer::singleShot(0, m_testInterface, SLOT(emitActionFinished())); 0093 } 0094 0095 void FakeBluez::clear() 0096 { 0097 // Everything is parented to ObjectManager 0098 delete m_objectManager; 0099 m_objectManager = nullptr; 0100 } 0101 0102 void FakeBluez::createObjectManager() 0103 { 0104 m_objectManager = new ObjectManager(this); 0105 } 0106 0107 void FakeBluez::createAgentManager() 0108 { 0109 m_agentManager = new AgentManager(m_objectManager); 0110 m_objectManager->addObject(m_agentManager); 0111 } 0112 0113 void FakeBluez::createProfileManager() 0114 { 0115 m_profileManager = new ProfileManager(m_objectManager); 0116 m_objectManager->addObject(m_profileManager); 0117 } 0118 0119 void FakeBluez::createDeviceManager() 0120 { 0121 m_deviceManager = new DeviceManager(m_objectManager); 0122 } 0123 0124 void FakeBluez::createObexObjectManager() 0125 { 0126 createObjectManager(); 0127 m_obexObject = new ObexObject(this); 0128 m_objectManager->addAutoDeleteObject(m_obexObject); 0129 } 0130 0131 void FakeBluez::createObexAgentManager() 0132 { 0133 m_obexAgentManager = new ObexAgentManager(m_obexObject); 0134 m_objectManager->addObject(m_obexAgentManager); 0135 } 0136 0137 void FakeBluez::createObexClient() 0138 { 0139 m_obexClient = new ObexClient(m_obexObject); 0140 m_objectManager->addObject(m_obexClient); 0141 } 0142 0143 void FakeBluez::runBluezNotExportingInterfacesTest() 0144 { 0145 clear(); 0146 } 0147 0148 void FakeBluez::runBluezEmptyManagedObjectsTest() 0149 { 0150 clear(); 0151 createObjectManager(); 0152 } 0153 0154 void FakeBluez::runBluezNoAdaptersTest() 0155 { 0156 clear(); 0157 createObjectManager(); 0158 createAgentManager(); 0159 createProfileManager(); 0160 } 0161 0162 void FakeBluez::runBluezStandardTest() 0163 { 0164 clear(); 0165 createObjectManager(); 0166 createDeviceManager(); 0167 createAgentManager(); 0168 createProfileManager(); 0169 } 0170 0171 void FakeBluez::runObexNotExportingInterfacesTest() 0172 { 0173 clear(); 0174 } 0175 0176 void FakeBluez::runObexEmptyManagedObjectsTest() 0177 { 0178 clear(); 0179 createObexObjectManager(); 0180 } 0181 0182 void FakeBluez::runObexNoClientTest() 0183 { 0184 clear(); 0185 createObexObjectManager(); 0186 createObexAgentManager(); 0187 } 0188 0189 void FakeBluez::runObexNoAgentManagerTest() 0190 { 0191 clear(); 0192 createObexObjectManager(); 0193 createObexClient(); 0194 } 0195 0196 void FakeBluez::runObexStandardTest() 0197 { 0198 clear(); 0199 createObexObjectManager(); 0200 createObexClient(); 0201 createObexAgentManager(); 0202 } 0203 0204 #include "moc_fakebluez.cpp"