@@ -17,25 +17,72 @@
1717import QtQuick 2.0
1818import QtTest 1.0
1919import Unity.Test 0.1 as UT
20+import Ubuntu.Components 0.1
2021import Unity.Application 0.1
2122import "../../../qml/Stages"
2223
23−Item {
24+Rectangle {
25+ color: "red"
2426 id: root
25− width: units.gu(40)
26− height: units.gu(80)
27−
27+ width: units.gu(70)
28+ height: units.gu(70)
2829
2930 property QtObject fakeApplication: null
3031
31− SessionContainer {
32− id: sessionContainer
33− anchors.fill: parent
3432
35− session: SessionManager.createSession("music-player", Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
36− onSessionChanged: {
37− session.manualSurfaceCreation = true;
38− session.createSurface();
33+ Component {
34+ id: sessionContainerComponent
35+
36+ SessionContainer {
37+ id: sessionContainer
38+ anchors.fill: parent
39+ }
40+ }
41+
42+ Loader {
43+ id: sessionContainerLoader
44+ anchors {
45+ top: parent.top
46+ bottom: parent.bottom
47+ left: parent.left
48+ }
49+ width: units.gu(40)
50+ sourceComponent: sessionContainerComponent
51+ }
52+
53+ Rectangle {
54+ color: "white"
55+ anchors {
56+ top: parent.top
57+ bottom: parent.bottom
58+ left: sessionContainerLoader.right
59+ right: parent.right
60+ }
61+
62+ Column {
63+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
64+ spacing: units.gu(1)
65+ Row {
66+ anchors { left: parent.left; right: parent.right }
67+ CheckBox {
68+ id: sessionCheckbox;
69+ checked: false;
70+ onCheckedChanged: {
71+ if (sessionContainerLoader.status !== Loader.Ready)
72+ return;
73+
74+ if (checked) {
75+ var fakeSession = SessionManager.createSession("music-player", Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
76+ fakeSession.manualSurfaceCreation = true;
77+ fakeSession.createSurface();
78+ sessionContainerLoader.item.session = fakeSession;
79+ } else {
80+ sessionContainerLoader.item.session.release();
81+ }
82+ }
83+ }
84+ Label { text: "session" }
85+ }
3986 }
4087 }
4188
@@ -50,6 +97,12 @@ Item {
5097 name: "SessionContainer"
5198
5299 function init() {
100+ // reload our test subject to get it in a fresh state once again
101+ sessionContainerLoader.active = false;
102+ sessionCheckbox.checked = false;
103+ sessionContainerLoader.active = true;
104+
105+ tryCompare(sessionContainerLoader.item, "session", null);
53106 sessionSpy.clear();
54107 }
55108
@@ -61,13 +114,16 @@ Item {
61114 }
62115
63116 function test_addChildSession(data) {
117+ sessionCheckbox.checked = true;
118+ var sessionContainer = sessionContainerLoader.item;
64119 compare(sessionContainer.childSessions.count(), 0);
65120
66121 var i;
67122 var sessions = [];
68123 for (i = 0; i < data.count; i++) {
69124 var session = SessionManager.createSession(sessionContainer.session.name + "-Child" + i,
70− Qt.resolvedUrl("../Dash/artwork/music-player-design.png"))
125+ Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
126+ session.createSurface();
71127 sessionContainer.session.addChildSession(session);
72128 compare(sessionContainer.childSessions.count(), i+1);
73129
@@ -88,6 +144,8 @@ Item {
88144 }
89145
90146 function test_nestedChildSessions(data) {
147+ sessionCheckbox.checked = true;
148+ var sessionContainer = sessionContainerLoader.item;
91149 compare(sessionContainer.childSessions.count(), 0);
92150
93151 var i;
@@ -97,7 +155,8 @@ Item {
97155 var container = sessionContainer;
98156 for (i = 0; i < data.depth; i++) {
99157 var session = SessionManager.createSession(lastSession.name + "-Child" + i,
100− Qt.resolvedUrl("../Dash/artwork/music-player-design.png"))
158+ Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
159+ session.createSurface();
101160 lastSession.addChildSession(session);
102161 compare(container.childSessions.count(), 1);
103162 sessions.push(session);