on xenial help sign in
Reverse default for the user option "allow launcher/panel in greeter when locked." And allow that property to be controlled by an AccountsService property. (LP: #1358340) Fixes: 1358340

Approved by: Albert Astals Cid

commitbb8999c6509669ecc8909caba3105d3845f42db4 authorMichael Terry <michael.terry@canonical.com> dateThu 28 Aug 2014, 20:06 (12 years ago) parent1fbc8439104147
7 files changed+105−8
debian/control+1−1 plugins/AccountsService/AccountsService.cpp+38 plugins/AccountsService/AccountsService.h+14 qml/Shell.qml+2−2 tests/mocks/AccountsService/AccountsService.cpp+24 tests/mocks/AccountsService/AccountsService.h+16 tests/qmltests/tst_ShellWithPin.qml+10−5
debian/control+1−1
@@ -168,7 +168,7 @@ Package: unity8-private
168168Architecture: any
169169Multi-Arch: same
170170Pre-Depends: ${misc:Pre-Depends},
171−Depends: accountsservice-ubuntu-schemas,
171+Depends: accountsservice-ubuntu-schemas (>= 0.0.3),
172172 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
173173 libhardware2,
174174 libunity-core-6.0-9,
plugins/AccountsService/AccountsService.cpp+38
@@ -26,6 +26,8 @@ AccountsService::AccountsService(QObject* parent)
2626 m_service(new AccountsServiceDBusAdaptor(this)),
2727 m_user(qgetenv("USER")),
2828 m_demoEdges(false),
29+ m_enableLauncherWhileLocked(false),
30+ m_enableIndicatorsWhileLocked(false),
2931 m_statsWelcomeScreen(false),
3032 m_passwordDisplayHint(Keyboard),
3133 m_failedLogins(0)
@@ -47,6 +49,8 @@ void AccountsService::setUser(const QString &user)
4749 Q_EMIT userChanged();
4850
4951 updateDemoEdges();
52+ updateEnableLauncherWhileLocked();
53+ updateEnableIndicatorsWhileLocked();
5054 updateBackgroundFile();
5155 updateStatsWelcomeScreen();
5256 updatePasswordDisplayHint();
@@ -64,6 +68,16 @@ void AccountsService::setDemoEdges(bool demoEdges)
6468 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
6569}
6670
71+bool AccountsService::enableLauncherWhileLocked() const
72+{
73+ return m_enableLauncherWhileLocked;
74+}
75+
76+bool AccountsService::enableIndicatorsWhileLocked() const
77+{
78+ return m_enableIndicatorsWhileLocked;
79+}
80+
6781QString AccountsService::backgroundFile() const
6882{
6983 return m_backgroundFile;
@@ -88,6 +102,24 @@ void AccountsService::updateDemoEdges()
88102 }
89103}
90104
105+void AccountsService::updateEnableLauncherWhileLocked()
106+{
107+ auto enableLauncherWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableLauncherWhileLocked").toBool();
108+ if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
109+ m_enableLauncherWhileLocked = enableLauncherWhileLocked;
110+ Q_EMIT enableLauncherWhileLockedChanged();
111+ }
112+}
113+
114+void AccountsService::updateEnableIndicatorsWhileLocked()
115+{
116+ auto enableIndicatorsWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableIndicatorsWhileLocked").toBool();
117+ if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
118+ m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
119+ Q_EMIT enableIndicatorsWhileLockedChanged();
120+ }
121+}
122+
91123void AccountsService::updateBackgroundFile()
92124{
93125 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -157,6 +189,12 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
157189 if (changed.contains("PasswordDisplayHint")) {
158190 updatePasswordDisplayHint();
159191 }
192+ if (changed.contains("EnableLauncherWhileLocked")) {
193+ updateEnableLauncherWhileLocked();
194+ }
195+ if (changed.contains("EnableIndicatorsWhileLocked")) {
196+ updateEnableIndicatorsWhileLocked();
197+ }
160198 }
161199}
162200
plugins/AccountsService/AccountsService.h+14
@@ -36,6 +36,12 @@ class AccountsService: public QObject
3636 READ demoEdges
3737 WRITE setDemoEdges
3838 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool enableLauncherWhileLocked
40+ READ enableLauncherWhileLocked
41+ NOTIFY enableLauncherWhileLockedChanged)
42+ Q_PROPERTY (bool enableIndicatorsWhileLocked
43+ READ enableIndicatorsWhileLocked
44+ NOTIFY enableIndicatorsWhileLockedChanged)
3945 Q_PROPERTY (QString backgroundFile
4046 READ backgroundFile
4147 NOTIFY backgroundFileChanged)
@@ -62,6 +68,8 @@ public:
6268 void setUser(const QString &user);
6369 bool demoEdges() const;
6470 void setDemoEdges(bool demoEdges);
71+ bool enableLauncherWhileLocked() const;
72+ bool enableIndicatorsWhileLocked() const;
6573 QString backgroundFile() const;
6674 bool statsWelcomeScreen() const;
6775 PasswordDisplayHint passwordDisplayHint() const;
@@ -71,6 +79,8 @@ public:
7179Q_SIGNALS:
7280 void userChanged();
7381 void demoEdgesChanged();
82+ void enableLauncherWhileLockedChanged();
83+ void enableIndicatorsWhileLockedChanged();
7484 void backgroundFileChanged();
7585 void statsWelcomeScreenChanged();
7686 void passwordDisplayHintChanged();
@@ -82,6 +92,8 @@ private Q_SLOTS:
8292
8393private:
8494 void updateDemoEdges();
95+ void updateEnableLauncherWhileLocked();
96+ void updateEnableIndicatorsWhileLocked();
8597 void updateBackgroundFile();
8698 void updateStatsWelcomeScreen();
8799 void updatePasswordDisplayHint();
@@ -90,6 +102,8 @@ private:
90102 AccountsServiceDBusAdaptor *m_service;
91103 QString m_user;
92104 bool m_demoEdges;
105+ bool m_enableLauncherWhileLocked;
106+ bool m_enableIndicatorsWhileLocked;
93107 QString m_backgroundFile;
94108 bool m_statsWelcomeScreen;
95109 PasswordDisplayHint m_passwordDisplayHint;
qml/Shell.qml+2−2
@@ -506,7 +506,7 @@ Item {
506506 anchors.fill: parent //because this draws indicator menus
507507 indicators {
508508 hides: [launcher]
509− available: edgeDemo.panelEnabled && !shell.locked
509+ available: edgeDemo.panelEnabled && (!shell.locked || AccountsService.enableIndicatorsWhileLocked) && greeter.fakeActiveForApp === ""
510510 contentEnabled: edgeDemo.panelContentEnabled
511511 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
512512 panelHeight: units.gu(3)
@@ -530,7 +530,7 @@ Item {
530530 anchors.bottom: parent.bottom
531531 width: parent.width
532532 dragAreaWidth: shell.edgeSize
533− available: edgeDemo.launcherEnabled && !shell.locked
533+ available: edgeDemo.launcherEnabled && (!shell.locked || AccountsService.enableLauncherWhileLocked) && greeter.fakeActiveForApp === ""
534534
535535 onShowDashHome: showHome()
536536 onDash: showDash()
tests/mocks/AccountsService/AccountsService.cpp+24
@@ -22,6 +22,8 @@
2222
2323AccountsService::AccountsService(QObject* parent)
2424 : QObject(parent),
25+ m_enableLauncherWhileLocked(true),
26+ m_enableIndicatorsWhileLocked(true),
2527 m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
2628 m_statsWelcomeScreen(true),
2729 m_failedLogins(0)
@@ -50,6 +52,28 @@ void AccountsService::setDemoEdges(bool demoEdges)
5052 Q_UNUSED(demoEdges)
5153}
5254
55+bool AccountsService::enableLauncherWhileLocked() const
56+{
57+ return m_enableLauncherWhileLocked;
58+}
59+
60+void AccountsService::setEnableLauncherWhileLocked(bool enableLauncherWhileLocked)
61+{
62+ m_enableLauncherWhileLocked = enableLauncherWhileLocked;
63+ Q_EMIT enableLauncherWhileLockedChanged();
64+}
65+
66+bool AccountsService::enableIndicatorsWhileLocked() const
67+{
68+ return m_enableIndicatorsWhileLocked;
69+}
70+
71+void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileLocked)
72+{
73+ m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
74+ Q_EMIT enableIndicatorsWhileLockedChanged();
75+}
76+
5377QString AccountsService::backgroundFile() const
5478{
5579 return m_backgroundFile;
tests/mocks/AccountsService/AccountsService.h+16
@@ -36,6 +36,14 @@ class AccountsService: public QObject
3636 READ demoEdges
3737 WRITE setDemoEdges
3838 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool enableLauncherWhileLocked
40+ READ enableLauncherWhileLocked
41+ WRITE setEnableLauncherWhileLocked // only available in mock
42+ NOTIFY enableLauncherWhileLockedChanged)
43+ Q_PROPERTY (bool enableIndicatorsWhileLocked
44+ READ enableIndicatorsWhileLocked
45+ WRITE setEnableIndicatorsWhileLocked // only available in mock
46+ NOTIFY enableIndicatorsWhileLockedChanged)
3947 Q_PROPERTY (QString backgroundFile
4048 READ backgroundFile
4149 WRITE setBackgroundFile // only available in mock
@@ -64,6 +72,10 @@ public:
6472 void setUser(const QString &user);
6573 bool demoEdges() const;
6674 void setDemoEdges(bool demoEdges);
75+ bool enableLauncherWhileLocked() const;
76+ void setEnableLauncherWhileLocked(bool enableLauncherWhileLocked);
77+ bool enableIndicatorsWhileLocked() const;
78+ void setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileLocked);
6779 QString backgroundFile() const;
6880 void setBackgroundFile(const QString &backgroundFile);
6981 bool statsWelcomeScreen() const;
@@ -75,12 +87,16 @@ public:
7587Q_SIGNALS:
7688 void userChanged();
7789 void demoEdgesChanged();
90+ void enableLauncherWhileLockedChanged();
91+ void enableIndicatorsWhileLockedChanged();
7892 void backgroundFileChanged();
7993 void statsWelcomeScreenChanged();
8094 void passwordDisplayHintChanged();
8195 void failedLoginsChanged();
8296
8397private:
98+ bool m_enableLauncherWhileLocked;
99+ bool m_enableIndicatorsWhileLocked;
84100 QString m_backgroundFile;
85101 QString m_user;
86102 bool m_statsWelcomeScreen;
tests/qmltests/tst_ShellWithPin.qml+10−5
@@ -90,6 +90,8 @@ Item {
9090 swipeAwayGreeter()
9191 shell.failedLoginsDelayAttempts = -1
9292 maxRetriesTextField.text = "-1"
93+ AccountsService.enableLauncherWhileLocked = true
94+ AccountsService.enableIndicatorsWhileLocked = true
9395 }
9496
9597 function cleanup() {
@@ -145,9 +147,13 @@ Item {
145147
146148 function test_disabledEdges() {
147149 var launcher = findChild(shell, "launcher")
150+ tryCompare(launcher, "available", true)
151+ AccountsService.enableLauncherWhileLocked = false
148152 tryCompare(launcher, "available", false)
149153
150154 var indicators = findChild(shell, "indicators")
155+ tryCompare(indicators, "available", true)
156+ AccountsService.enableIndicatorsWhileLocked = false
151157 tryCompare(indicators, "available", false)
152158 }
153159
@@ -165,12 +171,9 @@ Item {
165171 tryCompare(greeter, "fakeActiveForApp", "dialer-app")
166172 tryCompare(lockscreen, "shown", false)
167173 tryCompare(panel, "fullscreenMode", true)
168− tryCompare(stage, "spreadEnabled", false)
169−
170− // These are normally false anyway, but confirm they remain so in
171− // emergency mode.
172− tryCompare(launcher, "available", false)
173174 tryCompare(indicators, "available", false)
175+ tryCompare(launcher, "available", false)
176+ tryCompare(stage, "spreadEnabled", false)
174177
175178 // Cancel emergency mode, and go back to normal
176179 waitForRendering(greeter)
@@ -180,6 +183,8 @@ Item {
180183 tryCompare(greeter, "fakeActiveForApp", "")
181184 tryCompare(lockscreen, "shown", true)
182185 tryCompare(panel, "fullscreenMode", false)
186+ tryCompare(indicators, "available", true)
187+ tryCompare(launcher, "available", true)
183188 tryCompare(stage, "spreadEnabled", true)
184189 }
185190