@@ -3175,6 +3175,96 @@ Rectangle {
31753175 tryCompare(menuBarLoader.item, "visible", true);
31763176 }
31773177
3178+ function test_enforceFocusOnStageOnAltTab() {
3179+ loadShell("desktop");
3180+ shell.usageScenario = "desktop";
3181+ waitForRendering(shell);
3182+ swipeAwayGreeter();
3183+
3184+ var appSurfaceId = topLevelSurfaceList.nextId;
3185+ var app = ApplicationManager.startApplication("unity8-dash")
3186+ waitUntilAppWindowIsFullyLoaded(appSurfaceId);
3187+
3188+ var appDelegate = startApplication("music-app")
3189+ verify(appDelegate);
3190+ waitForRendering(shell);
3191+
3192+ var launcher = findChild(shell, "launcher");
3193+ launcher.focus = true;
3194+
3195+ var stage = findChild(shell, "stage");
3196+
3197+ var spreadItem = findChild(shell, "spreadItem");
3198+
3199+ compare(spreadItem.highlightedIndex, -1);
3200+
3201+ keyPress(Qt.Key_Alt);
3202+ keyClick(Qt.Key_Tab);
3203+
3204+ tryCompare(spreadItem, "highlightedIndex", 1);
3205+ tryCompare(stage, "focus", true);
3206+
3207+ keyClick(Qt.Key_Tab);
3208+
3209+ tryCompare(spreadItem, "highlightedIndex", 0);
3210+
3211+ keyRelease(Qt.Key_Alt);
3212+ }
3213+
3214+ function test_maximizedWindowMenuThenAltTab_data() {
3215+ return [
3216+ { tag: "show spread", showSpread: true },
3217+ { tag: "do not show spread", showSpread: false },
3218+ ];
3219+ }
3220+
3221+ function test_maximizedWindowMenuThenAltTab(data) {
3222+ loadShell("desktop");
3223+ shell.usageScenario = "desktop";
3224+ waitForRendering(shell);
3225+ swipeAwayGreeter();
3226+
3227+ var appDelegate = startApplication("gmail-webapp");
3228+ var appDelegate2 = startApplication("dialer-app");
3229+
3230+ tryCompare(appDelegate2.surface, "activeFocus", true);
3231+
3232+ var maximizeButton = findChild(appDelegate2, "maximizeWindowButton");
3233+ mouseClick(maximizeButton);
3234+ tryCompare(appDelegate2, "state", "maximized");
3235+
3236+ var panel = findChild(shell, "panel");
3237+ var panelMouse = findChild(panel, "windowControlArea");
3238+ mouseMove(panelMouse);
3239+ var panelMenu = findChild(panel, "menuBar");
3240+ var menuBarLoader = findChild(panel, "menuBarLoader");
3241+ mouseMove(panelMenu);
3242+ var panelMenuItem = findChild(panelMenu, "menuBar-item0");
3243+ tryCompare(panelMenuItem, "visible", true);
3244+ Util.waitForBehaviors(shell);
3245+ mouseClick(panelMenuItem);
3246+ var panelMenuItemItem = findChild(panelMenu, "menuBar-item0-menu-item0-actionItem");
3247+ mouseMove(panelMenuItemItem, panelMenuItemItem.width/2, panelMenuItemItem.height/2);
3248+ verify(panelMenuItemItem.activeFocus);
3249+ verify(panelMenuItem.__popup);
3250+
3251+ keyPress(Qt.Key_Alt);
3252+ keyClick(Qt.Key_Tab);
3253+ if (data.showSpread) {
3254+ tryCompare(stage, "spreadShown", true);
3255+ }
3256+ tryCompareFunction(function() { return menuBarLoader.active === false; }, true);
3257+ keyRelease(Qt.Key_Alt)
3258+
3259+ tryCompare(appDelegate.surface, "activeFocus", true);
3260+
3261+ keyPress(Qt.Key_Alt);
3262+ keyClick(Qt.Key_Tab);
3263+ keyRelease(Qt.Key_Alt)
3264+
3265+ tryCompare(appDelegate2.surface, "activeFocus", true);
3266+ }
3267+
31783268 function test_maximizedWindowAndMenuInPanel() {
31793269 loadShell("desktop");
31803270 shell.usageScenario = "desktop";