on xenial help sign in
Untie usage mode from form factor and properly test stage switch
commit7014b7882ea31dadf89ca5d5baccd5e3a55af073 authorDaniel d'Andrada <daniel.dandrada@canonical.com> dateTue 5 May 2015, 16:21 (11 years ago) parentff23a1c
2 files changed+50−55
qml/Stages/TabletStage.qml+2 tests/qmltests/tst_Shell.qml+48−55
qml/Stages/TabletStage.qml+2
@@ -493,6 +493,8 @@ Rectangle {
493493
494494 delegate: TransformedTabletSpreadDelegate {
495495 id: spreadTile
496+ objectName: model.appId ? "tabletSpreadDelegate_" + model.appId
497+ : "tabletSpreadDelegate_null";
496498 height: spreadView.height
497499 width: model.stage == ApplicationInfoInterface.MainStage ? spreadView.width : spreadView.sideStageWidth
498500 active: model.appId == priv.mainStageAppId || model.appId == priv.sideStageAppId
tests/qmltests/tst_Shell.qml+48−55
@@ -85,11 +85,6 @@ Rectangle {
8585 width: units.gu(40)
8686 height: units.gu(71)
8787 }
88− StateChangeScript {
89− script: {
90− GSettingsController.setUsageMode("Staged")
91− }
92− }
9388 },
9489 State {
9590 name: "tablet"
@@ -98,28 +93,6 @@ Rectangle {
9893 width: units.gu(100)
9994 height: units.gu(71)
10095 }
101− StateChangeScript {
102− script: {
103− GSettingsController.setUsageMode("Staged")
104− }
105− }
106− },
107− State {
108− name: "desktop"
109− PropertyChanges {
110− target: shellLoader
111− width: units.gu(100)
112− height: units.gu(71)
113− }
114− PropertyChanges {
115− target: mouseEmulation
116− checked: false
117− }
118− StateChangeScript {
119− script: {
120− GSettingsController.setUsageMode("Windowed")
121− }
122− }
12396 }
12497 ]
12598
@@ -185,13 +158,23 @@ Rectangle {
185158 anchors { left: parent.left; right: parent.right }
186159 activeFocusOnPress: false
187160 text: "Size"
188− model: ["phone", "tablet", "desktop"]
161+ model: ["phone", "tablet"]
189162 onSelectedIndexChanged: {
190163 shellLoader.active = false;
191164 shellLoader.state = model[selectedIndex];
192165 shellLoader.active = true;
193166 }
194167 }
168+ ListItem.ItemSelector {
169+ id: usageModeSelector
170+ anchors { left: parent.left; right: parent.right }
171+ activeFocusOnPress: false
172+ text: "Usage mode"
173+ model: ["Staged", "Windowed"]
174+ onSelectedIndexChanged: {
175+ GSettingsController.setUsageMode(model[selectedIndex]);
176+ }
177+ }
195178 MouseTouchEmulationCheckbox {
196179 id: mouseEmulation
197180 checked: true
@@ -287,6 +270,7 @@ Rectangle {
287270 function cleanup() {
288271 tryCompare(shell, "enabled", true); // make sure greeter didn't leave us in disabled state
289272 tearDown();
273+ GSettingsController.setUsageMode("Staged");
290274 }
291275
292276 function loadShell(formFactor) {
@@ -733,13 +717,14 @@ Rectangle {
733717
734718 function test_launchedAppHasActiveFocus_data() {
735719 return [
736− {tag: "phone", formFactor: "phone"},
737− {tag: "tablet", formFactor: "tablet"},
738− {tag: "desktop", formFactor: "desktop"}
739− ];
720+ {tag: "phone", formFactor: "phone", usageMode: "Staged"},
721+ {tag: "tablet", formFactor: "tablet", usageMode: "Staged"},
722+ {tag: "desktop", formFactor: "tablet", usageMode: "Windowed"}
723+ ]
740724 }
741725
742726 function test_launchedAppHasActiveFocus(data) {
727+ GSettingsController.setUsageMode(data.usageMode);
743728 loadShell(data.formFactor);
744729 swipeAwayGreeter();
745730
@@ -752,19 +737,8 @@ Rectangle {
752737 tryCompare(webApp.session.surface, "activeFocus", true);
753738 }
754739
755− function test_launchedAppHasActiveFocusWhenFormFactorSwitched_data() {
756− return [
757− {tag: "phone->tablet", from: "phone", to: "tablet"},
758− {tag: "phone->desktop", from: "phone", to: "desktop"},
759− {tag: "tablet->phone", from: "tablet", to: "phone"},
760− {tag: "tablet->desktop", from: "tablet", to: "desktop"},
761− {tag: "desktop->phone", from: "desktop", to: "phone"},
762− {tag: "desktop->tablet", from: "desktop", to: "tablet"},
763− ];
764− }
765−
766− function test_launchedAppHasActiveFocusWhenFormFactorSwitched(data) {
767− loadShell(data.from);
740+ function test_launchedAppKeepsActiveFocusOnUsageModeChange() {
741+ loadShell("tablet");
768742 swipeAwayGreeter();
769743
770744 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -775,7 +749,24 @@ Rectangle {
775749
776750 tryCompare(webApp.session.surface, "activeFocus", true);
777751
778− loadShell(data.to);
752+ GSettingsController.setUsageMode("Windowed");
753+
754+ // check that the desktop stage and window have been loaded
755+ {
756+ var desktopWindow = findChild(shell, "decoratedWindow_webbrowser-app");
757+ verify(desktopWindow);
758+ }
759+
760+ tryCompare(webApp.session.surface, "activeFocus", true);
761+
762+ GSettingsController.setUsageMode("Staged");
763+
764+ // check that the tablet stage and app surface delegate have been loaded
765+ {
766+ var desktopWindow = findChild(shell, "tabletSpreadDelegate_webbrowser-app");
767+ verify(desktopWindow);
768+ }
769+
779770 tryCompare(webApp.session.surface, "activeFocus", true);
780771 }
781772
@@ -1262,31 +1253,33 @@ Rectangle {
12621253
12631254 function test_stageLoader_data() {
12641255 return [
1265− {tag: "phone", source: "Stages/PhoneStage.qml"},
1266− {tag: "tablet", source: "Stages/TabletStage.qml"},
1267− {tag: "desktop", source: "Stages/DesktopStage.qml"}
1256+ {tag: "phone", source: "Stages/PhoneStage.qml", formFactor: "phone", usageMode: "Staged"},
1257+ {tag: "tablet", source: "Stages/TabletStage.qml", formFactor: "tablet", usageMode: "Staged"},
1258+ {tag: "desktop", source: "Stages/DesktopStage.qml", formFactor: "tablet", usageMode: "Windowed"}
12681259 ]
12691260 }
12701261
12711262 function test_stageLoader(data) {
1272− loadShell(data.tag);
1263+ GSettingsController.setUsageMode(data.usageMode);
1264+ loadShell(data.formFactor);
12731265 var stageLoader = findChild(shell, "applicationsDisplayLoader");
12741266 verify(String(stageLoader.source).indexOf(data.source) >= 0);
12751267 }
12761268
12771269 function test_launcherInverted_data() {
12781270 return [
1279− {tag: "phone", formFactor: "phone"},
1280− {tag: "tablet", formFactor: "tablet"},
1281− {tag: "desktop", formFactor: "desktop"}
1282− ];
1271+ {tag: "phone", formFactor: "phone", usageMode: "Staged", launcherInverted: true},
1272+ {tag: "tablet", formFactor: "tablet", usageMode: "Staged", launcherInverted: true},
1273+ {tag: "desktop", formFactor: "tablet", usageMode: "Windowed", launcherInverted: false}
1274+ ]
12831275 }
12841276
12851277 function test_launcherInverted(data) {
1278+ GSettingsController.setUsageMode(data.usageMode);
12861279 loadShell(data.formFactor);
12871280
12881281 var launcher = findChild(shell, "launcher");
1289− compare(launcher.inverted, data.formFactor !== "desktop");
1282+ compare(launcher.inverted, data.launcherInverted);
12901283 }
12911284 }
12921285}