on xenial help sign in
Add iconUrl test and fix bug uncovered by test
commit3ae2139055912620283bd4d401539b8fb508b610 authorJosh Arenson <joshua.arenson@canonical.com> dateWed 15 Jun 2016, 10:11 (10 years ago) parent4ca0494
3 files changed+40−2
plugins/LightDM/SessionsModel.cpp+8−2 qml/Greeter/graphics/session_icons/plasma_badge.png → qml/Greeter/graphics/session_icons/kde_badge.png tests/plugins/LightDM/IntegratedLightDM/sessionsmodel.cpp+32
plugins/LightDM/SessionsModel.cpp+8−2
@@ -63,11 +63,13 @@ QUrl SessionsModel::iconUrl(const QString sessionName) const
6363 return QUrl(customIconUrl);
6464 } else if (iconFile.exists()) {
6565 return QUrl(iconUrl);
66− } else{
66+ } else {
6767 // Search the legacy way
6868 QString path = searchDirectory.toString(QUrl::StripTrailingSlash) + "/";
69+ bool iconFound = false;
6970 if (sessionName == "ubuntu" || sessionName == "ubuntu-2d") {
7071 path += "ubuntu_badge.png";
72+ iconFound = true;
7173 } else if(
7274 sessionName == "gnome-classic" ||
7375 sessionName == "gnome-flashback-compiz" ||
@@ -77,15 +79,19 @@ QUrl SessionsModel::iconUrl(const QString sessionName) const
7779 sessionName == "gnome"
7880 ){
7981 path += "gnome_badge.png";
82+ iconFound = true;
8083 } else if (sessionName == "plasma") {
8184 path += "kde_badge.png";
85+ iconFound = true;
8286 } else if (sessionName == "xterm") {
8387 path += "recovery_console_badge.png";
88+ iconFound = true;
8489 } else if (sessionName == "remote-login") {
8590 path += "remote_login_help.png";
91+ iconFound = true;
8692 }
8793
88− if (QFile(path).exists()) {
94+ if (QFile(path).exists() && iconFound) {
8995 return path;
9096 }
9197 }
qml/Greeter/graphics/session_icons/plasma_badge.png → qml/Greeter/graphics/session_icons/kde_badge.pngrenamed

Binary file not shown.

tests/plugins/LightDM/IntegratedLightDM/sessionsmodel.cpp+32
@@ -59,6 +59,38 @@ private Q_SLOTS:
5959 }
6060 }
6161
62+ void testIconLookupLogic()
63+ {
64+ const QString data[][2] = {
65+ //{SESSION KEY, ICON NAME}
66+ {"gnome-classic", "gnome_badge.png"},
67+ {"gnome-flashback-compiz", "gnome_badge.png"},
68+ {"gnome-flashback-metacity", "gnome_badge.png"},
69+ {"gnome-shell", "gnome_badge.png"},
70+ {"gnome-wayland", "gnome_badge.png"},
71+ {"gnome", "gnome_badge.png"},
72+ {"kde", "kde_badge.png"},
73+ {"plasma", "kde_badge.png"},
74+ {"recovery_console", "recovery_console_badge.png"},
75+ {"ubuntu","ubuntu_badge.png"},
76+ {"ubuntu-2d", "ubuntu_badge.png"},
77+ {"xterm", "recovery_console_badge.png"},
78+ {"made up session", "unknown_badge.png"},
79+ {"", "unknown_badge.png"}
80+ };
81+
82+ const short length = sizeof(data) / sizeof(data[0]);
83+ for (int i = 0; i < length; i++) {
84+ std::string key = data[i][0].toStdString();
85+ std::string icon = data[i][1].toStdString();
86+ std::string url = model->iconUrl(data[i][0]).toString().toStdString();
87+ std::string errorMessage = "Session icon url for " + key +
88+ " should contain " + icon + " but " + url + " was returned";
89+ QVERIFY2(model->iconUrl(data[i][0]).toString().contains(data[i][1]),
90+ errorMessage.c_str());
91+ }
92+ }
93+
6294 void testMultipleSessionsCountIsCorrect()
6395 {
6496 sourceModel->setTestScenario("multipleSessions");