Commit 627631e3 authored by Mattias Nissler's avatar Mattias Nissler Committed by Commit Bot

Expose SetU2fFlags in DebugDaemonClient.

BUG=chromium:967396
TEST=None

Change-Id: I050af863abb83d9cdde8dce0b9ff6c294709e818
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1634705
Auto-Submit: Mattias Nissler <mnissler@chromium.org>
Reviewed-by: default avatarDan Erat <derat@chromium.org>
Commit-Queue: Mattias Nissler <mnissler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#664421}
parent e44e0f0f
......@@ -24,6 +24,7 @@
#include "base/macros.h"
#include "base/no_destructor.h"
#include "base/posix/eintr_wrapper.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/task/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
......@@ -543,6 +544,29 @@ class DebugDaemonClientImpl : public DebugDaemonClient {
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
void SetU2fFlags(const std::set<std::string>& flags,
VoidDBusMethodCallback callback) override {
dbus::MethodCall method_call(debugd::kDebugdInterface,
debugd::kSetU2fFlags);
dbus::MessageWriter writer(&method_call);
writer.AppendString(base::JoinString(
std::vector<std::string>(flags.begin(), flags.end()), ","));
debugdaemon_proxy_->CallMethod(
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&DebugDaemonClientImpl::OnVoidMethod,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
void GetU2fFlags(
DBusMethodCallback<std::set<std::string>> callback) override {
dbus::MethodCall method_call(debugd::kDebugdInterface,
debugd::kGetU2fFlags);
debugdaemon_proxy_->CallMethod(
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::BindOnce(&DebugDaemonClientImpl::OnGetU2fFlags,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
protected:
void Init(dbus::Bus* bus) override {
debugdaemon_proxy_ =
......@@ -801,6 +825,31 @@ class DebugDaemonClientImpl : public DebugDaemonClient {
std::move(callback).Run(result);
}
void OnGetU2fFlags(DBusMethodCallback<std::set<std::string>> callback,
dbus::Response* response) {
if (!response) {
std::move(callback).Run(base::nullopt);
return;
}
std::string flags_string;
dbus::MessageReader reader(response);
if (!reader.PopString(&flags_string)) {
LOG(ERROR) << "Failed to read GetU2fFlags response";
std::move(callback).Run(base::nullopt);
return;
}
std::set<std::string> flags;
for (const auto& flag :
base::SplitString(flags_string, ",", base::TRIM_WHITESPACE,
base::SPLIT_WANT_NONEMPTY)) {
flags.insert(flag);
}
std::move(callback).Run(std::move(flags));
}
dbus::ObjectProxy* debugdaemon_proxy_;
std::unique_ptr<PipeReader> pipe_reader_;
StopAgentTracingCallback callback_;
......
......@@ -241,6 +241,13 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DebugDaemonClient
virtual void SetSchedulerConfiguration(const std::string& config_name,
VoidDBusMethodCallback callback) = 0;
// Set U2F flags.
virtual void SetU2fFlags(const std::set<std::string>& flags,
VoidDBusMethodCallback callback) = 0;
// Get U2F flags.
virtual void GetU2fFlags(
DBusMethodCallback<std::set<std::string>> callback) = 0;
// Factory function, creates a new instance and returns ownership.
// For normal usage, access the singleton via DBusThreadManager::Get().
static std::unique_ptr<DebugDaemonClient> Create();
......
......@@ -265,4 +265,18 @@ void FakeDebugDaemonClient::SetSchedulerConfiguration(
FROM_HERE, base::BindOnce(std::move(callback), true));
}
void FakeDebugDaemonClient::SetU2fFlags(const std::set<std::string>& flags,
VoidDBusMethodCallback callback) {
u2f_flags_ = flags;
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), true));
}
void FakeDebugDaemonClient::GetU2fFlags(
DBusMethodCallback<std::set<std::string>> callback) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback), base::make_optional(u2f_flags_)));
}
} // namespace chromeos
......@@ -90,6 +90,9 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeDebugDaemonClient
void SetRlzPingSent(SetRlzPingSentCallback callback) override;
void SetSchedulerConfiguration(const std::string& config_name,
VoidDBusMethodCallback callback) override;
void SetU2fFlags(const std::set<std::string>& flags,
VoidDBusMethodCallback callback) override;
void GetU2fFlags(DBusMethodCallback<std::set<std::string>> callback) override;
// Sets debugging features mask for testing.
virtual void SetDebuggingFeaturesStatus(int features_mask);
......@@ -102,6 +105,8 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeDebugDaemonClient
return scheduler_configuration_name_;
}
const std::set<std::string>& u2f_flags() const { return u2f_flags_; }
private:
int features_mask_;
......@@ -110,6 +115,7 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeDebugDaemonClient
pending_wait_for_service_to_be_available_callbacks_;
std::set<std::string> printers_;
std::string scheduler_configuration_name_;
std::set<std::string> u2f_flags_;
DISALLOW_COPY_AND_ASSIGN(FakeDebugDaemonClient);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment