Skip to content

Commit

Permalink
arc: Move singleton from ArcBridgeService to its Impl.
Browse files Browse the repository at this point in the history
Move singleton design from ArcBridgeService to its impl. First step is to move
singleton from ArcBridgeService to its sub classes. Second step will be remove
singleton check from FakeArcBridgeService.

BUG=29942632
TEST=Not breaking any current tests.

Review-Url: https://codereview.chromium.org/2117623002
Cr-Commit-Position: refs/heads/master@{#403533}
  • Loading branch information
lgcheng authored and Commit bot committed Jul 1, 2016
1 parent 10dc998 commit f1efb6d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
8 changes: 0 additions & 8 deletions components/arc/arc_bridge_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,16 @@

namespace arc {

namespace {

// Weak pointer. This class is owned by ArcServiceManager.
ArcBridgeService* g_arc_bridge_service = nullptr;

} // namespace

ArcBridgeService::ArcBridgeService()
: available_(false), state_(State::STOPPED), weak_factory_(this) {
DCHECK(!g_arc_bridge_service);
g_arc_bridge_service = this;
}

ArcBridgeService::~ArcBridgeService() {
DCHECK(CalledOnValidThread());
DCHECK(state() == State::STOPPING || state() == State::STOPPED);
DCHECK(g_arc_bridge_service == this);
g_arc_bridge_service = nullptr;
}

// static
Expand Down
9 changes: 8 additions & 1 deletion components/arc/arc_bridge_service_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

namespace arc {

extern ArcBridgeService* g_arc_bridge_service;

namespace {
constexpr int64_t kReconnectDelayInSeconds = 5;
} // namespace
Expand All @@ -34,10 +36,15 @@ ArcBridgeServiceImpl::ArcBridgeServiceImpl(
binding_(this),
session_started_(false),
weak_factory_(this) {
DCHECK(!g_arc_bridge_service);
g_arc_bridge_service = this;
bootstrap_->set_delegate(this);
}

ArcBridgeServiceImpl::~ArcBridgeServiceImpl() {}
ArcBridgeServiceImpl::~ArcBridgeServiceImpl() {
DCHECK(g_arc_bridge_service == this);
g_arc_bridge_service = nullptr;
}

void ArcBridgeServiceImpl::HandleStartup() {
DCHECK(CalledOnValidThread());
Expand Down
6 changes: 6 additions & 0 deletions components/arc/test/fake_arc_bridge_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,16 @@

namespace arc {

extern ArcBridgeService* g_arc_bridge_service;

FakeArcBridgeService::FakeArcBridgeService() {
DCHECK(!g_arc_bridge_service);
g_arc_bridge_service = this;
}

FakeArcBridgeService::~FakeArcBridgeService() {
DCHECK(g_arc_bridge_service == this);
g_arc_bridge_service = nullptr;
SetStopped();
}

Expand Down

0 comments on commit f1efb6d

Please sign in to comment.