blob: 39ee63e84640f2391a22f58863eec2dfd30d2b35 [file] [log] [blame] [edit]
//
// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "host/commands/assemble_cvd/touchpad.h"
#include "common/libs/utils/flag_parser.h"
#include "host/libs/config/touchpad.h"
namespace cuttlefish {
namespace {
class TouchpadsConfigsImpl : public TouchpadsConfigs {
public:
INJECT(TouchpadsConfigsImpl()) {}
const std::vector<CuttlefishConfig::TouchpadConfig>& GetConfigs()
const override {
return touchpad_configs_;
}
void SetConfigs(
const std::vector<CuttlefishConfig::TouchpadConfig>& configs) {
touchpad_configs_ = configs;
}
std::string Name() const override { return "TouchpadsConfigsImpl"; }
private:
std::vector<CuttlefishConfig::TouchpadConfig> touchpad_configs_;
};
} // namespace
fruit::Component<TouchpadsConfigs> TouchpadsConfigsComponent() {
return fruit::createComponent()
.bind<TouchpadsConfigs, TouchpadsConfigsImpl>()
.addMultibinding<TouchpadsConfigs, TouchpadsConfigs>();
}
namespace {
class TouchpadsConfigsFlagImpl : public TouchpadsConfigsFlag {
public:
INJECT(TouchpadsConfigsFlagImpl(TouchpadsConfigs& configs,
ConfigFlag& config_flag))
: touchpad_configs_(configs), config_flag_dependency_(config_flag) {}
std::string Name() const override { return "TouchpadsConfigsFlagImpl"; }
std::unordered_set<FlagFeature*> Dependencies() const override {
return {static_cast<FlagFeature*>(&config_flag_dependency_)};
}
Result<void> Process(std::vector<std::string>& args) override {
touchpad_configs_.SetConfigs(CF_EXPECT(ParseTouchpadConfigsFromArgs(args)));
return {};
}
bool WriteGflagsCompatHelpXml(std::ostream& out) const override {
Flag touchpad_flag = GflagsCompatFlag(kTouchpadFlag).Help(kTouchpadHelp);
return WriteGflagsCompatXml({touchpad_flag}, out);
}
private:
TouchpadsConfigs& touchpad_configs_;
ConfigFlag& config_flag_dependency_;
};
} // namespace
fruit::Component<fruit::Required<TouchpadsConfigs, ConfigFlag>,
TouchpadsConfigsFlag>
TouchpadsConfigsFlagComponent() {
return fruit::createComponent()
.bind<TouchpadsConfigsFlag, TouchpadsConfigsFlagImpl>()
.addMultibinding<FlagFeature, TouchpadsConfigsFlag>();
}
} // namespace cuttlefish