on xenial help sign in
Connect our mock AccountsService background files with our mock liblightdm background files
commitde3446530a3cf244ac9e390b43662c2df25381ee authorMichael Terry <michael.terry@canonical.com> dateThu 4 Aug 2016, 10:05 (10 years ago) parentd406bd8
6 files changed+55−4
tests/mocks/AccountsService/AccountsService.cpp+19−3 tests/mocks/AccountsService/AccountsService.h+3 tests/mocks/AccountsService/CMakeLists.txt+14 tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp+5 tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.h+2 tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+12−1
tests/mocks/AccountsService/AccountsService.cpp+19−3
@@ -15,7 +15,9 @@
1515 */
1616
1717#include "AccountsService.h"
18+#include "MockUsersModel.h"
1819
20+#include <QLightDM/UsersModel>
1921#include <paths.h>
2022
2123AccountsService::AccountsService(QObject* parent)
@@ -23,15 +25,17 @@ AccountsService::AccountsService(QObject* parent)
2325 m_enableFingerprintIdentification(true),
2426 m_enableLauncherWhileLocked(true),
2527 m_enableIndicatorsWhileLocked(true),
26− m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
28+ m_backgroundFile(),
2729 m_statsWelcomeScreen(true),
2830 m_failedLogins(0),
2931 m_failedFingerprintLogins(0),
3032 m_demoEdges(false),
3133 m_demoEdgesCompleted(),
3234 m_hereEnabled(false),
33− m_hereLicensePath("")
35+ m_hereLicensePath(""),
36+ m_usersModel(new MockUsersModel(this))
3437{
38+ m_usersModel->setMockMode("full");
3539}
3640
3741QString AccountsService::user() const
@@ -44,6 +48,7 @@ void AccountsService::setUser(const QString &user)
4448 m_user = user;
4549 Q_EMIT userChanged();
4650 Q_EMIT passwordDisplayHintChanged();
51+ Q_EMIT backgroundFileChanged();
4752}
4853
4954bool AccountsService::demoEdges() const
@@ -111,7 +116,18 @@ void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileL
111116
112117QString AccountsService::backgroundFile() const
113118{
114− return m_backgroundFile;
119+ if (!m_backgroundFile.isEmpty()) {
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();
115131}
116132
117133void AccountsService::setBackgroundFile(const QString &backgroundFile)
tests/mocks/AccountsService/AccountsService.h+3
@@ -22,6 +22,8 @@
2222#include <QStringList>
2323#include <QVariant>
2424
25+class MockUsersModel;
26+
2527class AccountsService: public QObject
2628{
2729 Q_OBJECT
@@ -163,6 +165,7 @@ private:
163165 QString m_realName;
164166 QStringList m_kbdMap;
165167 QString m_email;
168+ MockUsersModel *m_usersModel;
166169};
167170
168171#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+
18add_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
212 AccountsService.cpp
313 plugin.cpp
414 )
515
616qt5_use_modules(MockAccountsService-qml DBus Qml)
717
18+target_link_libraries(MockAccountsService-qml
19+ MockLightDM
20+ )
21+
822add_unity8_mock(AccountsService 0.1 AccountsService
923 PREFIX mocks
1024 TARGETS MockAccountsService-qml
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.cpp+5
@@ -19,6 +19,11 @@
1919#include <QLightDM/UsersModel>
2020#include <QSortFilterProxyModel>
2121
22+MockUsersModel::MockUsersModel(QObject* parent)
23+ : UsersModel(parent)
24+{
25+}
26+
2227QString MockUsersModel::mockMode() const
2328{
2429 QLightDM::UsersModel* qUsersModel =
tests/mocks/LightDM/IntegratedLightDM/MockUsersModel.h+2
@@ -27,6 +27,8 @@ class MockUsersModel : public UsersModel
2727 Q_PROPERTY(QString mockMode READ mockMode WRITE setMockMode NOTIFY mockModeChanged)
2828
2929public:
30+ explicit MockUsersModel(QObject* parent=0);
31+
3032 QString mockMode() const;
3133 void setMockMode(QString mockMode);
3234
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+12−1
@@ -17,6 +17,8 @@
1717#include "UsersModelPrivate.h"
1818#include "UsersModel.h"
1919
20+#include <QDir>
21+
2022namespace QLightDM
2123{
2224
@@ -53,6 +55,15 @@ void UsersModelPrivate::resetEntries()
5355 entries[i].uid = i + 1;
5456 }
5557
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+
5667 q->endResetModel();
5768}
5869
@@ -96,7 +107,7 @@ void UsersModelPrivate::resetEntries_full()
96107 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
97108 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
98109 { "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 },
100111 // white and black are a bit redundant, but useful for manually testing if UI is still readable
101112 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
102113 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },