@@ -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
@@ -405,6 +406,18 @@ Rectangle {
405406 signalName: "setCurrentScopeCalled"
406407 }
407408
409+ SignalSpy {
410+ id: broadcastUrlSpy
411+ target: SessionBroadcast
412+ signalName: "startUrl"
413+ }
414+
415+ SignalSpy {
416+ id: broadcastHomeSpy
417+ target: SessionBroadcast
418+ signalName: "showHome"
419+ }
420+
408421 SignalSpy {
409422 id: unlockAllModemsSpy
410423 target: Connectivity
@@ -546,6 +559,8 @@ Rectangle {
546559 LightDM.Greeter.authenticate(""); // reset greeter
547560
548561 sessionSpy.clear();
562+ broadcastUrlSpy.clear();
563+ broadcastHomeSpy.clear();
549564
550565 GSettingsController.setLifecycleExemptAppids([]);
551566
@@ -2420,6 +2435,66 @@ Rectangle {
24202435 compare(topmostSurfaceItem.touchReleaseCount, 2);
24212436 }
24222437
2438+ function test_greeterModeBroadcastsApp() {
2439+ setLightDMMockMode("single-pin");
2440+ shellLoader.mode = "greeter";
2441+ loadShell("phone");
2442+ shell.usageScenario = "phone";
2443+ waitForRendering(shell);
2444+
2445+ dragLauncherIntoView();
2446+ var appIcon = findChild(shell, "launcherDelegate0")
2447+ tap(appIcon);
2448+
2449+ tryCompare(broadcastUrlSpy, "count", 1);
2450+ compare(broadcastUrlSpy.signalArguments[0][0], "application:///" + appIcon.appId + ".desktop");
2451+ compare(ApplicationManager.count, 1); // confirm only dash is open, we didn't start new app
2452+
2453+ var coverPage = findChild(shell, "coverPage");
2454+ tryCompare(coverPage, "showProgress", 0);
2455+ }
2456+
2457+ function test_greeterModeBroadcastsHome() {
2458+ setLightDMMockMode("single-pin");
2459+ shellLoader.mode = "greeter";
2460+ loadShell("phone");
2461+ shell.usageScenario = "phone";
2462+ waitForRendering(shell);
2463+
2464+ var gallerySurfaceId = topLevelSurfaceList.nextId;
2465+ var galleryApp = ApplicationManager.startApplication("gallery-app");
2466+ waitUntilAppWindowIsFullyLoaded(gallerySurfaceId);
2467+ compare(ApplicationManager.focusedApplicationId, "gallery-app");
2468+
2469+ dragLauncherIntoView();
2470+ tap(findChild(shell, "buttonShowDashHome"));
2471+
2472+ tryCompare(broadcastHomeSpy, "count", 1);
2473+ compare(ApplicationManager.focusedApplicationId, "gallery-app"); // confirm we didn't focus dash
2474+
2475+ var coverPage = findChild(shell, "coverPage");
2476+ tryCompare(coverPage, "showProgress", 0);
2477+ }
2478+
2479+ function test_greeterModeDispatchesURL() {
2480+ setLightDMMockMode("single-pin");
2481+ shellLoader.mode = "greeter";
2482+ loadShell("phone");
2483+ shell.usageScenario = "phone";
2484+ waitForRendering(shell);
2485+
2486+ var urlDispatcher = findInvisibleChild(shell, "urlDispatcher");
2487+ verify(urlDispatcher.active);
2488+ urlDispatcher.urlRequested("test:"); // force signal emission
2489+
2490+ tryCompare(broadcastUrlSpy, "count", 1);
2491+ compare(broadcastUrlSpy.signalArguments[0][0], "test:");
2492+ compare(ApplicationManager.count, 1); // confirm only dash is open, we didn't start new app
2493+
2494+ var coverPage = findChild(shell, "coverPage");
2495+ tryCompare(coverPage, "showProgress", 0);
2496+ }
2497+
24232498 function test_switchKeymap() {
24242499 // start with phone shell
24252500 loadShell("phone");