blob: 3740c67cab18c77f96c70f167a95a6b9e7bb476c [file] [log] [blame]
// Copyright 2018 The Chromium OS 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 "oobe_config/oobe_config_restore_service.h"
#include <string>
#include "oobe_config/load_oobe_config_rollback.h"
#include "oobe_config/load_oobe_config_usb.h"
#include "oobe_config/oobe_config.h"
#include "oobe_config/proto_bindings/oobe_config.pb.h"
#include <base/check.h>
using brillo::dbus_utils::AsyncEventSequencer;
namespace oobe_config {
OobeConfigRestoreService::OobeConfigRestoreService(
std::unique_ptr<brillo::dbus_utils::DBusObject> dbus_object,
bool allow_unencrypted,
bool skip_reboot_for_testing)
: org::chromium::OobeConfigRestoreAdaptor(this),
dbus_object_(std::move(dbus_object)),
allow_unencrypted_(allow_unencrypted),
skip_reboot_for_testing_(skip_reboot_for_testing) {}
OobeConfigRestoreService::~OobeConfigRestoreService() = default;
void OobeConfigRestoreService::RegisterAsync(
const AsyncEventSequencer::CompletionAction& completion_callback) {
RegisterWithDBusObject(dbus_object_.get());
dbus_object_->RegisterAsync(completion_callback);
}
void OobeConfigRestoreService::ProcessAndGetOobeAutoConfig(
int32_t* error, OobeRestoreData* oobe_config_proto) {
DCHECK(error);
DCHECK(oobe_config_proto);
LOG(INFO) << "Chrome requested OOBE config.";
power_manager_proxy_ = std::make_unique<org::chromium::PowerManagerProxy>(
dbus_object_->GetBus());
OobeConfig oobe_config;
LoadOobeConfigRollback load_oobe_config_rollback(
&oobe_config, allow_unencrypted_, skip_reboot_for_testing_,
power_manager_proxy_.get());
std::string chrome_config_json, unused_enrollment_domain;
// There is rollback data so attempt to parse it.
const bool rollback_success = load_oobe_config_rollback.GetOobeConfigJson(
&chrome_config_json, &unused_enrollment_domain);
if (rollback_success) {
LOG(WARNING) << "Rollback oobe config sent: " << chrome_config_json;
} else {
LOG(INFO) << "Rollback oobe config not found.";
// There is no rollback data so attempt USB config.
auto config_loader = LoadOobeConfigUsb::CreateInstance();
const bool usb_config_success = config_loader->GetOobeConfigJson(
&chrome_config_json, &unused_enrollment_domain);
if (usb_config_success) {
LOG(INFO) << "USB oobe config found :) ";
} else {
LOG(WARNING) << "USB oobe config not found :(";
}
}
oobe_config_proto->set_chrome_config_json(chrome_config_json);
*error = 0;
}
} // namespace oobe_config