blob: 54fc0af9d075b1ee881ade04bc6c5614eaeadf60 [file] [log] [blame]
// Copyright 2016 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/obb_mounter/arc_obb_mounter_bridge.h"
#include "base/bind.h"
#include "chromeos/dbus/arc_obb_mounter_client.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "components/arc/arc_bridge_service.h"
namespace arc {
namespace {
// Used to convert mojo Callback to VoidDBusMethodCallback.
void RunObbCallback(const base::Callback<void(bool)>& callback,
chromeos::DBusMethodCallStatus result) {
callback.Run(result == chromeos::DBUS_METHOD_CALL_SUCCESS);
}
} // namespace
ArcObbMounterBridge::ArcObbMounterBridge(ArcBridgeService* bridge_service)
: ArcService(bridge_service), binding_(this) {
arc_bridge_service()->obb_mounter()->AddObserver(this);
}
ArcObbMounterBridge::~ArcObbMounterBridge() {
arc_bridge_service()->obb_mounter()->RemoveObserver(this);
}
void ArcObbMounterBridge::OnInstanceReady() {
mojom::ObbMounterInstance* obb_mounter_instance =
ARC_GET_INSTANCE_FOR_METHOD(arc_bridge_service()->obb_mounter(), Init);
DCHECK(obb_mounter_instance);
obb_mounter_instance->Init(binding_.CreateInterfacePtrAndBind());
}
void ArcObbMounterBridge::MountObb(const std::string& obb_file,
const std::string& target_path,
int32_t owner_gid,
const MountObbCallback& callback) {
chromeos::DBusThreadManager::Get()->GetArcObbMounterClient()->MountObb(
obb_file, target_path, owner_gid, base::Bind(&RunObbCallback, callback));
}
void ArcObbMounterBridge::UnmountObb(const std::string& target_path,
const UnmountObbCallback& callback) {
chromeos::DBusThreadManager::Get()->GetArcObbMounterClient()->UnmountObb(
target_path, base::Bind(&RunObbCallback, callback));
}
} // namespace arc