on xenial help sign in
When edge demo is running, don't show an initial lockscreen
commit180042345808ff024261ddfe1f83dd4294a320db authorMichael Terry <michael.terry@canonical.com> dateSun 5 Oct 2014, 16:54 (12 years ago) parenta8b3aaf
5 files changed+56−14
qml/Shell.qml+15−6 tests/mocks/AccountsService/AccountsService.cpp+5−3 tests/mocks/AccountsService/AccountsService.h+1 tests/qmltests/tst_ShellWithPin.qml+25−3 tests/qmltests/tst_TabletShell.qml+10−2
qml/Shell.qml+15−6
@@ -53,7 +53,9 @@ Item {
5353 property url background
5454 readonly property real panelHeight: panel.panelHeight
5555
56− readonly property bool locked: LightDM.Greeter.active && !LightDM.Greeter.authenticated
56+ readonly property bool locked: LightDM.Greeter.active && !LightDM.Greeter.authenticated && !forcedUnlock
57+ readonly property bool forcedUnlock: edgeDemo.running
58+ onForcedUnlockChanged: if (forcedUnlock) lockscreen.hide()
5759
5860 property bool sideStageEnabled: shell.width >= units.gu(100)
5961 readonly property string focusedApplicationId: ApplicationManager.focusedApplicationId
@@ -316,6 +318,12 @@ Item {
316318
317319 onShownChanged: if (shown) greeter.lockedApp = ""
318320
321+ function maybeShow() {
322+ if (!shell.forcedUnlock) {
323+ show()
324+ }
325+ }
326+
319327 Timer {
320328 id: forcedDelayTimer
321329 interval: 1000 * 60
@@ -358,7 +366,7 @@ Item {
358366 lockscreen.errorText = i18n.tr("Sorry, incorrect %1").arg(text.toLowerCase())
359367 }
360368
361− lockscreen.show();
369+ lockscreen.maybeShow();
362370 }
363371 }
364372
@@ -368,7 +376,7 @@ Item {
368376 lockscreen.hide()
369377 } else {
370378 lockscreen.reset();
371− lockscreen.show();
379+ lockscreen.maybeShow();
372380 }
373381 }
374382 }
@@ -446,14 +454,14 @@ Item {
446454 // Wait until the greeter is completely covering lockscreen before resetting it.
447455 if (greeter.narrowMode && fullyShown && !LightDM.Greeter.authenticated) {
448456 lockscreen.reset();
449− lockscreen.show();
457+ lockscreen.maybeShow();
450458 }
451459 }
452460
453461 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
454462 onShowProgressChanged: {
455463 if (showProgress === 0) {
456− if (LightDM.Greeter.promptless && LightDM.Greeter.authenticated) {
464+ if ((LightDM.Greeter.promptless && LightDM.Greeter.authenticated) || shell.forcedUnlock) {
457465 greeter.login()
458466 } else if (greeter.narrowMode) {
459467 lockscreen.clear(false) // to reset focus if necessary
@@ -487,7 +495,7 @@ Item {
487495 function startUnlock() {
488496 if (narrowMode) {
489497 if (!LightDM.Greeter.authenticated) {
490− lockscreen.show()
498+ lockscreen.maybeShow()
491499 }
492500 hide()
493501 } else {
@@ -710,6 +718,7 @@ Item {
710718
711719 EdgeDemo {
712720 id: edgeDemo
721+ objectName: "edgeDemo"
713722 z: alphaDisclaimerLabel.z + 10
714723 paused: Powerd.status === Powerd.Off // Saves power
715724 greeter: greeter
tests/mocks/AccountsService/AccountsService.cpp+5−3
@@ -26,7 +26,8 @@ AccountsService::AccountsService(QObject* parent)
2626 m_enableIndicatorsWhileLocked(true),
2727 m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
2828 m_statsWelcomeScreen(true),
29− m_failedLogins(0)
29+ m_failedLogins(0),
30+ m_demoEdges(false)
3031{
3132}
3233
@@ -44,12 +45,13 @@ void AccountsService::setUser(const QString &user)
4445
4546bool AccountsService::demoEdges() const
4647{
47− return false;
48+ return m_demoEdges;
4849}
4950
5051void AccountsService::setDemoEdges(bool demoEdges)
5152{
52− Q_UNUSED(demoEdges)
53+ m_demoEdges = demoEdges;
54+ Q_EMIT demoEdgesChanged();
5355}
5456
5557bool AccountsService::enableLauncherWhileLocked() const
tests/mocks/AccountsService/AccountsService.h+1
@@ -101,6 +101,7 @@ private:
101101 QString m_user;
102102 bool m_statsWelcomeScreen;
103103 uint m_failedLogins;
104+ bool m_demoEdges;
104105};
105106
106107#endif
tests/qmltests/tst_ShellWithPin.qml+25−3
@@ -119,10 +119,9 @@ Row {
119119 function init() {
120120 sessionSpy.target = findChild(shell, "greeter")
121121 swipeAwayGreeter()
122+ waitForLockscreen()
122123 shell.failedLoginsDelayAttempts = -1
123124 maxRetriesTextField.text = "-1"
124− AccountsService.enableLauncherWhileLocked = true
125− AccountsService.enableIndicatorsWhileLocked = true
126125 }
127126
128127 function cleanup() {
@@ -143,6 +142,10 @@ Row {
143142 // kill all (fake) running apps
144143 killApps()
145144
145+ AccountsService.enableLauncherWhileLocked = true
146+ AccountsService.enableIndicatorsWhileLocked = true
147+ AccountsService.demoEdges = false
148+
146149 // reload our test subject to get it in a fresh state once again
147150 shellLoader.active = true
148151
@@ -169,8 +172,9 @@ Row {
169172
170173 // wait until the animation has finished
171174 tryCompare(greeter, "showProgress", 0);
175+ }
172176
173− // and for pin to be ready
177+ function waitForLockscreen() {
174178 var lockscreen = findChild(shell, "lockscreen");
175179 var pinPadLoader = findChild(lockscreen, "pinPadLoader");
176180 tryCompare(pinPadLoader, "status", Loader.Ready)
@@ -193,6 +197,24 @@ Row {
193197 tryCompare(sessionSpy, "count", 1)
194198 }
195199
200+ function test_edgeDemoHidesLockscreen() {
201+ LightDM.Greeter.showGreeter()
202+ sessionSpy.clear()
203+ var lockscreen = findChild(shell, "lockscreen")
204+
205+ tryCompare(lockscreen, "shown", true)
206+ AccountsService.demoEdges = true
207+ tryCompare(lockscreen, "shown", false)
208+
209+ swipeAwayGreeter()
210+ tryCompare(sessionSpy, "count", 1)
211+
212+ // Lockscreen is only hidden by right edge demo, which we got rid
213+ // of above, so if we show greeter again, lockscreen should appear
214+ LightDM.Greeter.showGreeter()
215+ tryCompare(lockscreen, "shown", true)
216+ }
217+
196218 function test_disabledEdges() {
197219 var launcher = findChild(shell, "launcher")
198220 tryCompare(launcher, "available", true)
tests/qmltests/tst_TabletShell.qml+10−2
@@ -16,6 +16,7 @@
1616
1717import QtQuick 2.0
1818import QtTest 1.0
19+import AccountsService 0.1
1920import GSettings 1.0
2021import LightDM 0.1 as LightDM
2122import Ubuntu.Components 1.1
@@ -142,6 +143,7 @@ Row {
142143 killApps()
143144
144145 unlockAllModemsSpy.clear()
146+ AccountsService.demoEdges = false
145147
146148 // reload our test subject to get it in a fresh state once again
147149 shellLoader.active = true
@@ -271,13 +273,19 @@ Row {
271273
272274 function test_leftEdgeDrag_data() {
273275 return [
274− {tag: "without password", user: "no-password", loggedIn: true},
275− {tag: "with password", user: "has-password", loggedIn: false},
276+ {tag: "without password", user: "no-password", loggedIn: true, demo: false},
277+ {tag: "with password", user: "has-password", loggedIn: false, demo: false},
278+ {tag: "with demo", user: "has-password", loggedIn: true, demo: true},
276279 ]
277280 }
278281
279282 function test_leftEdgeDrag(data) {
280283 selectUser(data.user)
284+
285+ AccountsService.demoEdges = data.demo
286+ var edgeDemo = findChild(shell, "edgeDemo")
287+ tryCompare(edgeDemo, "greeterDemoRunning", data.demo)
288+
281289 swipeFromLeftEdge(shell.width * 0.75)
282290 confirmLoggedIn(data.loggedIn)
283291 }