@@ -17,9 +17,10 @@
17#include "ApplicationInfo.h"
17#include "ApplicationInfo.h"
18#include "ApplicationTestInterface.h"
18#include "ApplicationTestInterface.h"
19#include "ApplicationManager.h"
19#include "ApplicationManager.h"
20+#include "SessionManager.h"
20#include "SurfaceManager.h"
21#include "SurfaceManager.h"
22+#include "MirSessionItem.h"
21#include "MirSurfaceItem.h"
23#include "MirSurfaceItem.h"
22−#include "MirSurfaceItemModel.h"
24quint32 nextId = 0;
25quint32 nextId = 0;
@@ -31,29 +32,51 @@ ApplicationTestInterface::ApplicationTestInterface(QObject* parent)
31 connection.registerObject("/com/canonical/Unity8/Mocks", parent);
32 connection.registerObject("/com/canonical/Unity8/Mocks", parent);
34−quint32 ApplicationTestInterface::addPromptSurface(const QString &appId, const QString &surfaceImage)
35+quint32 ApplicationTestInterface::addChildSession(const QString& appId, quint32 existingSessionId, const QString& surfaceImage)
36− qDebug() << "ApplicationTestInterface::addPromptSurface to " << appId;
37+ qDebug() << "ApplicationTestInterface::addChildSession to " << appId;
38 ApplicationInfo* application = ApplicationManager::singleton()->findApplication(appId);
39 ApplicationInfo* application = ApplicationManager::singleton()->findApplication(appId);
39 if (!application) {
40 if (!application) {
40− qDebug() << "ApplicationTestInterface::addPromptSurface - No application found for " << appId;
41+ qDebug() << "ApplicationTestInterface::addChildSession - No application found for " << appId;
45+ MirSessionItem* parentSession = nullptr;
46+ if (m_childSessions.contains(existingSessionId)) {
47+ parentSession = m_childSessions[existingSessionId];
48+ } else if (application->session()) {
49+ parentSession = application->session();
51+ qDebug() << "ApplicationTestInterface::addChildSession - No session for " << appId << ":" << existingSessionId;
43− quint32 surfaceId = ++nextId;
55+ quint32 sessionId = ++nextId;
44− MirSurfaceItem* surface = SurfaceManager::singleton()->createSurface(
56+ MirSessionItem* session = SessionManager::singleton()->createSession(
45− QString("%1-Prompt%2").arg(appId)
57+ QString("%1-Child%2").arg(parentSession->name())
46− .arg(surfaceId),
58+ .arg(sessionId),
47− MirSurfaceItem::Normal,
48− MirSurfaceItem::Maximized,
49 QUrl(surfaceImage));
59 QUrl(surfaceImage));
50− m_childItems[surfaceId] = surface;
60+ parentSession->addChildSession(session);
51− application->addPromptSurface(surface);
61+ session->createSurface();
62+ m_childSessions[sessionId] = session;
53− return surfaceId;
64+ return sessionId;
67+void ApplicationTestInterface::removeSession(quint32 sessionId)
69+ qDebug() << "ApplicationTestInterface::removeSession - " << sessionId;
71+ if (!m_childSessions.contains(sessionId)) {
72+ qDebug() << "ApplicationTestInterface::removeSession - No added session for " << sessionId;
75+ MirSessionItem* session = m_childSessions.take(sessionId);
76+ Q_EMIT session->removed();
56−quint32 ApplicationTestInterface::addChildSurface(const QString& appId, const quint32 existingSurfaceId, const QString& surfaceImage)
79+quint32 ApplicationTestInterface::addChildSurface(const QString& appId, quint32 existingSessionId, quint32 existingSurfaceId, const QString& surfaceImage)
58 qDebug() << "ApplicationTestInterface::addChildSurface to " << appId;
81 qDebug() << "ApplicationTestInterface::addChildSurface to " << appId;
@@ -64,10 +87,12 @@ quint32 ApplicationTestInterface::addChildSurface(const QString& appId, const qu
66 MirSurfaceItem* parentSurface = nullptr;
89 MirSurfaceItem* parentSurface = nullptr;
90+ if (m_childSessions.contains(existingSessionId) && m_childSessions[existingSessionId]->surface()) {
91+ parentSurface = m_childSessions[existingSessionId]->surface();
67− if (m_childItems.contains(existingSurfaceId)) {
92+ } else if (m_childSurfaces.contains(existingSurfaceId)) {
68− parentSurface = m_childItems[existingSurfaceId];
93+ parentSurface = m_childSurfaces[existingSurfaceId];
69− } else if (application->surface()) {
94+ } else if (application->session() && application->session()->surface()) {
70− parentSurface = application->surface();
95+ parentSurface = application->session()->surface();
72 qDebug() << "ApplicationTestInterface::addChildSurface - No surface for " << appId << ":" << existingSurfaceId;
97 qDebug() << "ApplicationTestInterface::addChildSurface - No surface for " << appId << ":" << existingSurfaceId;
@@ -81,19 +106,19 @@ quint32 ApplicationTestInterface::addChildSurface(const QString& appId, const qu
81 MirSurfaceItem::Maximized,
106 MirSurfaceItem::Maximized,
82 QUrl(surfaceImage));
107 QUrl(surfaceImage));
83 parentSurface->addChildSurface(surface);
108 parentSurface->addChildSurface(surface);
84− m_childItems[surfaceId] = surface;
109+ m_childSurfaces[surfaceId] = surface;
86 return surfaceId;
111 return surfaceId;
89−void ApplicationTestInterface::removeSurface(int surfaceId)
114+void ApplicationTestInterface::removeSurface(quint32 surfaceId)
91 qDebug() << "ApplicationTestInterface::removeSurface - " << surfaceId;
116 qDebug() << "ApplicationTestInterface::removeSurface - " << surfaceId;
93− if (!m_childItems.contains(surfaceId)) {
118+ if (!m_childSurfaces.contains(surfaceId)) {
94 qDebug() << "ApplicationTestInterface::removeSurface - No added surface for " << surfaceId;
119 qDebug() << "ApplicationTestInterface::removeSurface - No added surface for " << surfaceId;
97− MirSurfaceItem* surface = m_childItems.take(surfaceId);
122+ MirSurfaceItem* surface = m_childSurfaces.take(surfaceId);
98 Q_EMIT surface->removed();
123 Q_EMIT surface->removed();