summaryrefslogtreecommitdiffstats
path: root/components/arc/video
diff options
context:
space:
mode:
authorlhchavez <lhchavez@chromium.org>2016-01-21 15:27:25 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-21 23:30:17 +0000
commit811769ba67bef5ff1e0a120146c0d593a6ebe5db (patch)
tree8b6350309843da6c9209af01abf1a186e6572f38 /components/arc/video
parenta1b6ab993b5e0570d251198085002bb04e735015 (diff)
downloadchromium_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.cc28
-rw-r--r--components/arc/video/arc_video_bridge.h15
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_