blob: 1fa79f2c0473357a5788dbd50e9f7d2d69bccd5d [file] [log] [blame]
Steven Bennetts1c8956002019-04-16 15:42:471// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chromeos/system/kiosk_oem_manifest_parser.h"
6
7#include <memory>
8
9#include "base/json/json_file_value_serializer.h"
Steven Bennetts1c8956002019-04-16 15:42:4710#include "base/values.h"
11
12namespace chromeos {
13
14namespace {
15
16const char kEnterpriseManaged[] = "enterprise_managed";
17const char kAllowReset[] = "can_exit_enrollment";
18const char kDeviceRequisition[] = "device_requisition";
19const char kKeyboardDrivenOobe[] = "keyboard_driven_oobe";
20
21} // namespace
22
23KioskOemManifestParser::Manifest::Manifest()
24 : enterprise_managed(false),
25 can_exit_enrollment(true),
26 keyboard_driven_oobe(false) {}
27
28bool KioskOemManifestParser::Load(const base::FilePath& kiosk_oem_file,
29 KioskOemManifestParser::Manifest* manifest) {
30 int error_code = JSONFileValueDeserializer::JSON_NO_ERROR;
31 std::string error_msg;
32 std::unique_ptr<JSONFileValueDeserializer> deserializer(
33 new JSONFileValueDeserializer(kiosk_oem_file));
34 std::unique_ptr<base::Value> value =
35 deserializer->Deserialize(&error_code, &error_msg);
36 base::DictionaryValue* dict = NULL;
37 if (error_code != JSONFileValueDeserializer::JSON_NO_ERROR || !value.get() ||
38 !value->GetAsDictionary(&dict)) {
39 return false;
40 }
41
42 dict->GetString(kDeviceRequisition, &manifest->device_requisition);
Carlos Caballero80430202021-11-29 17:40:5043
44 if (absl::optional<bool> v = dict->FindBoolPath(kKeyboardDrivenOobe)) {
45 manifest->keyboard_driven_oobe = *v;
46 }
47
48 if (absl::optional<bool> v = dict->FindBoolPath(kEnterpriseManaged)) {
49 manifest->enterprise_managed = *v;
50 } else {
51 return false;
52 }
53
54 if (absl::optional<bool> v = dict->FindBoolPath(kAllowReset)) {
55 manifest->can_exit_enrollment = *v;
56 } else {
Steven Bennetts1c8956002019-04-16 15:42:4757 return false;
58 }
59
60 return true;
61}
62
63} // namespace chromeos