blob: a52914202161a8062f7f8d1197b126133612ba25 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/arc/arc_service_manager.h"
#include "base/logging.h"
#include "components/arc/arc_bridge_service.h"
#include "components/arc/arc_session.h"
#include "components/arc/arc_session_runner.h"
namespace arc {
namespace {
// Weak pointer. This class is owned by arc::ArcServiceLauncher.
ArcServiceManager* g_arc_service_manager = nullptr;
} // namespace
ArcServiceManager::ArcServiceManager()
: arc_bridge_service_(std::make_unique<ArcBridgeService>()) {
DCHECK(!g_arc_service_manager);
g_arc_service_manager = this;
}
ArcServiceManager::~ArcServiceManager() {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
DCHECK_EQ(g_arc_service_manager, this);
g_arc_service_manager = nullptr;
}
// static
ArcServiceManager* ArcServiceManager::Get() {
if (!g_arc_service_manager)
return nullptr;
DCHECK_CALLED_ON_VALID_THREAD(g_arc_service_manager->thread_checker_);
return g_arc_service_manager;
}
ArcBridgeService* ArcServiceManager::arc_bridge_service() {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
return arc_bridge_service_.get();
}
} // namespace arc