Merge lp://qastaging/~thomas-voss/media-hub/externalize-all-dependencies into lp://qastaging/media-hub
Status: | Needs review |
---|---|
Proposed branch: | lp://qastaging/~thomas-voss/media-hub/externalize-all-dependencies |
Merge into: | lp://qastaging/media-hub |
Prerequisite: | lp://qastaging/~thomas-voss/media-hub/decouple-player-skeleton-and-implementation |
Diff against target: |
710 lines (+132/-116) 7 files modified
src/core/media/player_implementation.cpp (+27/-31) src/core/media/player_implementation.h (+3/-0) src/core/media/server/server.cpp (+32/-10) src/core/media/service_implementation.cpp (+21/-35) src/core/media/service_implementation.h (+22/-0) src/core/media/service_skeleton.cpp (+22/-35) src/core/media/service_skeleton.h (+5/-5) |
To merge this branch: | bzr merge lp://qastaging/~thomas-voss/media-hub/externalize-all-dependencies |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Ubuntu Phablet Team | Pending | ||
Review via email: mp+252103@code.qastaging.launchpad.net |
Commit message
Externalize all the functional dependencies of Player{Skeleton, Implementation} and Service{Skeleton, Implementation} to allow for easy mocking in test cases.
Adjust the server setup to instantiate platform-default implementations.
Description of the change
Externalize all the functional dependencies of Player{Skeleton, Implementation} and Service{Skeleton, Implementation} to allow for easy mocking in test cases.
Adjust the server setup to instantiate platform-default implementations.
Unmerged revisions
- 121. By Thomas Voß
-
Fix FTBFS.
- 120. By Thomas Voß
-
[ Jim Hodapp ]
* Fix the bug which caused music playback to start playing again after
a phonecall hung up after being auto-paused by disconnecting a
headphone jack.
[ Thomas Voss ]
[ CI Train Bot ]
* New rebuild forced.
[ Jim Hodapp ]
* Disconnect playback_status_ changed_ signal in ~Private() to avoid a
deadlock.
* Prevent a 0 position from being reported to the app which happens
while seeking. Covers bad behavior that happens from GStreamer. Also
expose the about_to_finish signal to the client. Enable playback
again after manually seeking all the way to EOS. Also only send
VideoDimensionsChanged signal only when necessary.
[ Ricardo Mendoza ]
* Add an interface apparmor::ubuntu: :RequestAuthent icator that is used
to authenticate incoming open uri requests. Add an interface
apparmor::ubuntu: :RequestContext Resolver that is used to resolve a
dbus name to an apparmor::ubuntu: :Context. Provide an implementation
apparmor::ubuntu: :ExistingAuthen ticator that takes the impl. from
player_skeleton. cpp and uses it to implement the interface. Provide
an implementation apparmor::ubuntu: :RequestContext Resolver that
reaches out to the dbus daemon to resolve a given bus name to an
apparmor profile. Remove obsolete query for the apparmor profile in
ServiceSkeleton. Adjust the implementation in media::PlayerSkeleton
to rely on Request{Authenticator, ContextResolver}. removed:
src/core/media/apparmor. h added: src/core/ media/apparmor/
src/core/media/apparmor/ context. cpp
src/core/media/apparmor/ context. h src/core/ media/apparmor/ dbus.h
src/core/media/apparmor/ ubuntu. cpp src/core/ media/apparmor/ ubuntu. h
* Introduce an interface media::audio:: OutputObserver that allows the
core classes to observer the state of external audio outputs
(headphones/headsets) . Provide an implementation of
media::audio: :OutputObserver that relies on Pulseaudio to monitor
the availability of ports on the default sink. Adjust
media::ServiceImpleme ntation to use media:: audio:: OutputObserver,
defaulting to media::audio:: PulseAudioOutpu tObserver.
* Migrate all Player DBus methods to use transact_method() instead of
invoke_method_ synchronously( ), to prevent bus executor deadlocks.
[ Ricardo Salveti de Araujo ]
* Add an interface apparmor::ubuntu: :RequestAuthent icator that is used
to authenticate incoming open uri requests. Add an interface
apparmor::ubuntu: :RequestContext Resolver that is used to resolve a
dbus name to an apparmor::ubuntu: :Context. Provide an implementation
apparmor::ubuntu: :ExistingAuthen ticator that takes the impl. from
player_skeleton. cpp and uses it to implement the interface. Provide
an implementation apparmor::ubuntu: :RequestContext Resolver that
reaches out to the dbus daemon to resolve a given bus name to an
apparmor profile. Remove obsolete query for the apparmor profile in
ServiceSkeleton. Adjust the implementation in media::PlayerSkeleton
to rely on Request{Authenticator, ContextResolver}. removed:
src/core/media/apparmor. h added: src/core/ media/apparmor/
src/core/media/apparmor/ context. cpp
src/core/media/apparmor/ context. h src/core/ media/apparmor/ dbus.h
src/core/media/apparmor/ ubuntu. cpp src/core/ media/apparmor/ ubuntu. h
* Move src/core/media/call- monitor to src/core/ media/telephony .
Introduce a proper interface media::telephony: :CallMonitor. Slightly
adjust existing implementation based on Qt. Adjust
media::ServiceImpleme ntation to account for changes in
media::telephony: :CallMonitor.
[ thomas-voss ]
* Add an interface apparmor::ubuntu: :RequestAuthent icator that is used
to authenticate incoming open uri requests. Add an interface
apparmor::ubuntu: :RequestContext Resolver that is used to resolve a
dbus name to an apparmor::ubuntu: :Context. Provide an implementation
apparmor::ubuntu: :ExistingAuthen ticator that takes the impl. from
player_skeleton. cpp and uses it to implement the interface. Provide
an implementation apparmor::ubuntu: :RequestContext Resolver that
reaches out to the dbus daemon to resolve a given bus name to an
apparmor profile. Remove obsolete query for the apparmor profile in
ServiceSkeleton. Adjust the implementation in media::PlayerSkeleton
to rely on Request{Authenticator, ContextResolver}. removed:
src/core/media/apparmor. h added: src/core/ media/apparmor/
src/core/media/apparmor/ context. cpp
src/core/media/apparmor/ context. h src/core/ media/apparmor/ dbus.h
src/core/media/apparmor/ ubuntu. cpp src/core/ media/apparmor/ ubuntu. h
* Add an interface media::ClientDeathObse rver that abstracts away
receiving key-based death notifications for clients associated to
media::Player instances server-side Provide an implementation
media::HybrisClientDe athObserver that relies on hybris and
ultimately on Android's onBinderDied to receive death notifications.
Adjust media::PlayerStub and media::PlayerImplement ation to account
for the new interface. Adjust the CMake setup for tests to link
media-hub-service instead of recompiling large parts of the
implementation classes.
* Decouple PlayerSkeleton and PlayerImplementation by making
PlayerImplementation being able to inherit from arbitrary base
classes, as long as they provide the set of properties and signals
defined by media::Player.
* Decouple the ServiceSkeleton from the ServiceImplementation by
introducing a common interface media::KeyedPlayerStor e for storing
running Player sessions indexed by the Player::Key. Provide a
default implementation HashedKeyedPlayerStore relying on a hash map
for keeping track of player instances. Adjust implementation to
account for ServiceImplementation no longer inheriting from
ServiceSkeleton.
* Introduce a common class media::helper: :ExternalHelper s that
provides a convenient way to:
* Introduce an interface media::RecorderObserve r that allows the core
classes to monitor the overall state of the system. Provide an
implementation of media::RecorderObserve r relying on Hybris to
interface with the Android side. Adjust the ServiceImplementation to
connect to the platform-default media::RecorderObserve r.
* Introduce an interface media::audio:: OutputObserver that allows the
core classes to observer the state of external audio outputs
(headphones/headsets) . Provide an implementation of
media::audio: :OutputObserver that relies on Pulseaudio to monitor
the availability of ports on the default sink. Adjust
media::ServiceImpleme ntation to use media:: audio:: OutputObserver,
defaulting to media::audio:: PulseAudioOutpu tObserver.
* Introduce an interface media::power:: BatteryObserver to monitor the
current battery level of the system. The core reacts to low/very low
battery levels by pausing all multimedia playback sessions and
resumes them whenever the user has been notified of the critical
battery level. Provide an implementation of
media::power: :BatteryObserve r using
com.canonical.indicator. power.Battery. Adjust
media::ServiceImpleme ntation to use media:: power:: BatteryObserver .
* Move gstreamer::Playbin implementation to its own cpp file, thus
internalizing the Hybris setup portions. Make sure that media-hub-
service knows about
media::Player: :Error: :OutOfProcessBu fferStreamingNo tSupported by
linking with media-hub-client.
* Move src/core/media/call- monitor to src/core/ media/telephony .
Introduce a proper interface media::telephony: :CallMonitor. Slightly
adjust existing implementation based on Qt. Adjust
media::ServiceImpleme ntation to account for changes in
media::telephony: :CallMonitor.
* Replace home-grown mask type for the video size with a std::tuple,
i.e., media::video:: Dimensions. Introduce a simple TaggedInteger
class to distinguish between Width, Height and other dimensions.
Adjust interfaces of media::Player to rely on the new type. Adjust
implementation classes to account for interface changes. Adjust
Codec implementation for sending the tagged integer via the bus.
Adjust gstreamer::Engine and gstreamer::Playbin to hand out the
correct types.
* debian/control:
- Removing pre-depends that are not required
- Bumping standards-version to 3.9.6
[ Ricardo Salveti de Araujo ]
* Migrating tests to use ogg instead of mp3/avi removed:
tests/h264.avi tests/test.mp3 added: tests/test-audio-1. ogg
tests/test-video. ogg tests/test.mp3 renamed: tests/test.ogg =>
tests/test-audio. ogg - 119. By Thomas Voß
-
Remove obsolete Engine instance.
- 118. By Thomas Voß
-
Merge prereq branch.
Externalize all the functional dependencies of Player{Skeleton, Implementation} and Service{Skeleton, Implementation} to allow
for easy mocking in test cases.
Adjust the server setup to instantiate platform-default implementations.
PASSED: Continuous integration, rev:119 jenkins. qa.ubuntu. com/job/ media-hub- ci/301/ jenkins. qa.ubuntu. com/job/ media-hub- vivid-amd64- ci/141 jenkins. qa.ubuntu. com/job/ media-hub- vivid-armhf- ci/141 jenkins. qa.ubuntu. com/job/ media-hub- vivid-armhf- ci/141/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ media-hub- vivid-i386- ci/141
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/media- hub-ci/ 301/rebuild
http://