diff options
author | lhchavez <lhchavez@chromium.org> | 2016-01-21 15:27:25 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-21 23:30:17 +0000 |
commit | 811769ba67bef5ff1e0a120146c0d593a6ebe5db (patch) | |
tree | 8b6350309843da6c9209af01abf1a186e6572f38 /components/arc/video | |
parent | a1b6ab993b5e0570d251198085002bb04e735015 (diff) | |
download | chromium_src-811769ba67bef5ff1e0a120146c0d593a6ebe5db.zip chromium_src-811769ba67bef5ff1e0a120146c0d593a6ebe5db.tar.gz chromium_src-811769ba67bef5ff1e0a120146c0d593a6ebe5db.tar.bz2 |
arc-bridge: Introduce the ArcService class
Several services managed by ARC were introducing empty, opaque classes
just to be able to be constructed outside of components/. This was
becoming ugly, so introduce just one interface that all services must
implement and whose lifecycle will be managed by ArcServiceManager.
BUG=None
TEST=trybots
Review URL: https://codereview.chromium.org/1596663002
Cr-Commit-Position: refs/heads/master@{#370825}
Diffstat (limited to 'components/arc/video')
-rw-r--r-- | components/arc/video/arc_video_bridge.cc | 28 | ||||
-rw-r--r-- | components/arc/video/arc_video_bridge.h | 15 |
2 files changed, 15 insertions, 28 deletions
diff --git a/components/arc/video/arc_video_bridge.cc b/components/arc/video/arc_video_bridge.cc index dddbb39..a57f775 100644 --- a/components/arc/video/arc_video_bridge.cc +++ b/components/arc/video/arc_video_bridge.cc @@ -9,25 +9,16 @@ namespace arc { ArcVideoBridge::ArcVideoBridge( + ArcBridgeService* bridge_service, scoped_ptr<VideoHostDelegate> video_host_delegate) - : video_host_delegate_(std::move(video_host_delegate)), - binding_(video_host_delegate_.get()) {} - -ArcVideoBridge::~ArcVideoBridge() { - arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get(); - DCHECK(bridge_service); - bridge_service->RemoveObserver(this); + : ArcService(bridge_service), + video_host_delegate_(std::move(video_host_delegate)), + binding_(video_host_delegate_.get()) { + arc_bridge_service()->AddObserver(this); } -void ArcVideoBridge::StartObservingBridgeServiceChanges() { - arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get(); - DCHECK(bridge_service); - bridge_service->AddObserver(this); - - // If VideoInstance was ready before we AddObserver(), we won't get - // OnVideoInstanceReady events. For such case, we have to call it explicitly. - if (bridge_service->video_instance()) - OnVideoInstanceReady(); +ArcVideoBridge::~ArcVideoBridge() { + arc_bridge_service()->RemoveObserver(this); } void ArcVideoBridge::OnStateChanged(arc::ArcBridgeService::State state) { @@ -41,12 +32,9 @@ void ArcVideoBridge::OnStateChanged(arc::ArcBridgeService::State state) { } void ArcVideoBridge::OnVideoInstanceReady() { - arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get(); - DCHECK(bridge_service); - arc::VideoHostPtr host; binding_.Bind(mojo::GetProxy(&host)); - bridge_service->video_instance()->Init(std::move(host)); + arc_bridge_service()->video_instance()->Init(std::move(host)); } } // namespace arc diff --git a/components/arc/video/arc_video_bridge.h b/components/arc/video/arc_video_bridge.h index f781a5e..bf1bd38 100644 --- a/components/arc/video/arc_video_bridge.h +++ b/components/arc/video/arc_video_bridge.h @@ -2,12 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H -#define COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H +#ifndef COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H_ +#define COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H_ #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "components/arc/arc_bridge_service.h" +#include "components/arc/arc_service.h" #include "components/arc/video/video_host_delegate.h" #include "mojo/public/cpp/bindings/binding.h" @@ -17,14 +18,12 @@ class VideoHostDelegate; // ArcVideoBridge bridges ArcBridgeService and VideoHostDelegate. It observes // ArcBridgeService events and pass VideoHost proxy to VideoInstance. -class ArcVideoBridge : public ArcBridgeService::Observer { +class ArcVideoBridge : public ArcService, public ArcBridgeService::Observer { public: - explicit ArcVideoBridge(scoped_ptr<VideoHostDelegate> video_host_delegate); + ArcVideoBridge(ArcBridgeService* bridge_service, + scoped_ptr<VideoHostDelegate> video_host_delegate); ~ArcVideoBridge() override; - // Starts listening to state changes of the ArcBridgeService. - void StartObservingBridgeServiceChanges(); - // arc::ArcBridgeService::Observer implementation. void OnStateChanged(arc::ArcBridgeService::State state) override; void OnVideoInstanceReady() override; @@ -38,4 +37,4 @@ class ArcVideoBridge : public ArcBridgeService::Observer { } // namespace arc -#endif // COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H +#endif // COMPONENTS_ARC_VIDEO_ARC_VIDEO_BRIDGE_H_ |