on xenial help sign in
Don't change active state when transitioning from locked greeter app back to greeter
8553a44Michael Terry
qml/Greeter/Greeter.qml+1−1
@@ -33,7 +33,7 @@ Showable {
33 // How far to offset the top greeter layer during a launcher left-drag
33 // How far to offset the top greeter layer during a launcher left-drag
34 property real launcherOffset
34 property real launcherOffset
35
35
36− readonly property bool active: shown || hasLockedApp
36+ readonly property bool active: required || hasLockedApp
37 readonly property bool fullyShown: loader.item ? loader.item.fullyShown : false
37 readonly property bool fullyShown: loader.item ? loader.item.fullyShown : false
38
38
39 // True when the greeter is waiting for PAM or other setup process
39 // True when the greeter is waiting for PAM or other setup process
tests/qmltests/Greeter/tst_Greeter.qml+25−3
@@ -71,9 +71,9 @@ Item {
71 }
71 }
72
72
73 SignalSpy {
73 SignalSpy {
74− id: emergencyCallSpy
74+ id: activeChangedSpy
75 target: loader.item
75 target: loader.item
76− signalName: "emergencyCall"
76+ signalName: "activeChanged"
77 }
77 }
78
78
79 GSettings {
79 GSettings {
@@ -142,7 +142,7 @@ Item {
142 resetLoader();
142 resetLoader();
143 teaseSpy.clear();
143 teaseSpy.clear();
144 sessionStartedSpy.clear();
144 sessionStartedSpy.clear();
145− emergencyCallSpy.clear();
145+ activeChangedSpy.clear();
146 viewShowMessageSpy.clear();
146 viewShowMessageSpy.clear();
147 viewShowPromptSpy.clear();
147 viewShowPromptSpy.clear();
148 viewShowLastChanceSpy.clear();
148 viewShowLastChanceSpy.clear();
@@ -471,6 +471,28 @@ Item {
471 tryCompare(view, "delayMinutes", 0);
471 tryCompare(view, "delayMinutes", 0);
472 }
472 }
473
473
474+ function test_activeIsConstantDuringLockedApp() {
475+ // Regression test for bug 1525981: if we flicker active state even
476+ // briefly, the mpt-server will allow access to the device's drive.
477+
478+ selectUser("has-password");
479+ verify(greeter.active);
480+
481+ // Test opening a locked app
482+ greeter.lockedApp = "test-app";
483+ greeter.notifyAppFocused("test-app");
484+ verify(greeter.hasLockedApp);
485+ verify(!greeter.shown);
486+
487+ // Test going back to greeter from that locked app
488+ LightDM.Greeter.showGreeter();
489+ verify(!greeter.hasLockedApp);
490+ verify(greeter.shown);
491+
492+ // Active state should never have changed
493+ compare(activeChangedSpy.count, 0);
494+ }
495+
474 function test_dbusRequestAuthenticationUser() {
496 function test_dbusRequestAuthenticationUser() {
475 selectUser("no-password");
497 selectUser("no-password");
476 LightDM.Greeter.requestAuthenticationUser("has-password");
498 LightDM.Greeter.requestAuthenticationUser("has-password");