Merge lp:~mir-team/qtmir/rtm-14.09-staging into lp:qtmir/rtm-14.09

Proposed by Michał Sawicz on 2014-12-12
Status: Merged
Approved by: kevin gunn on 2015-01-12
Approved revision: 288
Merged at revision: 285
Proposed branch: lp:~mir-team/qtmir/rtm-14.09-staging
Merge into: lp:qtmir/rtm-14.09
Diff against target: 261 lines (+121/-6)
10 files modified
debian/changelog (+13/-0)
debian/control (+1/-1)
src/modules/Unity/Application/session.cpp (+14/-1)
src/platforms/mirserver/promptsessionlistener.cpp (+12/-0)
src/platforms/mirserver/promptsessionlistener.h (+4/-0)
src/platforms/mirserver/qteventfeeder.cpp (+7/-0)
tests/modules/SessionManager/session_test.cpp (+58/-0)
tests/modules/common/mock_mir_session.h (+3/-1)
tests/modules/common/mock_prompt_session.h (+5/-0)
tests/modules/common/mock_prompt_session_manager.h (+4/-3)
To merge this branch: bzr merge lp:~mir-team/qtmir/rtm-14.09-staging
Reviewer Review Type Date Requested Status
Michał Sawicz Approve on 2014-12-12
Review via email: mp+244580@code.launchpad.net
To post a comment you must log in.
Michał Sawicz (saviq) wrote :

