@@ -35,12 +35,15 @@ Item {
3535 value: false
3636 }
3737
38− Component.onCompleted: {
38+ Component.onCompleted: resetGeometry()
39+
40+ function resetGeometry() {
3941 // ensures apps which are tested decorations are in view.
4042 WindowStateStorage.geometry = {
4143 'unity8-dash': Qt.rect(0, units.gu(3), units.gu(50), units.gu(40)),
4244 'dialer-app': Qt.rect(units.gu(51), units.gu(3), units.gu(50), units.gu(40)),
4345 'camera-app': Qt.rect(0, units.gu(44), units.gu(50), units.gu(40)),
46+ 'gallery-app': Qt.rect(units.gu(51), units.gu(44), units.gu(50), units.gu(40))
4447 }
4548 }
4649
@@ -110,14 +113,14 @@ Item {
110113
111114 desktopStageLoader.active = true;
112115 tryCompare(desktopStageLoader, "status", Loader.Ready);
116+ root.resetGeometry();
113117 }
114118
115119 function killAllRunningApps() {
116− while (ApplicationManager.count > 1) {
117− var appIndex = ApplicationManager.get(0).appId == "unity8-dash" ? 1 : 0
118− ApplicationManager.stopApplication(ApplicationManager.get(appIndex).appId);
120+ while (ApplicationManager.count > 0) {
121+ ApplicationManager.stopApplication(ApplicationManager.get(0).appId);
119122 }
120− compare(ApplicationManager.count, 1)
123+ compare(ApplicationManager.count, 0)
121124 }
122125
123126 function waitUntilAppSurfaceShowsUp(appId) {
@@ -210,5 +213,69 @@ Item {
210213 tap(toAppDecoration);
211214 tryCompare(ApplicationManager.findApplication(data.apps[data.focusTo]).session.surface, "activeFocus", true);
212215 }
216+
217+ function test_minimizeApplicationHidesSurface(data) {
218+ var dashApp = startApplication("unity8-dash");
219+
220+ var dashDelegate = findChild(desktopStage, "stageDelegate_unity8-dash");
221+ verify(dashDelegate);
222+
223+ dashDelegate.minimize();
224+ tryCompare(dashApp.session.surface, "visible", false);
225+ }
226+
227+ function test_maximizeApplicationHidesSurfacesBehindIt(data) {
228+ var dashApp = startApplication("unity8-dash");
229+ var dialerApp = startApplication("dialer-app");
230+ var cameraApp = startApplication("camera-app");
231+
232+ var dashDelegate = findChild(desktopStage, "stageDelegate_unity8-dash");
233+ verify(dashDelegate);
234+ var dialerDelegate = findChild(desktopStage, "stageDelegate_dialer-app");
235+ verify(dialerDelegate);
236+ var cameraDelegate = findChild(desktopStage, "stageDelegate_camera-app");
237+ verify(cameraDelegate);
238+
239+ dialerDelegate.maximize();
240+ tryCompare(dialerDelegate, "visuallyMaximized", true);
241+
242+ tryCompare(dashApp.session.surface, "visible", false);
243+ compare(cameraApp.session.surface.visible, true);
244+
245+ dialerDelegate.unmaximize();
246+ compare(dashApp.session.surface.visible, true);
247+ compare(cameraApp.session.surface.visible, true);
248+ }
249+
250+ function test_applicationsBecomeVisibleWhenOccludingAppRemoved(data) {
251+ var dashApp = startApplication("unity8-dash");
252+ var dialerApp = startApplication("dialer-app");
253+ var cameraApp = startApplication("camera-app");
254+ var galleryApp = startApplication("gallery-app");
255+
256+ var dashDelegate = findChild(desktopStage, "stageDelegate_unity8-dash");
257+ verify(dashDelegate);
258+ var dialerDelegate = findChild(desktopStage, "stageDelegate_dialer-app");
259+ verify(dialerDelegate);
260+ var cameraDelegate = findChild(desktopStage, "stageDelegate_camera-app");
261+ verify(cameraDelegate);
262+ var galleryDelegate = findChild(desktopStage, "stageDelegate_gallery-app");
263+ verify(galleryDelegate);
264+
265+ dialerDelegate.maximize();
266+ galleryDelegate.maximize();
267+ tryCompare(dialerDelegate, "visuallyMaximized", true);
268+ tryCompare(galleryDelegate, "visuallyMaximized", true);
269+
270+ tryCompare(dashApp.session.surface, "visible", false);
271+ tryCompare(dialerApp.session.surface, "visible", false);
272+ tryCompare(cameraApp.session.surface, "visible", false);
273+
274+ ApplicationManager.stopApplication("gallery-app");
275+
276+ compare(cameraApp.session.surface.visible, true);
277+ tryCompare(dialerApp.session.surface, "visible", true);
278+ tryCompare(dashApp.session.surface, "visible", false); // still occluded by maximised dialer
279+ }
213280 }
214281}