on xenial help sign in
Connect our mock AccountsService background files with our mock liblightdm background files
de34465Michael Terry
tests/mocks/AccountsService/AccountsService.cpp+19−3
@@ -15,7 +15,9 @@
15 */
15 */
16
16
17#include "AccountsService.h"
17#include "AccountsService.h"
18+#include "MockUsersModel.h"
18
19
20+#include <QLightDM/UsersModel>
19#include <paths.h>
21#include <paths.h>
20
22
21AccountsService::AccountsService(QObject* parent)
23AccountsService::AccountsService(QObject* parent)
@@ -23,15 +25,17 @@ AccountsService::AccountsService(QObject* parent)
23 m_enableFingerprintIdentification(true),
25 m_enableFingerprintIdentification(true),
24 m_enableLauncherWhileLocked(true),
26 m_enableLauncherWhileLocked(true),
25 m_enableIndicatorsWhileLocked(true),
27 m_enableIndicatorsWhileLocked(true),
26− m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
28+ m_backgroundFile(),
27 m_statsWelcomeScreen(true),
29 m_statsWelcomeScreen(true),
28 m_failedLogins(0),
30 m_failedLogins(0),
29 m_failedFingerprintLogins(0),
31 m_failedFingerprintLogins(0),
30 m_demoEdges(false),
32 m_demoEdges(false),
31 m_demoEdgesCompleted(),
33 m_demoEdgesCompleted(),
32 m_hereEnabled(false),
34 m_hereEnabled(false),
33− m_hereLicensePath("")
35+ m_hereLicensePath(""),
36+ m_usersModel(new MockUsersModel(this))
34{
37{
38+ m_usersModel->setMockMode("full");
35}
39}
36
40
37QString AccountsService::user() const
41QString AccountsService::user() const
@@ -44,6 +48,7 @@ void AccountsService::setUser(const QString &user)
44 m_user = user;
48 m_user = user;
45 Q_EMIT userChanged();
49 Q_EMIT userChanged();
46 Q_EMIT passwordDisplayHintChanged();
50 Q_EMIT passwordDisplayHintChanged();
51+ Q_EMIT backgroundFileChanged();
47}
52}
48
53
49bool AccountsService::demoEdges() const
54bool AccountsService::demoEdges() const
@@ -111,7 +116,18 @@ void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileL
111
116
112QString AccountsService::backgroundFile() const
117QString AccountsService::backgroundFile() const
113{
118{
119+ if (!m_backgroundFile.isEmpty()) {
114− return m_backgroundFile;
120+ return m_backgroundFile;
121+ }
122+
123+ // Check if our mock user has a background set in liblightdm
124+ for (int i = 0; i < m_usersModel->count(); i++) {
125+ if (m_usersModel->data(i, QLightDM::UsersModel::NameRole) == m_user) {
126+ return m_usersModel->data(i, QLightDM::UsersModel::BackgroundPathRole).toString();
127+ }
128+ }
129+
130+ return QString();
115}
131}
116
132
117void AccountsService::setBackgroundFile(const QString &backgroundFile)
133void AccountsService::setBackgroundFile(const QString &backgroundFile)
tests/mocks/AccountsService/AccountsService.h+3
@@ -22,6 +22,8 @@
22#include <QStringList>
22#include <QStringList>
23#include <QVariant>
23#include <QVariant>
24
24
25+class MockUsersModel;
26+
25class AccountsService: public QObject
27class AccountsService: public QObject
26{
28{
27 Q_OBJECT
29 Q_OBJECT
@@ -163,6 +165,7 @@ private:
163 QString m_realName;
165 QString m_realName;
164 QStringList m_kbdMap;
166 QStringList m_kbdMap;
165 QString m_email;
167 QString m_email;
168+ MockUsersModel *m_usersModel;
166};
169};
167
170
168#endif
171#endif
tests/mocks/AccountsService/CMakeLists.txt+14
@@ -1,10 +1,24 @@
1+include_directories(
2+ ${CMAKE_CURRENT_BINARY_DIR}
3+ ${CMAKE_SOURCE_DIR}/plugins/LightDM
4+ ${CMAKE_SOURCE_DIR}/plugins/Utils
5+ ${CMAKE_SOURCE_DIR}/tests/mocks/LightDM/IntegratedLightDM
6+ )
7+
1add_library(MockAccountsService-qml MODULE
8add_library(MockAccountsService-qml MODULE
9+ ${CMAKE_SOURCE_DIR}/plugins/LightDM/UsersModel.cpp
10+ ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
11+ ${CMAKE_SOURCE_DIR}/tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp
2 AccountsService.cpp
12 AccountsService.cpp
3 plugin.cpp
13 plugin.cpp
4 )
14 )
5
15
6qt5_use_modules(MockAccountsService-qml DBus Qml)
16qt5_use_modules(MockAccountsService-qml DBus Qml)
7
17
18+target_link_libraries(MockAccountsService-qml
19+ MockLightDM
20+ )
21+
8add_unity8_mock(AccountsService 0.1 AccountsService
22add_unity8_mock(AccountsService 0.1 AccountsService
9 PREFIX mocks
23 PREFIX mocks
10 TARGETS MockAccountsService-qml
24 TARGETS MockAccountsService-qml
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp+5
@@ -19,6 +19,11 @@
19#include <QLightDM/UsersModel>
19#include <QLightDM/UsersModel>
20#include <QSortFilterProxyModel>
20#include <QSortFilterProxyModel>
21
21
22+MockUsersModel::MockUsersModel(QObject* parent)
23+ : UsersModel(parent)
24+{
25+}
26+
22QString MockUsersModel::mockMode() const
27QString MockUsersModel::mockMode() const
23{
28{
24 QLightDM::UsersModel* qUsersModel =
29 QLightDM::UsersModel* qUsersModel =
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.h+2
@@ -27,6 +27,8 @@ class MockUsersModel : public UsersModel
27 Q_PROPERTY(QString mockMode READ mockMode WRITE setMockMode NOTIFY mockModeChanged)
27 Q_PROPERTY(QString mockMode READ mockMode WRITE setMockMode NOTIFY mockModeChanged)
28
28
29public:
29public:
30+ explicit MockUsersModel(QObject* parent=0);
31+
30 QString mockMode() const;
32 QString mockMode() const;
31 void setMockMode(QString mockMode);
33 void setMockMode(QString mockMode);
32
34
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+12−1
@@ -17,6 +17,8 @@
17#include "UsersModelPrivate.h"
17#include "UsersModelPrivate.h"
18#include "UsersModel.h"
18#include "UsersModel.h"
19
19
20+#include <QDir>
21+
20namespace QLightDM
22namespace QLightDM
21{
23{
22
24
@@ -53,6 +55,15 @@ void UsersModelPrivate::resetEntries()
53 entries[i].uid = i + 1;
55 entries[i].uid = i + 1;
54 }
56 }
55
57
58+ // Assign backgrounds
59+ QDir backgroundDir("/usr/share/backgrounds");
60+ QStringList backgrounds = backgroundDir.entryList(QDir::Files);
61+ for (int i = 0; i < entries.size(); i++) {
62+ if (entries[i].background.isNull()) {
63+ entries[i].background = backgroundDir.filePath(backgrounds[i % backgrounds.size()]);
64+ }
65+ }
66+
56 q->endResetModel();
67 q->endResetModel();
57}
68}
58
69
@@ -96,7 +107,7 @@ void UsersModelPrivate::resetEntries_full()
96 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
107 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
97 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
108 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
98 { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, "ubuntu", 0 },
109 { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, "ubuntu", 0 },
99− { "color-background", "Color Background", "#dd4814", 0, false, false, "ubuntu", 0 },
110+ { "color-background", "Color Background", "#E95420", 0, false, false, "ubuntu", 0 },
100 // white and black are a bit redundant, but useful for manually testing if UI is still readable
111 // white and black are a bit redundant, but useful for manually testing if UI is still readable
101 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
112 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
102 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },
113 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },