@@ -19,6 +19,7 @@ import QtTest 1.0
1919import AccountsService 0.1
2020import GSettings 1.0
2121import LightDM.IntegratedLightDM 0.1 as LightDM
22+import SessionBroadcast 0.1
2223import Ubuntu.Components 1.3
2324import Ubuntu.Components.ListItems 1.3 as ListItem
2425import Ubuntu.Telephony 0.1 as Telephony
@@ -378,6 +379,18 @@ Rectangle {
378379 signalName: "setCurrentScopeCalled"
379380 }
380381
382+ SignalSpy {
383+ id: broadcastUrlSpy
384+ target: SessionBroadcast
385+ signalName: "startUrl"
386+ }
387+
388+ SignalSpy {
389+ id: broadcastHomeSpy
390+ target: SessionBroadcast
391+ signalName: "showHome"
392+ }
393+
381394 SignalSpy {
382395 id: unlockAllModemsSpy
383396 target: Connectivity
@@ -519,6 +532,8 @@ Rectangle {
519532 LightDM.Greeter.authenticate(""); // reset greeter
520533
521534 sessionSpy.clear();
535+ broadcastUrlSpy.clear();
536+ broadcastHomeSpy.clear();
522537
523538 GSettingsController.setLifecycleExemptAppids([]);
524539
@@ -2468,5 +2483,65 @@ Rectangle {
24682483 verify(greeter.shown);
24692484 verify(greeter.locked);
24702485 }
2486+
2487+ function test_greeterModeBroadcastsApp() {
2488+ setLightDMMockMode("single-pin");
2489+ shellLoader.mode = "greeter";
2490+ loadShell("phone");
2491+ shell.usageScenario = "phone";
2492+ waitForRendering(shell);
2493+
2494+ dragLauncherIntoView();
2495+ var appIcon = findChild(shell, "launcherDelegate0")
2496+ tap(appIcon);
2497+
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
2501+
2502+ var coverPage = findChild(shell, "coverPage");
2503+ tryCompare(coverPage, "showProgress", 0);
2504+ }
2505+
2506+ function test_greeterModeBroadcastsHome() {
2507+ setLightDMMockMode("single-pin");
2508+ shellLoader.mode = "greeter";
2509+ loadShell("phone");
2510+ shell.usageScenario = "phone";
2511+ waitForRendering(shell);
2512+
2513+ var gallerySurfaceId = topLevelSurfaceList.nextId;
2514+ var galleryApp = ApplicationManager.startApplication("gallery-app");
2515+ waitUntilAppWindowIsFullyLoaded(gallerySurfaceId);
2516+ compare(ApplicationManager.focusedApplicationId, "gallery-app");
2517+
2518+ dragLauncherIntoView();
2519+ tap(findChild(shell, "buttonShowDashHome"));
2520+
2521+ tryCompare(broadcastHomeSpy, "count", 1);
2522+ compare(ApplicationManager.focusedApplicationId, "gallery-app"); // confirm we didn't focus dash
2523+
2524+ var coverPage = findChild(shell, "coverPage");
2525+ tryCompare(coverPage, "showProgress", 0);
2526+ }
2527+
2528+ function test_greeterModeDispatchesURL() {
2529+ setLightDMMockMode("single-pin");
2530+ shellLoader.mode = "greeter";
2531+ loadShell("phone");
2532+ shell.usageScenario = "phone";
2533+ waitForRendering(shell);
2534+
2535+ var urlDispatcher = findInvisibleChild(shell, "urlDispatcher");
2536+ verify(urlDispatcher.active);
2537+ urlDispatcher.dispatchURL("test:"); // force signal emission
2538+
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
2542+
2543+ var coverPage = findChild(shell, "coverPage");
2544+ tryCompare(coverPage, "showProgress", 0);
2545+ }
24712546 }
24722547}