Merge lp:~dobey/indicator-sound/drop-greeeter into lp:indicator-sound
- drop-greeeter
- Merge into trunk.16.10
Status: | Approved |
---|---|
Approved by: | dobey |
Approved revision: | 552 |
Proposed branch: | lp:~dobey/indicator-sound/drop-greeeter |
Merge into: | lp:indicator-sound |
Diff against target: |
867 lines (+4/-697) 11 files modified
debian/control (+0/-1) src/CMakeLists.txt (+2/-20) src/accounts-service-user.vala (+0/-47) src/greeter-broadcast.vala (+0/-34) src/main.c (+2/-6) src/media-player-list-greeter.vala (+0/-123) src/media-player-user.vala (+0/-18) src/service.vala (+0/-9) tests/CMakeLists.txt (+0/-51) tests/greeter-list.cc (+0/-68) tests/media-player-user.cc (+0/-320) |
To merge this branch: | bzr merge lp:~dobey/indicator-sound/drop-greeeter |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
unity-api-1-bot | continuous-integration | Approve | |
Charles Kerr (community) | Approve | ||
Review via email: mp+320858@code.launchpad.net |
Commit message
Strip out the complicated non-working greeter support.
Description of the change
This removes the code which theoretically proxies the player controls out to the greeter screen, that doesn't work.
The Sound menu spec states that the player controls should NOT appear on the greeter screen:
https:/
"Whenever you are logged in (that is, not in the standalone installer session or at the login screen), any music player that advertises itself over http://
unity-api-1-bot (unity-api-1-bot) wrote : | # |
Charles Kerr (charlesk) wrote : | # |
So, first off, I'm not super happy with the tone of the MR, e.g. "theoretically". If the code needs fixing then that's something that should be addressed, but bugs happen and there's no need to be snide about it.
Secondly, I still disagree with the removal of this feature. Controlling play from the greeter is a worthwhile feature IMO.
But as per the discussion in the Indicator meeting today, I'm in the minority on this. If neither the coder doing the work, NOR the designer, want this feature, I'm not going to block the change. :P
unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:552
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Preview Diff
1 | === modified file 'debian/control' |
2 | --- debian/control 2017-02-07 22:04:35 +0000 |
3 | +++ debian/control 2017-03-23 19:32:45 +0000 |
4 | @@ -56,7 +56,6 @@ |
5 | indicator-common, |
6 | Recommends: unity-control-center | gnome-control-center | ubuntu-system-settings | pavucontrol | mate-media, |
7 | accountsservice, |
8 | -Suggests: unity-greeter-session-broadcast, |
9 | Description: System sound indicator. |
10 | System sound indicator which provides easy control of the PulseAudio sound |
11 | daemon. |
12 | |
13 | === modified file 'src/CMakeLists.txt' |
14 | --- src/CMakeLists.txt 2017-02-07 21:50:25 +0000 |
15 | +++ src/CMakeLists.txt 2017-03-23 19:32:45 +0000 |
16 | @@ -134,13 +134,6 @@ |
17 | mpris2-interfaces |
18 | ) |
19 | vala_add(indicator-sound-service |
20 | - media-player-user.vala |
21 | - DEPENDS |
22 | - media-player |
23 | - accounts-service-sound-settings |
24 | - greeter-broadcast |
25 | -) |
26 | -vala_add(indicator-sound-service |
27 | media-player-list.vala |
28 | DEPENDS |
29 | media-player |
30 | @@ -154,13 +147,6 @@ |
31 | mpris2-interfaces |
32 | ) |
33 | vala_add(indicator-sound-service |
34 | - media-player-list-greeter.vala |
35 | - DEPENDS |
36 | - media-player-list |
37 | - media-player-user |
38 | - media-player |
39 | -) |
40 | -vala_add(indicator-sound-service |
41 | mpris2-interfaces.vala |
42 | ) |
43 | vala_add(indicator-sound-service |
44 | @@ -183,7 +169,6 @@ |
45 | accounts-service-sound-settings |
46 | accounts-service-privacy-settings |
47 | accounts-service-system-sound-settings |
48 | - greeter-broadcast |
49 | ) |
50 | vala_add(indicator-sound-service |
51 | accounts-service-sound-settings.vala |
52 | @@ -194,9 +179,6 @@ |
53 | vala_add(indicator-sound-service |
54 | accounts-service-system-sound-settings.vala |
55 | ) |
56 | -vala_add(indicator-sound-service |
57 | - greeter-broadcast.vala |
58 | -) |
59 | |
60 | vala_finish(indicator-sound-service |
61 | SOURCES |
62 | @@ -235,8 +217,8 @@ |
63 | ) |
64 | |
65 | add_library( |
66 | - indicator-sound-service-lib STATIC |
67 | - ${INDICATOR_SOUND_SOURCES} |
68 | + indicator-sound-service-lib STATIC |
69 | + ${INDICATOR_SOUND_SOURCES} |
70 | ) |
71 | |
72 | target_link_libraries( |
73 | |
74 | === modified file 'src/accounts-service-user.vala' |
75 | --- src/accounts-service-user.vala 2015-12-31 20:49:42 +0000 |
76 | +++ src/accounts-service-user.vala 2017-03-23 19:32:45 +0000 |
77 | @@ -25,9 +25,6 @@ |
78 | AccountsServiceSystemSoundSettings? syssoundproxy = null; |
79 | uint timer = 0; |
80 | MediaPlayer? _player = null; |
81 | - GreeterBroadcast? greeter = null; |
82 | - |
83 | - public bool showDataOnGreeter { get; set; } |
84 | |
85 | bool _silentMode = false; |
86 | public bool silentMode { |
87 | @@ -118,14 +115,6 @@ |
88 | user = accounts_manager.get_user(GLib.Environment.get_user_name()); |
89 | user.notify["is-loaded"].connect(() => user_loaded_changed()); |
90 | user_loaded_changed(); |
91 | - |
92 | - Bus.get_proxy.begin<GreeterBroadcast> ( |
93 | - BusType.SYSTEM, |
94 | - "com.canonical.Unity.Greeter.Broadcast", |
95 | - "/com/canonical/Unity/Greeter/Broadcast", |
96 | - DBusProxyFlags.NONE, |
97 | - null, |
98 | - greeter_proxy_new); |
99 | } |
100 | |
101 | void user_loaded_changed () { |
102 | @@ -188,11 +177,8 @@ |
103 | var welcomeval = changed.lookup_value("MessagesWelcomeScreen", VariantType.BOOLEAN); |
104 | if (welcomeval != null) { |
105 | debug("Messages on welcome screen changed"); |
106 | - this.showDataOnGreeter = welcomeval.get_boolean(); |
107 | } |
108 | }); |
109 | - |
110 | - this.showDataOnGreeter = this.privacyproxy.messages_welcome_screen; |
111 | } catch (Error e) { |
112 | this.privacyproxy = null; |
113 | warning("Unable to get proxy to user privacy settings: %s", e.message); |
114 | @@ -219,37 +205,4 @@ |
115 | warning("Unable to get proxy to system sound settings: %s", e.message); |
116 | } |
117 | } |
118 | - |
119 | - void greeter_proxy_new (GLib.Object? obj, AsyncResult res) { |
120 | - try { |
121 | - this.greeter = Bus.get_proxy.end (res); |
122 | - |
123 | - this.greeter.SoundPlayPause.connect((username) => { |
124 | - if (username != GLib.Environment.get_user_name()) |
125 | - return; |
126 | - if (this._player == null) |
127 | - return; |
128 | - this._player.play_pause(); |
129 | - }); |
130 | - |
131 | - this.greeter.SoundNext.connect((username) => { |
132 | - if (username != GLib.Environment.get_user_name()) |
133 | - return; |
134 | - if (this._player == null) |
135 | - return; |
136 | - this._player.next(); |
137 | - }); |
138 | - |
139 | - this.greeter.SoundPrev.connect((username) => { |
140 | - if (username != GLib.Environment.get_user_name()) |
141 | - return; |
142 | - if (this._player == null) |
143 | - return; |
144 | - this._player.previous(); |
145 | - }); |
146 | - } catch (Error e) { |
147 | - this.greeter = null; |
148 | - warning("Unable to get greeter proxy: %s", e.message); |
149 | - } |
150 | - } |
151 | } |
152 | |
153 | === removed file 'src/greeter-broadcast.vala' |
154 | --- src/greeter-broadcast.vala 2014-03-13 18:38:55 +0000 |
155 | +++ src/greeter-broadcast.vala 1970-01-01 00:00:00 +0000 |
156 | @@ -1,34 +0,0 @@ |
157 | -/* |
158 | - * Copyright 2014 © Canonical Ltd. |
159 | - * |
160 | - * This program is free software; you can redistribute it and/or modify |
161 | - * it under the terms of the GNU General Public License as published by |
162 | - * the Free Software Foundation; version 3. |
163 | - * |
164 | - * This program is distributed in the hope that it will be useful, |
165 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
166 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
167 | - * GNU General Public License for more details. |
168 | - * |
169 | - * You should have received a copy of the GNU General Public License |
170 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
171 | - * |
172 | - * Authors: |
173 | - * Ted Gould <ted@canonical.com> |
174 | - */ |
175 | - |
176 | -[DBus (name = "com.canonical.Unity.Greeter.Broadcast")] |
177 | -public interface GreeterBroadcast : Object { |
178 | - // methods |
179 | - // unused public abstract async void RequestApplicationStart(string name, string appid) throws IOError; |
180 | - // unused public abstract async void RequestHomeShown(string name) throws IOError; |
181 | - public abstract async void RequestSoundPlayPause(string name) throws IOError; |
182 | - public abstract async void RequestSoundNext(string name) throws IOError; |
183 | - public abstract async void RequestSoundPrev(string name) throws IOError; |
184 | - // signals |
185 | - // unused public signal void StartApplication(string username, string appid); |
186 | - // unused public signal void ShowHome(string username); |
187 | - public signal void SoundPlayPause(string username); |
188 | - public signal void SoundNext(string username); |
189 | - public signal void SoundPrev(string username); |
190 | -} |
191 | |
192 | === modified file 'src/main.c' |
193 | --- src/main.c 2016-02-23 12:48:46 +0000 |
194 | +++ src/main.c 2017-03-23 19:32:45 +0000 |
195 | @@ -54,12 +54,8 @@ |
196 | AccountsServiceAccess * accounts_service_access = NULL; |
197 | |
198 | |
199 | - if (g_strcmp0("lightdm", g_get_user_name()) == 0) { |
200 | - playerlist = MEDIA_PLAYER_LIST(media_player_list_greeter_new()); |
201 | - } else { |
202 | - playerlist = MEDIA_PLAYER_LIST(media_player_list_mpris_new()); |
203 | - accounts = accounts_service_user_new(); |
204 | - } |
205 | + playerlist = MEDIA_PLAYER_LIST(media_player_list_mpris_new()); |
206 | + accounts = accounts_service_user_new(); |
207 | |
208 | pgloop = pa_glib_mainloop_new(NULL); |
209 | options = indicator_sound_options_gsettings_new(); |
210 | |
211 | === removed file 'src/media-player-list-greeter.vala' |
212 | --- src/media-player-list-greeter.vala 2014-04-01 23:20:56 +0000 |
213 | +++ src/media-player-list-greeter.vala 1970-01-01 00:00:00 +0000 |
214 | @@ -1,123 +0,0 @@ |
215 | -/* |
216 | - * Copyright © 2014 Canonical Ltd. |
217 | - * |
218 | - * This program is free software; you can redistribute it and/or modify |
219 | - * it under the terms of the GNU General Public License as published by |
220 | - * the Free Software Foundation; version 3. |
221 | - * |
222 | - * This program is distributed in the hope that it will be useful, |
223 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
224 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
225 | - * GNU General Public License for more details. |
226 | - * |
227 | - * You should have received a copy of the GNU General Public License |
228 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
229 | - * |
230 | - * Authors: |
231 | - * Ted Gould <ted@canonical.com> |
232 | - */ |
233 | - |
234 | -[DBus (name="com.canonical.UnityGreeter.List")] |
235 | -public interface UnityGreeterList : Object { |
236 | - public abstract async string get_active_entry () throws IOError; |
237 | - public signal void entry_selected (string entry_name); |
238 | -} |
239 | - |
240 | -public class MediaPlayerListGreeter : MediaPlayerList { |
241 | - string? selected_user = null; |
242 | - UnityGreeterList? proxy = null; |
243 | - HashTable<string, MediaPlayerUser> players = new HashTable<string, MediaPlayerUser>(str_hash, str_equal); |
244 | - |
245 | - public MediaPlayerListGreeter () { |
246 | - Bus.get_proxy.begin<UnityGreeterList> ( |
247 | - BusType.SESSION, |
248 | - "com.canonical.UnityGreeter", |
249 | - "/list", |
250 | - DBusProxyFlags.NONE, |
251 | - null, |
252 | - new_proxy); |
253 | - } |
254 | - |
255 | - void new_proxy (GLib.Object? obj, AsyncResult res) { |
256 | - try { |
257 | - this.proxy = Bus.get_proxy.end(res); |
258 | - |
259 | - this.proxy.entry_selected.connect(active_user_changed); |
260 | - this.proxy.get_active_entry.begin ((obj, res) => { |
261 | - try { |
262 | - var value = (obj as UnityGreeterList).get_active_entry.end(res); |
263 | - active_user_changed(value); |
264 | - } catch (Error e) { |
265 | - warning("Unable to get active entry: %s", e.message); |
266 | - } |
267 | - }); |
268 | - } catch (Error e) { |
269 | - this.proxy = null; |
270 | - warning("Unable to create proxy to the greeter: %s", e.message); |
271 | - } |
272 | - } |
273 | - |
274 | - void active_user_changed (string active_user) { |
275 | - /* No change, move along */ |
276 | - if (selected_user == active_user) { |
277 | - return; |
278 | - } |
279 | - |
280 | - debug(@"Active user changed to: $active_user"); |
281 | - |
282 | - var old_user = selected_user; |
283 | - |
284 | - /* Protect against a null user */ |
285 | - if (active_user != "" && active_user[0] != '*') { |
286 | - selected_user = active_user; |
287 | - } else { |
288 | - debug(@"Blocking active user change for '$active_user'"); |
289 | - selected_user = null; |
290 | - } |
291 | - |
292 | - if (selected_user != null && !players.contains(selected_user)) { |
293 | - players.insert(selected_user, new MediaPlayerUser(selected_user)); |
294 | - } |
295 | - |
296 | - if (old_user != null) { |
297 | - var old_player = players.lookup(old_user); |
298 | - debug("Removing player for user: %s", old_user); |
299 | - player_removed(old_player); |
300 | - } |
301 | - |
302 | - if (selected_user != null) { |
303 | - var new_player = players.lookup(selected_user); |
304 | - |
305 | - if (new_player != null) { |
306 | - debug("Adding player for user: %s", selected_user); |
307 | - player_added(new_player); |
308 | - } |
309 | - } |
310 | - } |
311 | - |
312 | - /* We need to have an iterator for the interface, but eh, we can |
313 | - only ever have one player for the current user */ |
314 | - public class Iterator : MediaPlayerList.Iterator { |
315 | - int i = 0; |
316 | - MediaPlayerListGreeter list; |
317 | - |
318 | - public Iterator (MediaPlayerListGreeter in_list) { |
319 | - list = in_list; |
320 | - } |
321 | - |
322 | - public override MediaPlayer? next_value () { |
323 | - MediaPlayer? retval = null; |
324 | - |
325 | - if (i == 0 && list.selected_user != null) { |
326 | - retval = list.players.lookup(list.selected_user); |
327 | - } |
328 | - i++; |
329 | - |
330 | - return retval; |
331 | - } |
332 | - } |
333 | - |
334 | - public override MediaPlayerList.Iterator iterator() { |
335 | - return new Iterator(this) as MediaPlayerList.Iterator; |
336 | - } |
337 | -} |
338 | |
339 | === modified file 'src/media-player-user.vala' |
340 | --- src/media-player-user.vala 2015-12-29 17:05:16 +0000 |
341 | +++ src/media-player-user.vala 2017-03-23 19:32:45 +0000 |
342 | @@ -22,7 +22,6 @@ |
343 | string username; |
344 | Act.User? actuser = null; |
345 | AccountsServiceSoundSettings? proxy = null; |
346 | - GreeterBroadcast? greeter = null; |
347 | |
348 | HashTable<string, bool> properties_queued = new HashTable<string, bool>(str_hash, str_equal); |
349 | uint properties_timeout = 0; |
350 | @@ -46,14 +45,6 @@ |
351 | null, |
352 | new_proxy); |
353 | }); |
354 | - |
355 | - Bus.get_proxy.begin<GreeterBroadcast> ( |
356 | - BusType.SYSTEM, |
357 | - "com.canonical.Unity.Greeter.Broadcast", |
358 | - "/com/canonical/Unity/Greeter/Broadcast", |
359 | - DBusProxyFlags.NONE, |
360 | - null, |
361 | - greeter_proxy_new); |
362 | } |
363 | |
364 | ~MediaPlayerUser () { |
365 | @@ -219,15 +210,6 @@ |
366 | set { } |
367 | } |
368 | |
369 | - void greeter_proxy_new (GLib.Object? obj, AsyncResult res) { |
370 | - try { |
371 | - this.greeter = Bus.get_proxy.end (res); |
372 | - } catch (Error e) { |
373 | - this.greeter = null; |
374 | - warning("Unable to get greeter proxy: %s", e.message); |
375 | - } |
376 | - } |
377 | - |
378 | /* Control functions through unity-greeter-session-broadcast */ |
379 | public override void activate () { |
380 | /* TODO: */ |
381 | |
382 | === modified file 'src/service.vala' |
383 | --- src/service.vala 2016-04-15 09:55:49 +0000 |
384 | +++ src/service.vala 2017-03-23 19:32:45 +0000 |
385 | @@ -73,15 +73,6 @@ |
386 | }); |
387 | |
388 | this.accounts_service = accounts; |
389 | - /* If we're on the greeter, don't export */ |
390 | - if (this.accounts_service != null) { |
391 | - this.accounts_service.notify["showDataOnGreeter"].connect(() => { |
392 | - this.export_to_accounts_service = this.accounts_service.showDataOnGreeter; |
393 | - eventually_update_player_actions(); |
394 | - }); |
395 | - |
396 | - this.export_to_accounts_service = this.accounts_service.showDataOnGreeter; |
397 | - } |
398 | |
399 | this.players = playerlist; |
400 | this.players.player_added.connect (this.player_added); |
401 | |
402 | === modified file 'tests/CMakeLists.txt' |
403 | --- tests/CMakeLists.txt 2017-02-07 21:50:25 +0000 |
404 | +++ tests/CMakeLists.txt 2017-03-23 19:32:45 +0000 |
405 | @@ -212,55 +212,6 @@ |
406 | add_test(notifications-test notifications-test) |
407 | |
408 | ########################### |
409 | -# Accounts Service User |
410 | -########################### |
411 | - |
412 | -include_directories(${CMAKE_SOURCE_DIR}/src) |
413 | -add_executable (media-player-user-test media-player-user.cc) |
414 | -target_link_libraries ( |
415 | - media-player-user-test |
416 | - indicator-sound-service-lib |
417 | - vala-mocks-lib |
418 | - ${SOUNDSERVICE_LIBRARIES} |
419 | - ${TEST_LIBRARIES} |
420 | - ${GMOCK_LIBRARIES} |
421 | -) |
422 | - |
423 | -# Split tests to work around libaccountservice sucking |
424 | -add_test(media-player-user-test-basic |
425 | - media-player-user-test --gtest_filter=MediaPlayerUserTest.BasicObject |
426 | -) |
427 | -add_test(media-player-user-test-dataset |
428 | - media-player-user-test --gtest_filter=MediaPlayerUserTest.DataSet |
429 | -) |
430 | -add_test(media-player-user-test-timeout |
431 | - media-player-user-test --gtest_filter=MediaPlayerUserTest.TimeoutTest |
432 | -) |
433 | - |
434 | -########################### |
435 | -# Greeter List |
436 | -########################### |
437 | - |
438 | -include_directories(${CMAKE_SOURCE_DIR}/src) |
439 | -add_executable (greeter-list-test greeter-list.cc) |
440 | -target_link_libraries ( |
441 | - greeter-list-test |
442 | - indicator-sound-service-lib |
443 | - vala-mocks-lib |
444 | - ${SOUNDSERVICE_LIBRARIES} |
445 | - ${TEST_LIBRARIES} |
446 | - ${GMOCK_LIBRARIES} |
447 | -) |
448 | - |
449 | -# Split tests to work around libaccountservice sucking |
450 | -add_test(greeter-list-test-basic |
451 | - greeter-list-test --gtest_filter=GreeterListTest.BasicObject |
452 | -) |
453 | -add_test(greeter-list-test-iterator |
454 | - greeter-list-test --gtest_filter=GreeterListTest.BasicIterator |
455 | -) |
456 | - |
457 | -########################### |
458 | # Indicator Test |
459 | ########################### |
460 | |
461 | @@ -293,8 +244,6 @@ |
462 | volume-control-test |
463 | sound-menu-test |
464 | notifications-test |
465 | - media-player-user-test |
466 | - greeter-list-test |
467 | indicator-test |
468 | PARENT_SCOPE |
469 | ) |
470 | |
471 | === removed file 'tests/greeter-list.cc' |
472 | --- tests/greeter-list.cc 2014-03-25 13:52:31 +0000 |
473 | +++ tests/greeter-list.cc 1970-01-01 00:00:00 +0000 |
474 | @@ -1,68 +0,0 @@ |
475 | -/* |
476 | - * Copyright © 2014 Canonical Ltd. |
477 | - * |
478 | - * This program is free software; you can redistribute it and/or modify |
479 | - * it under the terms of the GNU General Public License as published by |
480 | - * the Free Software Foundation; version 3. |
481 | - * |
482 | - * This program is distributed in the hope that it will be useful, |
483 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
484 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
485 | - * GNU General Public License for more details. |
486 | - * |
487 | - * You should have received a copy of the GNU General Public License |
488 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
489 | - * |
490 | - * Authors: |
491 | - * Ted Gould <ted@canonical.com> |
492 | - */ |
493 | - |
494 | -#include <gtest/gtest.h> |
495 | -#include <gio/gio.h> |
496 | - |
497 | -extern "C" { |
498 | -#include "indicator-sound-service.h" |
499 | -#include "vala-mocks.h" |
500 | -} |
501 | - |
502 | -class GreeterListTest : public ::testing::Test |
503 | -{ |
504 | - protected: |
505 | - GTestDBus * bus = nullptr; |
506 | - |
507 | - virtual void SetUp() { |
508 | - bus = g_test_dbus_new(G_TEST_DBUS_NONE); |
509 | - g_test_dbus_up(bus); |
510 | - } |
511 | - |
512 | - virtual void TearDown() { |
513 | - g_test_dbus_down(bus); |
514 | - g_clear_object(&bus); |
515 | - } |
516 | - |
517 | -}; |
518 | - |
519 | -TEST_F(GreeterListTest, BasicObject) { |
520 | - MediaPlayerListGreeter * list = media_player_list_greeter_new(); |
521 | - |
522 | - ASSERT_NE(nullptr, list); |
523 | - |
524 | - g_clear_object(&list); |
525 | - return; |
526 | -} |
527 | - |
528 | -TEST_F(GreeterListTest, BasicIterator) { |
529 | - MediaPlayerListGreeter * list = media_player_list_greeter_new(); |
530 | - ASSERT_NE(nullptr, list); |
531 | - |
532 | - MediaPlayerListGreeterIterator * iter = media_player_list_greeter_iterator_new(list); |
533 | - ASSERT_NE(nullptr, iter); |
534 | - |
535 | - MediaPlayer * player = media_player_list_iterator_next_value (MEDIA_PLAYER_LIST_ITERATOR(iter)); |
536 | - ASSERT_EQ(nullptr, player); |
537 | - |
538 | - g_clear_object(&iter); |
539 | - g_clear_object(&list); |
540 | - return; |
541 | -} |
542 | - |
543 | |
544 | === removed file 'tests/media-player-user.cc' |
545 | --- tests/media-player-user.cc 2015-08-12 00:13:59 +0000 |
546 | +++ tests/media-player-user.cc 1970-01-01 00:00:00 +0000 |
547 | @@ -1,320 +0,0 @@ |
548 | -/* |
549 | - * Copyright © 2014 Canonical Ltd. |
550 | - * |
551 | - * This program is free software; you can redistribute it and/or modify |
552 | - * it under the terms of the GNU General Public License as published by |
553 | - * the Free Software Foundation; version 3. |
554 | - * |
555 | - * This program is distributed in the hope that it will be useful, |
556 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
557 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
558 | - * GNU General Public License for more details. |
559 | - * |
560 | - * You should have received a copy of the GNU General Public License |
561 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
562 | - * |
563 | - * Authors: |
564 | - * Ted Gould <ted@canonical.com> |
565 | - */ |
566 | - |
567 | -#include <chrono> |
568 | -#include <future> |
569 | - |
570 | -#include <gtest/gtest.h> |
571 | -#include <gio/gio.h> |
572 | -#include <libdbustest/dbus-test.h> |
573 | - |
574 | -#include "accounts-service-mock.h" |
575 | - |
576 | -extern "C" { |
577 | -#include "indicator-sound-service.h" |
578 | -} |
579 | - |
580 | -class MediaPlayerUserTest : public ::testing::Test |
581 | -{ |
582 | - |
583 | - protected: |
584 | - DbusTestService * testsystem = NULL; |
585 | - AccountsServiceMock service_mock; |
586 | - |
587 | - DbusTestService * testsession = NULL; |
588 | - |
589 | - DbusTestProcess * systemmonitor = nullptr; |
590 | - DbusTestProcess * sessionmonitor = nullptr; |
591 | - |
592 | - GDBusConnection * system = NULL; |
593 | - GDBusConnection * session = NULL; |
594 | - GDBusProxy * proxy = NULL; |
595 | - |
596 | - std::chrono::milliseconds _eventuallyTime = std::chrono::seconds{5}; |
597 | - |
598 | - virtual void SetUp() { |
599 | - /* System Bus */ |
600 | - testsystem = dbus_test_service_new(NULL); |
601 | - dbus_test_service_set_bus(testsystem, DBUS_TEST_SERVICE_BUS_SYSTEM); |
602 | - |
603 | - systemmonitor = dbus_test_process_new("dbus-monitor"); |
604 | - dbus_test_process_append_param(systemmonitor, "--system"); |
605 | - dbus_test_task_set_name(DBUS_TEST_TASK(systemmonitor), "System"); |
606 | - dbus_test_service_add_task(testsystem, DBUS_TEST_TASK(systemmonitor)); |
607 | - |
608 | - dbus_test_service_add_task(testsystem, (DbusTestTask*)service_mock); |
609 | - dbus_test_service_start_tasks(testsystem); |
610 | - |
611 | - system = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL); |
612 | - ASSERT_NE(nullptr, system); |
613 | - g_dbus_connection_set_exit_on_close(system, FALSE); |
614 | - g_object_add_weak_pointer(G_OBJECT(system), (gpointer *)&system); |
615 | - |
616 | - /* Session Bus */ |
617 | - testsession = dbus_test_service_new(NULL); |
618 | - dbus_test_service_set_bus(testsession, DBUS_TEST_SERVICE_BUS_SESSION); |
619 | - |
620 | - sessionmonitor = dbus_test_process_new("dbus-monitor"); |
621 | - dbus_test_process_append_param(sessionmonitor, "--session"); |
622 | - dbus_test_task_set_name(DBUS_TEST_TASK(sessionmonitor), "Session"); |
623 | - dbus_test_service_add_task(testsession, DBUS_TEST_TASK(sessionmonitor)); |
624 | - |
625 | - dbus_test_service_start_tasks(testsession); |
626 | - |
627 | - session = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL); |
628 | - ASSERT_NE(nullptr, session); |
629 | - g_dbus_connection_set_exit_on_close(session, FALSE); |
630 | - g_object_add_weak_pointer(G_OBJECT(session), (gpointer *)&session); |
631 | - |
632 | - /* Setup proxy */ |
633 | - proxy = g_dbus_proxy_new_sync(system, |
634 | - G_DBUS_PROXY_FLAGS_NONE, |
635 | - NULL, |
636 | - "org.freedesktop.Accounts", |
637 | - "/user", |
638 | - "org.freedesktop.DBus.Properties", |
639 | - NULL, NULL); |
640 | - ASSERT_NE(nullptr, proxy); |
641 | - } |
642 | - |
643 | - virtual void TearDown() { |
644 | - g_clear_object(&sessionmonitor); |
645 | - g_clear_object(&systemmonitor); |
646 | - |
647 | - g_clear_object(&proxy); |
648 | - g_clear_object(&testsystem); |
649 | - g_clear_object(&testsession); |
650 | - |
651 | - g_object_unref(system); |
652 | - g_object_unref(session); |
653 | - |
654 | - #if 0 |
655 | - /* Accounts Service keeps a bunch of references around so we |
656 | - have to split the tests and can't check this :-( */ |
657 | - unsigned int cleartry = 0; |
658 | - while ((session != NULL || system != NULL) && cleartry < 100) { |
659 | - loop(100); |
660 | - cleartry++; |
661 | - } |
662 | - |
663 | - ASSERT_EQ(nullptr, session); |
664 | - ASSERT_EQ(nullptr, system); |
665 | - #endif |
666 | - } |
667 | - |
668 | - static gboolean timeout_cb (gpointer user_data) { |
669 | - GMainLoop * loop = static_cast<GMainLoop *>(user_data); |
670 | - g_main_loop_quit(loop); |
671 | - return G_SOURCE_REMOVE; |
672 | - } |
673 | - |
674 | - void loop (unsigned int ms) { |
675 | - GMainLoop * loop = g_main_loop_new(NULL, FALSE); |
676 | - g_timeout_add(ms, timeout_cb, loop); |
677 | - g_main_loop_run(loop); |
678 | - g_main_loop_unref(loop); |
679 | - } |
680 | - |
681 | - void set_property (const gchar * name, GVariant * value) { |
682 | - dbus_test_dbus_mock_object_update_property((DbusTestDbusMock *)service_mock, service_mock.get_sound(), name, value, NULL); |
683 | - } |
684 | - |
685 | - testing::AssertionResult expectEventually (std::function<testing::AssertionResult(void)> &testfunc) { |
686 | - auto loop = std::shared_ptr<GMainLoop>(g_main_loop_new(nullptr, FALSE), [](GMainLoop * loop) { if (loop != nullptr) g_main_loop_unref(loop); }); |
687 | - |
688 | - std::promise<testing::AssertionResult> retpromise; |
689 | - auto retfuture = retpromise.get_future(); |
690 | - auto start = std::chrono::steady_clock::now(); |
691 | - |
692 | - /* The core of the idle function as an object so we can use the C++-isms |
693 | - of attaching the variables and make this code reasonably readable */ |
694 | - std::function<void(void)> idlefunc = [&loop, &retpromise, &testfunc, &start, this]() -> void { |
695 | - auto result = testfunc(); |
696 | - |
697 | - if (result == false && _eventuallyTime > (std::chrono::steady_clock::now() - start)) { |
698 | - return; |
699 | - } |
700 | - |
701 | - retpromise.set_value(result); |
702 | - g_main_loop_quit(loop.get()); |
703 | - }; |
704 | - |
705 | - auto idlesrc = g_idle_add([](gpointer data) -> gboolean { |
706 | - auto func = reinterpret_cast<std::function<void(void)> *>(data); |
707 | - (*func)(); |
708 | - return G_SOURCE_CONTINUE; |
709 | - }, &idlefunc); |
710 | - |
711 | - g_main_loop_run(loop.get()); |
712 | - g_source_remove(idlesrc); |
713 | - |
714 | - return retfuture.get(); |
715 | - } |
716 | - |
717 | - /* Eventually Helpers */ |
718 | - #define _EVENTUALLY_HELPER(oper) \ |
719 | - template <typename... Args> testing::AssertionResult expectEventually##oper (Args&& ... args) { \ |
720 | - std::function<testing::AssertionResult(void)> func = [&]() { \ |
721 | - return testing::internal::CmpHelper##oper(std::forward<Args>(args)...); \ |
722 | - }; \ |
723 | - return expectEventually(func); \ |
724 | - } |
725 | - |
726 | - _EVENTUALLY_HELPER(EQ); |
727 | - _EVENTUALLY_HELPER(NE); |
728 | - _EVENTUALLY_HELPER(LT); |
729 | - _EVENTUALLY_HELPER(GT); |
730 | - _EVENTUALLY_HELPER(STREQ); |
731 | - _EVENTUALLY_HELPER(STRNE); |
732 | - |
733 | - #undef _EVENTUALLY_HELPER |
734 | -}; |
735 | - |
736 | -/* Helpers */ |
737 | -#define EXPECT_EVENTUALLY_EQ(expected, actual) \ |
738 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallyEQ, expected, actual) |
739 | - |
740 | -#define EXPECT_EVENTUALLY_NE(expected, actual) \ |
741 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallyNE, expected, actual) |
742 | - |
743 | -#define EXPECT_EVENTUALLY_LT(expected, actual) \ |
744 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallyLT, expected, actual) |
745 | - |
746 | -#define EXPECT_EVENTUALLY_GT(expected, actual) \ |
747 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallyGT, expected, actual) |
748 | - |
749 | -#define EXPECT_EVENTUALLY_STREQ(expected, actual) \ |
750 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallySTREQ, expected, actual) |
751 | - |
752 | -#define EXPECT_EVENTUALLY_STRNE(expected, actual) \ |
753 | - EXPECT_PRED_FORMAT2(MediaPlayerUserTest::expectEventuallySTRNE, expected, actual) |
754 | - |
755 | - |
756 | -TEST_F(MediaPlayerUserTest, BasicObject) { |
757 | - MediaPlayerUser * player = media_player_user_new("user"); |
758 | - ASSERT_NE(nullptr, player); |
759 | - |
760 | - /* Protected, but no useful data */ |
761 | - EXPECT_FALSE(media_player_get_is_running(MEDIA_PLAYER(player))); |
762 | - EXPECT_TRUE(media_player_get_can_raise(MEDIA_PLAYER(player))); |
763 | - EXPECT_STREQ("user", media_player_get_id(MEDIA_PLAYER(player))); |
764 | - EXPECT_STREQ("", media_player_get_name(MEDIA_PLAYER(player))); |
765 | - EXPECT_STREQ("", media_player_get_state(MEDIA_PLAYER(player))); |
766 | - EXPECT_EQ(nullptr, media_player_get_icon(MEDIA_PLAYER(player))); |
767 | - EXPECT_EQ(nullptr, media_player_get_current_track(MEDIA_PLAYER(player))); |
768 | - |
769 | - /* Get the proxy -- but no good data */ |
770 | - loop(100); |
771 | - |
772 | - /* Ensure even with the proxy we don't have anything */ |
773 | - EXPECT_FALSE(media_player_get_is_running(MEDIA_PLAYER(player))); |
774 | - EXPECT_TRUE(media_player_get_can_raise(MEDIA_PLAYER(player))); |
775 | - EXPECT_STREQ("user", media_player_get_id(MEDIA_PLAYER(player))); |
776 | - EXPECT_STREQ("", media_player_get_name(MEDIA_PLAYER(player))); |
777 | - EXPECT_STREQ("", media_player_get_state(MEDIA_PLAYER(player))); |
778 | - EXPECT_EQ(nullptr, media_player_get_icon(MEDIA_PLAYER(player))); |
779 | - EXPECT_EQ(nullptr, media_player_get_current_track(MEDIA_PLAYER(player))); |
780 | - |
781 | - g_clear_object(&player); |
782 | -} |
783 | - |
784 | -void |
785 | -running_update (GObject * obj, GParamSpec * pspec, bool * running) { |
786 | - *running = media_player_get_is_running(MEDIA_PLAYER(obj)) == TRUE; |
787 | -}; |
788 | - |
789 | -TEST_F(MediaPlayerUserTest, DISABLED_DataSet) { |
790 | - /* Put data into Acts */ |
791 | - set_property("Timestamp", g_variant_new_uint64(g_get_monotonic_time())); |
792 | - set_property("PlayerName", g_variant_new_string("The Player Formerly Known as Prince")); |
793 | - GIcon * in_icon = g_themed_icon_new_with_default_fallbacks("foo-bar-fallback"); |
794 | - set_property("PlayerIcon", g_variant_new_variant(g_icon_serialize(in_icon))); |
795 | - set_property("State", g_variant_new_string("Chillin'")); |
796 | - set_property("Title", g_variant_new_string("Dictator")); |
797 | - set_property("Artist", g_variant_new_string("Bansky")); |
798 | - set_property("Album", g_variant_new_string("Vinyl is dead")); |
799 | - set_property("ArtUrl", g_variant_new_string("http://art.url")); |
800 | - |
801 | - /* Build our media player */ |
802 | - MediaPlayerUser * player = media_player_user_new("user"); |
803 | - ASSERT_NE(nullptr, player); |
804 | - |
805 | - /* Ensure even with the proxy we don't have anything */ |
806 | - bool running = false; |
807 | - g_signal_connect(G_OBJECT(player), "notify::is-running", G_CALLBACK(running_update), &running); |
808 | - running_update(G_OBJECT(player), nullptr, &running); |
809 | - EXPECT_EVENTUALLY_EQ(true, running); |
810 | - EXPECT_TRUE(media_player_get_can_raise(MEDIA_PLAYER(player))); |
811 | - EXPECT_STREQ("user", media_player_get_id(MEDIA_PLAYER(player))); |
812 | - EXPECT_STREQ("The Player Formerly Known as Prince", media_player_get_name(MEDIA_PLAYER(player))); |
813 | - EXPECT_STREQ("Chillin'", media_player_get_state(MEDIA_PLAYER(player))); |
814 | - |
815 | - GIcon * out_icon = media_player_get_icon(MEDIA_PLAYER(player)); |
816 | - EXPECT_NE(nullptr, out_icon); |
817 | - EXPECT_TRUE(g_icon_equal(in_icon, out_icon)); |
818 | - // NOTE: No reference in 'out_icon' returned |
819 | - |
820 | - MediaPlayerTrack * track = media_player_get_current_track(MEDIA_PLAYER(player)); |
821 | - EXPECT_NE(nullptr, track); |
822 | - EXPECT_STREQ("Dictator", media_player_track_get_title(track)); |
823 | - EXPECT_STREQ("Bansky", media_player_track_get_artist(track)); |
824 | - EXPECT_STREQ("Vinyl is dead", media_player_track_get_album(track)); |
825 | - EXPECT_STREQ("http://art.url", media_player_track_get_art_url(track)); |
826 | - // NOTE: No reference in 'track' returned |
827 | - |
828 | - g_clear_object(&in_icon); |
829 | - g_clear_object(&player); |
830 | -} |
831 | - |
832 | -TEST_F(MediaPlayerUserTest, DISABLED_TimeoutTest) { |
833 | - /* Put data into Acts -- but 15 minutes ago */ |
834 | - set_property("Timestamp", g_variant_new_uint64(g_get_monotonic_time() - 15 * 60 * 1000 * 1000)); |
835 | - set_property("PlayerName", g_variant_new_string("The Player Formerly Known as Prince")); |
836 | - GIcon * in_icon = g_themed_icon_new_with_default_fallbacks("foo-bar-fallback"); |
837 | - set_property("PlayerIcon", g_variant_new_variant(g_icon_serialize(in_icon))); |
838 | - set_property("State", g_variant_new_string("Chillin'")); |
839 | - set_property("Title", g_variant_new_string("Dictator")); |
840 | - set_property("Artist", g_variant_new_string("Bansky")); |
841 | - set_property("Album", g_variant_new_string("Vinyl is dead")); |
842 | - set_property("ArtUrl", g_variant_new_string("http://art.url")); |
843 | - |
844 | - /* Build our media player */ |
845 | - MediaPlayerUser * player = media_player_user_new("user"); |
846 | - ASSERT_NE(nullptr, player); |
847 | - |
848 | - bool running = false; |
849 | - g_signal_connect(G_OBJECT(player), "notify::is-running", G_CALLBACK(running_update), &running); |
850 | - running_update(G_OBJECT(player), nullptr, &running); |
851 | - |
852 | - /* Ensure that we show up as not running */ |
853 | - EXPECT_EVENTUALLY_EQ(false, running); |
854 | - |
855 | - /* Update to make running */ |
856 | - set_property("Timestamp", g_variant_new_uint64(g_get_monotonic_time())); |
857 | - |
858 | - EXPECT_EVENTUALLY_EQ(true, running); |
859 | - |
860 | - /* Clear to not run */ |
861 | - set_property("Timestamp", g_variant_new_uint64(1)); |
862 | - |
863 | - EXPECT_EVENTUALLY_EQ(false, running); |
864 | - |
865 | - g_clear_object(&in_icon); |
866 | - g_clear_object(&player); |
867 | -} |
FAILED: Continuous integration, rev:552 /jenkins. canonical. com/unity- api-1/job/ lp-indicator- sound-ci/ 14/ /jenkins. canonical. com/unity- api-1/job/ build/1858/ console /jenkins. canonical. com/unity- api-1/job/ build-0- fetch/1865 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 1641/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= zesty/1641/ console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 1641/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= zesty/1641/ console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 1641/console /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= zesty/1641/ console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/unity- api-1/job/ lp-indicator- sound-ci/ 14/rebuild
https:/