As per upstream changes

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2014-12-18 10:14:58 +0000
3+++ debian/changelog 2015-01-12 13:37:53 +0000
4@@ -1,3 +1,16 @@
5+qtmir (0.4.4+15.04.20150112~rtm-0ubuntu1) UNRELEASED; urgency=medium
6+
7+ [ Nick Dedekind ]
8+ * Compatibility for Mir 0.8.1
9+ * Notify prompt sessions that sessions have been suspended/resumed.
10+ (LP: #1355173, #1384950)
11+
12+ [ Ricardo Salveti de Araujo ]
13+ * qteventfeeder: adding bt and wired headset multimedia keys (LP:
14+ #1398427)
15+
16+ -- Michał Sawicz <michal.sawicz@canonical.com> Mon, 12 Jan 2015 09:39:30 +0100
17+
18 qtmir (0.4.4+15.04.20141218~rtm-0ubuntu1) 14.09; urgency=low
19
20 [ Gerry Boland ]
21
22=== modified file 'debian/control'
23--- debian/control 2014-10-30 21:48:17 +0000
24+++ debian/control 2015-01-12 13:37:53 +0000
25@@ -13,7 +13,7 @@
26 libglib2.0-dev,
27 liblttng-ust-dev,
28 libmirclient-dev (>= 0.6.0),
29- libmirserver-dev (>= 0.6.0),
30+ libmirserver-dev (>= 0.8.1),
31 libmtdev-dev,
32 libprocess-cpp-dev,
33 libqt5sensors5-dev,
34
35=== modified file 'src/modules/Unity/Application/session.cpp'
36--- src/modules/Unity/Application/session.cpp 2014-09-11 16:18:40 +0000
37+++ src/modules/Unity/Application/session.cpp 2015-01-12 13:37:53 +0000
38@@ -26,6 +26,7 @@
39
40 // mir
41 #include <mir/scene/session.h>
42+#include <mir/scene/prompt_session.h>
43 #include <mir/scene/prompt_session_manager.h>
44
45 // Qt
46@@ -223,7 +224,6 @@
47 {
48 case Session::State::Suspended:
49 if (m_state == Session::State::Running) {
50- stopPromptSessions();
51 session()->set_lifecycle_state(mir_lifecycle_state_will_suspend);
52 m_suspendTimer->start(3000);
53 }
54@@ -253,6 +253,19 @@
55 m_state = state;
56 Q_EMIT stateChanged(state);
57
58+ foreachPromptSession([this, state](const std::shared_ptr<ms::PromptSession>& promptSession) {
59+ switch (state) {
60+ case Session::State::Suspended:
61+ m_promptSessionManager->suspend_prompt_session(promptSession);
62+ break;
63+ case Session::State::Running:
64+ m_promptSessionManager->resume_prompt_session(promptSession);
65+ break;
66+ default:
67+ break;
68+ }
69+ });
70+
71 foreachChildSession([state](SessionInterface* session) {
72 session->setState(state);
73 });
74
75=== modified file 'src/platforms/mirserver/promptsessionlistener.cpp'
76--- src/platforms/mirserver/promptsessionlistener.cpp 2014-07-11 17:15:47 +0000
77+++ src/platforms/mirserver/promptsessionlistener.cpp 2015-01-12 13:37:53 +0000
78@@ -45,6 +45,18 @@
79 Q_EMIT promptSessionStopping(prompt_session);
80 }
81
82+void PromptSessionListener::suspending(std::shared_ptr<ms::PromptSession> const& prompt_session)
83+{
84+ qCDebug(QTMIR_MIR_MESSAGES) << "PromptSessionListener::suspending - this=" << this << "prompt_session=" << prompt_session.get();
85+ Q_EMIT promptSessionSuspending(prompt_session);
86+}
87+
88+void PromptSessionListener::resuming(std::shared_ptr<ms::PromptSession> const& prompt_session)
89+{
90+ qCDebug(QTMIR_MIR_MESSAGES) << "PromptSessionListener::resuming - this=" << this << "prompt_session=" << prompt_session.get();
91+ Q_EMIT promptSessionResuming(prompt_session);
92+}
93+
94 void PromptSessionListener::prompt_provider_added(ms::PromptSession const& prompt_session,
95 std::shared_ptr<ms::Session> const& prompt_provider)
96 {
97
98=== modified file 'src/platforms/mirserver/promptsessionlistener.h'
99--- src/platforms/mirserver/promptsessionlistener.h 2014-07-11 17:15:47 +0000
100+++ src/platforms/mirserver/promptsessionlistener.h 2015-01-12 13:37:53 +0000
101@@ -30,6 +30,8 @@
102
103 void starting(std::shared_ptr<mir::scene::PromptSession> const& prompt_session) override;
104 void stopping(std::shared_ptr<mir::scene::PromptSession> const& prompt_session) override;
105+ void suspending(std::shared_ptr<mir::scene::PromptSession> const& prompt_session) override;
106+ void resuming(std::shared_ptr<mir::scene::PromptSession> const& prompt_session) override;
107
108 void prompt_provider_added(mir::scene::PromptSession const& prompt_session,
109 std::shared_ptr<mir::scene::Session> const& prompt_provider) override;
110@@ -39,6 +41,8 @@
111 Q_SIGNALS:
112 void promptSessionStarting(std::shared_ptr<mir::scene::PromptSession> const& session);
113 void promptSessionStopping(std::shared_ptr<mir::scene::PromptSession> const& session);
114+ void promptSessionSuspending(std::shared_ptr<mir::scene::PromptSession> const& session);
115+ void promptSessionResuming(std::shared_ptr<mir::scene::PromptSession> const& session);
116
117 void promptProviderAdded(mir::scene::PromptSession const*, std::shared_ptr<mir::scene::Session> const&);
118 void promptProviderRemoved(mir::scene::PromptSession const*, std::shared_ptr<mir::scene::Session> const&);
119
120=== modified file 'src/platforms/mirserver/qteventfeeder.cpp'
121--- src/platforms/mirserver/qteventfeeder.cpp 2014-09-24 21:30:06 +0000
122+++ src/platforms/mirserver/qteventfeeder.cpp 2015-01-12 13:37:53 +0000
123@@ -116,6 +116,13 @@
124 XKB_KEY_XF86PowerOff, Qt::Key_PowerOff,
125 XKB_KEY_XF86PowerDown, Qt::Key_PowerDown,
126
127+ /* Bluetooth / Wired headset multimedia keys */
128+ XKB_KEY_XF86AudioPlay, Qt::Key_MediaPlay,
129+ XKB_KEY_XF86AudioPrev, Qt::Key_MediaPrevious,
130+ XKB_KEY_XF86AudioNext, Qt::Key_MediaNext,
131+ XKB_KEY_XF86AudioPause, Qt::Key_MediaPause,
132+ XKB_KEY_XF86AudioMedia, Qt::Key_MediaTogglePlayPause,
133+
134 0, 0
135 };
136
137
138=== modified file 'tests/modules/SessionManager/session_test.cpp'
139--- tests/modules/SessionManager/session_test.cpp 2014-09-11 16:18:40 +0000
140+++ tests/modules/SessionManager/session_test.cpp 2015-01-12 13:37:53 +0000
141@@ -191,3 +191,61 @@
142 delete session;
143 EXPECT_THAT(destroyed, UnorderedElementsAre(session1, session2, session3));
144 }
145+
146+class MockQtMirSession : public qtmir::Session
147+{
148+public:
149+ MockQtMirSession(const std::shared_ptr<ms::Session>& session,
150+ const std::shared_ptr<ms::PromptSessionManager>& promptSessionManager)
151+ : Session(session, promptSessionManager)
152+ {}
153+
154+ using SessionInterface::appendPromptSession;
155+};
156+
157+TEST_F(SessionTests, SuspendPromptSessionWhenSessionSuspends)
158+{
159+ using namespace testing;
160+
161+ const QString appId("test-app");
162+ quint64 procId = 5551;
163+
164+ auto mirSession = std::make_shared<MockSession>(appId.toStdString(), procId);
165+ EXPECT_CALL(*mirSession, set_lifecycle_state(_));
166+
167+ auto session = std::make_shared<MockQtMirSession>(mirSession, mirConfig->the_prompt_session_manager());
168+ session->setState(Session::State::Running);
169+
170+ auto mirPromptSession = std::make_shared<ms::MockPromptSession>();
171+ session->appendPromptSession(mirPromptSession);
172+
173+ EXPECT_CALL(*mirConfig->the_mock_prompt_session_manager(), suspend_prompt_session(_)).Times(1);
174+
175+ session->setState(Session::State::Suspended);
176+
177+ Mock::VerifyAndClear(mirConfig->the_mock_prompt_session_manager().get());
178+}
179+
180+TEST_F(SessionTests, ResumePromptSessionWhenSessionResumes)
181+{
182+ using namespace testing;
183+
184+ const QString appId("test-app");
185+ quint64 procId = 5551;
186+
187+ auto mirSession = std::make_shared<MockSession>(appId.toStdString(), procId);
188+ EXPECT_CALL(*mirSession, set_lifecycle_state(_));
189+
190+ auto session = std::make_shared<MockQtMirSession>(mirSession, mirConfig->the_prompt_session_manager());
191+ session->setState(Session::State::Suspended);
192+
193+ auto mirPromptSession = std::make_shared<ms::MockPromptSession>();
194+ session->appendPromptSession(mirPromptSession);
195+
196+ EXPECT_CALL(*mirConfig->the_mock_prompt_session_manager(), resume_prompt_session(_)).Times(1);
197+
198+ session->setState(Session::State::Running);
199+
200+ Mock::VerifyAndClear(mirConfig->the_mock_prompt_session_manager().get());
201+}
202+
203
204=== modified file 'tests/modules/common/mock_mir_session.h'
205--- tests/modules/common/mock_mir_session.h 2014-09-11 16:18:40 +0000
206+++ tests/modules/common/mock_mir_session.h 2015-01-12 13:37:53 +0000
207@@ -31,7 +31,7 @@
208 struct MockSession : public Session
209 {
210 MockSession() {}
211- MockSession(std::string const& sessionName, pid_t processId)
212+ MockSession(std::string const& sessionName, pid_t processId)
213 : m_sessionName(sessionName), m_sessionId(processId)
214 {}
215
216@@ -62,6 +62,8 @@
217
218 void start_prompt_session() override {};
219 void stop_prompt_session() override {};
220+ void suspend_prompt_session() override {};
221+ void resume_prompt_session() override {};
222
223 private:
224 std::string m_sessionName;
225
226=== modified file 'tests/modules/common/mock_prompt_session.h'
227--- tests/modules/common/mock_prompt_session.h 2014-09-11 16:18:40 +0000
228+++ tests/modules/common/mock_prompt_session.h 2015-01-12 13:37:53 +0000
229@@ -26,6 +26,11 @@
230
231 struct MockPromptSession : public PromptSession
232 {
233+public:
234+ MOCK_METHOD1(start, void(std::shared_ptr<Session> const&));
235+ MOCK_METHOD1(stop, void(std::shared_ptr<Session> const&));
236+ MOCK_METHOD1(suspend, void(std::shared_ptr<Session> const&));
237+ MOCK_METHOD1(resume, void(std::shared_ptr<Session> const&));
238 };
239
240 } // namespace scene
241
242=== modified file 'tests/modules/common/mock_prompt_session_manager.h'
243--- tests/modules/common/mock_prompt_session_manager.h 2014-09-11 16:18:40 +0000
244+++ tests/modules/common/mock_prompt_session_manager.h 2015-01-12 13:37:53 +0000
245@@ -34,12 +34,13 @@
246
247 MOCK_CONST_METHOD1(stop_prompt_session, void(std::shared_ptr<PromptSession> const&));
248
249+ MOCK_CONST_METHOD1(suspend_prompt_session, void(std::shared_ptr<PromptSession> const&));
250+
251+ MOCK_CONST_METHOD1(resume_prompt_session, void(std::shared_ptr<PromptSession> const&));
252+
253 MOCK_CONST_METHOD2(add_prompt_provider, void(std::shared_ptr<PromptSession> const&,
254 std::shared_ptr<mir::scene::Session> const&));
255
256- MOCK_CONST_METHOD2(add_prompt_provider_by_pid, void(std::shared_ptr<PromptSession> const&,
257- pid_t));
258-
259 MOCK_CONST_METHOD1(add_expected_session, void(std::shared_ptr<Session> const&));
260
261 MOCK_CONST_METHOD1(remove_session, void(std::shared_ptr<Session> const&));

Subscribers

People subscribed via source and target branches

to all changes: