@@ -19,6 +19,7 @@ import QtTest 1.0
19import AccountsService 0.1
19import AccountsService 0.1
20import GSettings 1.0
20import GSettings 1.0
21import LightDM.IntegratedLightDM 0.1 as LightDM
21import LightDM.IntegratedLightDM 0.1 as LightDM
22+import SessionBroadcast 0.1
22import Ubuntu.Components 1.3
23import Ubuntu.Components 1.3
23import Ubuntu.Components.ListItems 1.3 as ListItem
24import Ubuntu.Components.ListItems 1.3 as ListItem
24import Ubuntu.Telephony 0.1 as Telephony
25import Ubuntu.Telephony 0.1 as Telephony
@@ -378,6 +379,18 @@ Rectangle {
378 signalName: "setCurrentScopeCalled"
379 signalName: "setCurrentScopeCalled"
384+ target: SessionBroadcast
385+ signalName: "startUrl"
389+ id: broadcastHomeSpy
390+ target: SessionBroadcast
391+ signalName: "showHome"
381 SignalSpy {
394 SignalSpy {
382 id: unlockAllModemsSpy
395 id: unlockAllModemsSpy
383 target: Connectivity
396 target: Connectivity
@@ -519,6 +532,8 @@ Rectangle {
519 LightDM.Greeter.authenticate(""); // reset greeter
532 LightDM.Greeter.authenticate(""); // reset greeter
521 sessionSpy.clear();
534 sessionSpy.clear();
535+ broadcastUrlSpy.clear();
536+ broadcastHomeSpy.clear();
523 GSettingsController.setLifecycleExemptAppids([]);
538 GSettingsController.setLifecycleExemptAppids([]);
@@ -2468,5 +2483,65 @@ Rectangle {
2468 verify(greeter.shown);
2483 verify(greeter.shown);
2469 verify(greeter.locked);
2484 verify(greeter.locked);
2487+ function test_greeterModeBroadcastsApp() {
2488+ setLightDMMockMode("single-pin");
2489+ shellLoader.mode = "greeter";
2490+ loadShell("phone");
2491+ shell.usageScenario = "phone";
2492+ waitForRendering(shell);
2494+ dragLauncherIntoView();
2495+ var appIcon = findChild(shell, "launcherDelegate0")
2498+ tryCompare(broadcastUrlSpy, "count", 1);
2499+ compare(broadcastUrlSpy.signalArguments[0][0], "application:///" + appIcon.appId + ".desktop");
2500+ compare(ApplicationManager.count, 1); // confirm only dash is open, we didn't start new app
2502+ var coverPage = findChild(shell, "coverPage");
2503+ tryCompare(coverPage, "showProgress", 0);
2506+ function test_greeterModeBroadcastsHome() {
2507+ setLightDMMockMode("single-pin");
2508+ shellLoader.mode = "greeter";
2509+ loadShell("phone");
2510+ shell.usageScenario = "phone";
2511+ waitForRendering(shell);
2513+ var gallerySurfaceId = topLevelSurfaceList.nextId;
2514+ var galleryApp = ApplicationManager.startApplication("gallery-app");
2515+ waitUntilAppWindowIsFullyLoaded(gallerySurfaceId);
2516+ compare(ApplicationManager.focusedApplicationId, "gallery-app");
2518+ dragLauncherIntoView();
2519+ tap(findChild(shell, "buttonShowDashHome"));
2521+ tryCompare(broadcastHomeSpy, "count", 1);
2522+ compare(ApplicationManager.focusedApplicationId, "gallery-app"); // confirm we didn't focus dash
2524+ var coverPage = findChild(shell, "coverPage");
2525+ tryCompare(coverPage, "showProgress", 0);
2528+ function test_greeterModeDispatchesURL() {
2529+ setLightDMMockMode("single-pin");
2530+ shellLoader.mode = "greeter";
2531+ loadShell("phone");
2532+ shell.usageScenario = "phone";
2533+ waitForRendering(shell);
2535+ var urlDispatcher = findInvisibleChild(shell, "urlDispatcher");
2536+ verify(urlDispatcher.active);
2537+ urlDispatcher.dispatchURL("test:"); // force signal emission
2539+ tryCompare(broadcastUrlSpy, "count", 1);
2540+ compare(broadcastUrlSpy.signalArguments[0][0], "test:");
2541+ compare(ApplicationManager.count, 1); // confirm only dash is open, we didn't start new app
2543+ var coverPage = findChild(shell, "coverPage");
2544+ tryCompare(coverPage, "showProgress", 0);