@@ -74,7 +74,6 @@ Item {
74 Component.onDestruction: {
74 Component.onDestruction: {
75 shellLoader.itemDestroyed = true
75 shellLoader.itemDestroyed = true
77− maxFailedLogins: maxRetriesTextField.text
@@ -90,15 +89,7 @@ Item {
91 anchors { left: parent.left; right: parent.right }
90 anchors { left: parent.left; right: parent.right }
92 text: "Show Greeter"
91 text: "Show Greeter"
93− onClicked: {
92+ onClicked: LightDM.Greeter.showGreeter()
94− if (shellLoader.status !== Loader.Ready)
97− var greeter = testCase.findChild(shellLoader.item, "greeter")
98− if (!greeter.shown) {
@@ -108,6 +99,10 @@ Item {
108 TextField {
99 TextField {
109 id: maxRetriesTextField
100 id: maxRetriesTextField
110 text: "-1"
101 text: "-1"
103+ var greeter = testCase.findChild(shellLoader.item, "greeter");
104+ greeter.maxFailedLogins = text;
@@ -144,11 +139,12 @@ Item {
145 function init() {
140 function init() {
146 tryCompare(shell, "enabled", true); // will be enabled when greeter is all ready
141 tryCompare(shell, "enabled", true); // will be enabled when greeter is all ready
147− sessionSpy.target = findChild(shell, "greeter")
142+ var greeter = findChild(shell, "greeter");
143+ sessionSpy.target = greeter;
148− swipeAwayGreeter()
144+ swipeAwayGreeter(true);
149 waitForLockscreen()
145 waitForLockscreen()
150− shell.failedLoginsDelayAttempts = -1
146+ greeter.failedLoginsDelayAttempts = -1;
151− maxRetriesTextField.text = "-1"
147+ greeter.maxFailedLogins = -1;
154 function cleanup() {
150 function cleanup() {
@@ -192,17 +188,21 @@ Item {
192 compare(ApplicationManager.count, 1)
188 compare(ApplicationManager.count, 1)
195− function swipeAwayGreeter() {
191+ function swipeAwayGreeter(waitForCoverPage) {
196 var greeter = findChild(shell, "greeter");
192 var greeter = findChild(shell, "greeter");
197 waitForRendering(greeter)
193 waitForRendering(greeter)
194+ var coverPage = findChild(shell, "coverPage");
198− tryCompare(greeter, "showProgress", 1);
195+ tryCompare(coverPage, "showProgress", 1);
200 var touchX = shell.width - (shell.edgeSize / 2);
197 var touchX = shell.width - (shell.edgeSize / 2);
201 var touchY = shell.height / 2;
198 var touchY = shell.height / 2;
202 touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
199 touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
201+ if (waitForCoverPage) {
204− // wait until the animation has finished
202+ // wait until the animation has finished
203+ var coverPage = findChild(shell, "coverPage");
205− tryCompare(greeter, "showProgress", 0);
204+ tryCompare(coverPage, "showProgress", 0);
208 function waitForLockscreen() {
208 function waitForLockscreen() {
@@ -213,19 +213,17 @@ Item {
215 function enterPin(pin) {
215 function enterPin(pin) {
216− var inputField = findChild(shell, "pinentryField")
217 for (var i = 0; i < pin.length; ++i) {
216 for (var i = 0; i < pin.length; ++i) {
218 var character = pin.charAt(i)
217 var character = pin.charAt(i)
219 var button = findChild(shell, "pinPadButton" + character)
218 var button = findChild(shell, "pinPadButton" + character)
219+ tryCompare(button, "enabled", true);
220 tap(button)
220 tap(button)
224 function confirmLockedApp(app) {
224 function confirmLockedApp(app) {
225 var greeter = findChild(shell, "greeter")
225 var greeter = findChild(shell, "greeter")
226− var lockscreen = findChild(shell, "lockscreen")
227 tryCompare(greeter, "shown", false)
226 tryCompare(greeter, "shown", false)
228− tryCompare(lockscreen, "shown", false)
229 tryCompare(greeter, "hasLockedApp", true)
227 tryCompare(greeter, "hasLockedApp", true)
230 tryCompare(greeter, "lockedApp", app)
228 tryCompare(greeter, "lockedApp", app)
231 tryCompare(LightDM.Greeter, "active", true)
229 tryCompare(LightDM.Greeter, "active", true)
@@ -264,13 +262,16 @@ Item {
264 AccountsService.demoEdges = true
262 AccountsService.demoEdges = true
265 tryCompare(lockscreen, "shown", false)
263 tryCompare(lockscreen, "shown", false)
265+ var greeter = findChild(shell, "greeter");
267− swipeAwayGreeter()
266+ swipeAwayGreeter(false);
267+ tryCompare(greeter, "shown", false);
268 tryCompare(sessionSpy, "count", 1)
268 tryCompare(sessionSpy, "count", 1)
270 // Lockscreen is only hidden by the edge demo, so if we turn that
270 // Lockscreen is only hidden by the edge demo, so if we turn that
271 // off and show greeter again, lockscreen should appear
271 // off and show greeter again, lockscreen should appear
272 AccountsService.demoEdges = false
272 AccountsService.demoEdges = false
273 LightDM.Greeter.showGreeter()
273 LightDM.Greeter.showGreeter()
274+ lockscreen = findChild(shell, "lockscreen");
274 tryCompare(lockscreen, "shown", true)
275 tryCompare(lockscreen, "shown", true)
@@ -288,18 +289,16 @@ Item {
289 function test_emergencyCall() {
290 function test_emergencyCall() {
290 var greeter = findChild(shell, "greeter")
291 var greeter = findChild(shell, "greeter")
291− var lockscreen = findChild(shell, "lockscreen")
292− var emergencyButton = findChild(lockscreen, "emergencyCallLabel")
293 var panel = findChild(shell, "panel")
292 var panel = findChild(shell, "panel")
294 var indicators = findChild(shell, "indicators")
293 var indicators = findChild(shell, "indicators")
295 var launcher = findChild(shell, "launcher")
294 var launcher = findChild(shell, "launcher")
296 var stage = findChild(shell, "stage")
295 var stage = findChild(shell, "stage")
298− tap(emergencyButton)
297+ tap(findChild(greeter, "emergencyCallLabel"));
300 tryCompare(greeter, "lockedApp", "dialer-app")
299 tryCompare(greeter, "lockedApp", "dialer-app")
301 tryCompare(greeter, "hasLockedApp", true)
300 tryCompare(greeter, "hasLockedApp", true)
302− tryCompare(lockscreen, "shown", false)
301+ tryCompare(greeter, "shown", false);
303 tryCompare(panel, "fullscreenMode", true)
302 tryCompare(panel, "fullscreenMode", true)
304 tryCompare(indicators, "available", false)
303 tryCompare(indicators, "available", false)
305 tryCompare(launcher, "available", false)
304 tryCompare(launcher, "available", false)
@@ -312,7 +311,7 @@ Item {
312 tryCompare(greeter, "shown", true)
311 tryCompare(greeter, "shown", true)
313 tryCompare(greeter, "lockedApp", "")
312 tryCompare(greeter, "lockedApp", "")
314 tryCompare(greeter, "hasLockedApp", false)
313 tryCompare(greeter, "hasLockedApp", false)
315− tryCompare(lockscreen, "shown", true)
314+ tryCompare(greeter, "fullyShown", true);
316 tryCompare(panel, "fullscreenMode", false)
315 tryCompare(panel, "fullscreenMode", false)
317 tryCompare(indicators, "available", true)
316 tryCompare(indicators, "available", true)
318 tryCompare(launcher, "available", true)
317 tryCompare(launcher, "available", true)
@@ -320,23 +319,25 @@ Item {
322 function test_emergencyCallCrash() {
321 function test_emergencyCallCrash() {
323− var lockscreen = findChild(shell, "lockscreen")
322+ var greeter = findChild(shell, "greeter");
324− var emergencyButton = findChild(lockscreen, "emergencyCallLabel")
323+ var emergencyButton = findChild(greeter, "emergencyCallLabel");
325 tap(emergencyButton)
324 tap(emergencyButton)
327− tryCompare(lockscreen, "shown", false)
326+ tryCompare(greeter, "shown", false);
328 killApps() // kill dialer-app, as if it crashed
327 killApps() // kill dialer-app, as if it crashed
328+ tryCompare(greeter, "shown", true);
329− tryCompare(lockscreen, "shown", true)
329+ tryCompare(findChild(greeter, "lockscreen"), "shown", true);
330+ tryCompare(findChild(greeter, "coverPage"), "shown", false);
332 function test_emergencyCallAppLaunch() {
333 function test_emergencyCallAppLaunch() {
333− var lockscreen = findChild(shell, "lockscreen")
334+ var greeter = findChild(shell, "greeter");
334− var emergencyButton = findChild(lockscreen, "emergencyCallLabel")
335+ var emergencyButton = findChild(greeter, "emergencyCallLabel");
335 tap(emergencyButton)
336 tap(emergencyButton)
337− tryCompare(lockscreen, "shown", false)
338+ tryCompare(greeter, "shown", false);
338 ApplicationManager.startApplication("gallery-app", ApplicationManager.NoFlag)
339 ApplicationManager.startApplication("gallery-app", ApplicationManager.NoFlag)
339− tryCompare(lockscreen, "shown", true)
340+ tryCompare(greeter, "shown", true);
342 function test_failedLoginsCount() {
343 function test_failedLoginsCount() {
@@ -350,7 +351,8 @@ Item {
352 function test_wrongEntries() {
353 function test_wrongEntries() {
354+ var greeter = findChild(shell, "greeter");
353− shell.failedLoginsDelayAttempts = 3
355+ greeter.failedLoginsDelayAttempts = 3;
355 var placeHolder = findChild(shell, "wrongNoticeLabel")
357 var placeHolder = findChild(shell, "wrongNoticeLabel")
356 tryCompare(placeHolder, "text", "")
358 tryCompare(placeHolder, "text", "")
@@ -364,7 +366,7 @@ Item {
364 var lockscreen = findChild(shell, "lockscreen")
366 var lockscreen = findChild(shell, "lockscreen")
365 tryCompare(lockscreen, "delayMinutes", 0)
367 tryCompare(lockscreen, "delayMinutes", 0)
366 enterPin("1111")
368 enterPin("1111")
367− tryCompare(lockscreen, "delayMinutes", shell.failedLoginsDelayMinutes)
369+ tryCompare(lockscreen, "delayMinutes", greeter.failedLoginsDelayMinutes);
370 function test_factoryReset() {
372 function test_factoryReset() {
@@ -410,7 +412,7 @@ Item {
410 // And when we kill the app, we go back to locked tablet mode
412 // And when we kill the app, we go back to locked tablet mode
411 killApps()
413 killApps()
412 var greeter = findChild(shell, "greeter")
414 var greeter = findChild(shell, "greeter")
413− tryCompare(greeter, "showProgress", 1)
415+ tryCompare(greeter, "fullyShown", true)
414 tryCompare(shell, "sideStageEnabled", true)
416 tryCompare(shell, "sideStageEnabled", true)
415 tryCompare(applicationsDisplayLoader, "tabletMode", true)
417 tryCompare(applicationsDisplayLoader, "tabletMode", true)
@@ -453,11 +455,11 @@ Item {
453 // - Should be back in normal dialer
455 // - Should be back in normal dialer
454 // (we've had a bug where we locked screen in this case)
456 // (we've had a bug where we locked screen in this case)
456− var lockscreen = findChild(shell, "lockscreen");
458+ var greeter = findChild(shell, "greeter");
457 var panel = findChild(shell, "panel");
459 var panel = findChild(shell, "panel");
459 enterPin("1234");
461 enterPin("1234");
460− tryCompare(lockscreen, "shown", false);
462+ tryCompare(greeter, "shown", false);
461 tryCompare(LightDM.Greeter, "active", false);
463 tryCompare(LightDM.Greeter, "active", false);
463 ApplicationManager.startApplication("dialer-app", ApplicationManager.NoFlag);
465 ApplicationManager.startApplication("dialer-app", ApplicationManager.NoFlag);
@@ -472,10 +474,32 @@ Item {
472 ApplicationManager.requestFocusApplication("dialer-app");
474 ApplicationManager.requestFocusApplication("dialer-app");
474 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
476 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
475− tryCompare(lockscreen, "shown", false);
477+ tryCompare(greeter, "shown", false);
476 tryCompare(LightDM.Greeter, "active", false);
478 tryCompare(LightDM.Greeter, "active", false);
481+ function test_focusRequestedHidesCoverPage() {
482+ LightDM.Greeter.showGreeter();
484+ var app = ApplicationManager.startApplication("gallery-app");
485+ // wait until the app is fully loaded (ie, real surface replaces splash screen)
486+ tryCompareFunction(function() { return app.session !== null && app.session.surface !== null }, true);
488+ // New app hides coverPage?
489+ var greeter = findChild(shell, "greeter");
490+ var coverPage = testCase.findChild(shell, "coverPage");
491+ tryCompare(coverPage, "showProgress", 0);
492+ tryCompare(greeter, "fullyShown", true);
494+ LightDM.Greeter.showGreeter();
495+ tryCompare(coverPage, "showProgress", 1);
497+ // Make sure focusing same app triggers same behavior
498+ ApplicationManager.requestFocusApplication("gallery-app");
499+ tryCompare(coverPage, "showProgress", 0);
500+ tryCompare(greeter, "fullyShown", true);
479 function test_suspend() {
503 function test_suspend() {
480 var greeter = findChild(shell, "greeter");
504 var greeter = findChild(shell, "greeter");
@@ -487,10 +511,10 @@ Item {
488 // And wake up
512 // And wake up
489 Powerd.status = Powerd.On;
513 Powerd.status = Powerd.On;
490− tryCompare(greeter, "showProgress", 1);
514+ tryCompare(greeter, "fullyShown", true);
492 // Swipe away greeter to focus app
516 // Swipe away greeter to focus app
493− swipeAwayGreeter();
517+ swipeAwayGreeter(true);
495 // We have a lockscreen, make sure we're still suspended
519 // We have a lockscreen, make sure we're still suspended
496 tryCompare(ApplicationManager, "suspended", true);
520 tryCompare(ApplicationManager, "suspended", true);
@@ -539,9 +563,9 @@ Item {
539 only after its idle timeout is triggered.
563 only after its idle timeout is triggered.
541 function test_shortLeftEdgeSwipeMakesLauncherStayVisible() {
565 function test_shortLeftEdgeSwipeMakesLauncherStayVisible() {
566+ LightDM.Greeter.showGreeter();
542− var greeter = testCase.findChild(shell, "greeter")
567+ var coverPage = testCase.findChild(shell, "coverPage");
544− tryCompare(greeter, "showProgress", 1);
568+ tryCompare(coverPage, "showProgress", 1);
546 var launcher = testCase.findChild(shell, "launcher")
570 var launcher = testCase.findChild(shell, "launcher")
@@ -562,12 +586,12 @@ Item {
562 tryCompare(launcherPanel, "x", 0);
586 tryCompare(launcherPanel, "x", 0);
564 // Greeter should be displaced
588 // Greeter should be displaced
565− tryCompareFunction(function() { return greeter.mapToItem(shell, 0, 0).x > shell.width*0.2; }, true);
589+ tryCompareFunction(function() { return coverPage.mapToItem(shell, 0, 0).x > shell.width*0.2; }, true);
567 touchRelease(shell, toX, shell.height * 0.5);
591 touchRelease(shell, toX, shell.height * 0.5);
569 // Upon release the greeter should have slid back into full view
593 // Upon release the greeter should have slid back into full view
570− tryCompareFunction(function() { return greeter.mapToItem(shell, 0, 0).x === 0; }, true);
594+ tryCompareFunction(function() { return coverPage.mapToItem(shell, 0, 0).x === 0; }, true);
572 // And the launcher should stay fully shown
596 // And the launcher should stay fully shown
573 for (var i = 0; i < 10; ++i) {
597 for (var i = 0; i < 10; ++i) {
@@ -575,5 +599,30 @@ Item {
575 compare(launcherPanel.x, 0);
599 compare(launcherPanel.x, 0);
603+ function test_longLeftEdgeDrags() {
604+ var coverPage = findChild(shell, "coverPage");
605+ var lockscreen = findChild(shell, "lockscreen");
606+ var launcher = findChild(shell, "launcherPanel");
607+ ApplicationManager.startApplication("gallery-app");
608+ tryCompare(ApplicationManager, "focusedApplicationId", "gallery-app");
611+ LightDM.Greeter.showGreeter();
612+ tryCompare(coverPage, "showProgress", 1);
614+ // Swipe cover page away
615+ touchFlick(shell, 2, shell.height / 2, units.gu(27), shell.height / 2);
616+ tryCompare(launcher, "x", -launcher.width);
617+ tryCompare(coverPage, "showProgress", 0);
618+ compare(lockscreen.shown, true);
619+ compare(ApplicationManager.focusedApplicationId, "gallery-app");
621+ // Now attempt a swipe on lockscreen
622+ touchFlick(shell, 2, shell.height / 2, units.gu(27), shell.height / 2);
623+ tryCompare(launcher, "x", 0);
624+ compare(lockscreen.shown, true);
625+ compare(ApplicationManager.focusedApplicationId, "gallery-app");