on xenial help sign in
Fix tryShell to actually show appropriate backgrounds for each mock user.

Approved by: Albert Astals Cid

commitc8a37b6752f9ed58bedf724aeb08bd3cabe6ece9 authorMichael Terry <michael.terry@canonical.com> dateThu 22 Sep 2016, 07:38 (10 years ago) parent8c1687a2366840
11 files changed+80−34
debian/rules+3−2 tests/CMakeLists.txt+8−13 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+14−1 tests/plugins/LightDM/IntegratedLightDM/CMakeLists.txt−3 tests/plugins/LightDM/IntegratedLightDM/usersmodel.cpp+2−2 tests/qmltests/CMakeLists.txt+10−10
debian/rules+3−2
@@ -37,6 +37,7 @@ override_dh_installdeb:
3737override_dh_makeshlibs:
3838 dh_makeshlibs -Nunity8-private -Nunity8-fake-env
3939
40−# libMockLightDM-qml.so links against liblightdm-qt5-3.so which doesn't exist
4140override_dh_shlibdeps:
42− dh_shlibdeps -XlibMockLightDM-qml.so
41+ # Some mock libraries link against liblightdm-qt5-3.so which we want to
42+ # avoid, since we only really link against our mock one, not the system one.
43+ dh_shlibdeps -XlibMockLightDM-qml.so -XlibMockAccountsService-qml.so
tests/CMakeLists.txt+8−13
@@ -37,27 +37,22 @@ set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
3737
3838macro(unity8_parse_arguments)
3939 cmake_parse_arguments(U8TEST
40− "${QMLTEST_OPTIONS};LIGHTDM"
40+ "${QMLTEST_OPTIONS}"
4141 "${QMLTEST_SINGLE}"
4242 "${QMLTEST_MULTI}"
4343 ${ARGN}
4444 )
4545
4646 set(ld_paths)
47− if(U8TEST_LIGHTDM)
48− list(APPEND ld_paths
49− ${UNITY_MOCKPATH}/libusermetrics
50− ${UNITY_MOCKPATH}/LightDM/IntegratedLightDM/liblightdm
51− )
52− endif()
53−
54− if(ld_paths)
55− string(REPLACE ";" ":" ld_library_path "${ld_paths}")
56− set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
57− endif()
47+ list(APPEND ld_paths
48+ ${UNITY_MOCKPATH}/libusermetrics
49+ ${UNITY_MOCKPATH}/LightDM/IntegratedLightDM/liblightdm
50+ )
51+
52+ string(REPLACE ";" ":" ld_library_path "${ld_paths}")
53+ set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
5854
5955 set(U8TEST_ARGN "${ARGN}")
60− list(REMOVE_ITEM U8TEST_ARGN LIGHTDM)
6156
6257 set(environment
6358 UNITY_TESTING=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+14−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,17 @@ 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+ if (!backgrounds.empty()) {
62+ for (int i = 0; i < entries.size(); i++) {
63+ if (entries[i].background.isNull()) {
64+ entries[i].background = backgroundDir.filePath(backgrounds[i % backgrounds.size()]);
65+ }
66+ }
67+ }
68+
5669 q->endResetModel();
5770}
5871
@@ -96,7 +109,7 @@ void UsersModelPrivate::resetEntries_full()
96109 { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, "ubuntu", 0 },
97110 { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, "ubuntu", 0 },
98111 { "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 },
112+ { "color-background", "Color Background", "#E95420", 0, false, false, "ubuntu", 0 },
100113 // white and black are a bit redundant, but useful for manually testing if UI is still readable
101114 { "white-background", "White Background", "#ffffff", 0, false, false, "ubuntu", 0 },
102115 { "black-background", "Black Background", "#000000", 0, false, false, "ubuntu", 0 },
tests/plugins/LightDM/IntegratedLightDM/CMakeLists.txt−3
@@ -26,7 +26,6 @@ add_unity8_uitest(GreeterDBus dbus-test-runner
2626 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
2727 DEPENDS MockLightDM
2828 IMPORT_PATHS ${UNITY_MOCKPATH}
29− LIGHTDM
3029 )
3130
3231add_executable(GreeterPamTestExec
@@ -63,7 +62,6 @@ target_include_directories(GreeterSessionsModelTestExec PUBLIC
6362add_unity8_uitest(GreeterSessions GreeterSessionsModelTestExec
6463 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
6564 DEPENDS MockLightDM
66− LIGHTDM
6765 )
6866
6967# UsersModelTest
@@ -87,7 +85,6 @@ target_include_directories(GreeterUsersModelTestExec PUBLIC
8785add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
8886 ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
8987 DEPENDS MockLightDM
90− LIGHTDM
9188 )
9289
9390add_executable(GreeterIntegratedTestExec
tests/plugins/LightDM/IntegratedLightDM/usersmodel.cpp+2−2
@@ -59,10 +59,10 @@ private Q_SLOTS:
5959 void testMangleColor()
6060 {
6161 QString background = getStringValue(sourceModel, "color-background", QLightDM::UsersModel::BackgroundPathRole);
62− QVERIFY(background == "#dd4814");
62+ QVERIFY(background == "#E95420");
6363
6464 background = getStringValue(model, "color-background", QLightDM::UsersModel::BackgroundPathRole);
65− QVERIFY(background == "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#dd4814'/></svg>");
65+ QVERIFY(background == "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#E95420'/></svg>");
6666 }
6767
6868 void testMangleEmptyName()
tests/qmltests/CMakeLists.txt+10−10
@@ -1,14 +1,14 @@
11
22add_subdirectory(Components)
33
4−add_unity8_qmltest(. OrientedShell LIGHTDM)
4+add_unity8_qmltest(. OrientedShell)
55add_unity8_qmltest(. DisabledScreenNotice)
6−add_unity8_qmltest(. Shell LIGHTDM)
7−add_unity8_qmltest(. ShellWithPin LIGHTDM)
6+add_unity8_qmltest(. Shell)
7+add_unity8_qmltest(. ShellWithPin)
88add_unity8_qmltest(. DeviceConfiguration)
99add_unity8_qmltest(Components Background)
1010add_unity8_qmltest(Components Carousel)
11−add_unity8_qmltest(Components Dialogs LIGHTDM)
11+add_unity8_qmltest(Components Dialogs)
1212add_unity8_qmltest(Components DraggingArea)
1313add_unity8_qmltest(Components LazyImage)
1414add_unity8_qmltest(Components Lockscreen)
@@ -25,7 +25,7 @@ add_unity8_qmltest(Components WallpaperResolver)
2525add_unity8_qmltest(Components ZoomableImage)
2626add_unity8_qmltest(Dash Dash)
2727add_unity8_qmltest(Dash DashContent)
28−add_unity8_qmltest(Dash DashShell LIGHTDM)
28+add_unity8_qmltest(Dash DashShell)
2929add_unity8_qmltest(Dash Card)
3030add_unity8_qmltest(Dash CardCarousel)
3131add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
@@ -66,10 +66,10 @@ add_unity8_qmltest(Dash/ScopeSettings ScopeSettingNumber)
6666add_unity8_qmltest(Dash/ScopeSettings ScopeSettingString)
6767add_unity8_qmltest(Dash/ScopeSettings ScopeSettingsWidgetFactory)
6868add_unity8_qmltest(Greeter Clock)
69−add_unity8_qmltest(Greeter Greeter LIGHTDM)
70−add_unity8_qmltest(Greeter Infographics LIGHTDM)
71−add_unity8_qmltest(Greeter NarrowView LIGHTDM)
72−add_unity8_qmltest(Greeter WideView LIGHTDM)
69+add_unity8_qmltest(Greeter Greeter)
70+add_unity8_qmltest(Greeter Infographics)
71+add_unity8_qmltest(Greeter NarrowView)
72+add_unity8_qmltest(Greeter WideView)
7373add_unity8_qmltest(Launcher Launcher)
7474add_unity8_qmltest(Notifications Notifications)
7575add_unity8_qmltest(Notifications VisualSnapDecisionsQueue)
@@ -94,6 +94,6 @@ add_unity8_qmltest(Stages SurfaceContainer)
9494add_unity8_qmltest(Stages TabletStage)
9595add_unity8_qmltest(Stages WindowResizeArea)
9696add_unity8_qmltest(Stages Splash)
97−add_unity8_qmltest(Tutorial Tutorial LIGHTDM)
97+add_unity8_qmltest(Tutorial Tutorial)
9898add_unity8_qmltest(Wizard Wizard ENVIRONMENT "OXIDE_NO_SANDBOX=1")
9999add_unity8_qmltest(utils/Unity/Test UnityTest)