1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_WEBUI_RESOURCES_CR_COMPONENTS_APP_MANAGEMENT_APP_MANAGEMENT_MOJOM_TRAITS_H_
#define UI_WEBUI_RESOURCES_CR_COMPONENTS_APP_MANAGEMENT_APP_MANAGEMENT_MOJOM_TRAITS_H_
#include <variant>
#include "components/services/app_service/public/cpp/app_types.h"
#include "components/services/app_service/public/cpp/permission.h"
#include "components/services/app_service/public/cpp/run_on_os_login_types.h"
#include "ui/webui/resources/cr_components/app_management/app_management.mojom.h"
namespace mojo {
namespace {
using AppType = app_management::mojom::AppType;
using PermissionDataView = app_management::mojom::PermissionDataView;
using PermissionType = app_management::mojom::PermissionType;
using TriState = app_management::mojom::TriState;
using PermissionValueDataView = app_management::mojom::PermissionValueDataView;
using InstallReason = app_management::mojom::InstallReason;
using InstallSource = app_management::mojom::InstallSource;
using WindowMode = app_management::mojom::WindowMode;
using RunOnOsLoginMode = app_management::mojom::RunOnOsLoginMode;
using RunOnOsLoginDataView = app_management::mojom::RunOnOsLoginDataView;
} // namespace
template <>
struct EnumTraits<AppType, apps::AppType> {
static AppType ToMojom(apps::AppType input);
static bool FromMojom(AppType input, apps::AppType* output);
};
template <>
struct StructTraits<PermissionDataView, apps::PermissionPtr> {
static apps::PermissionType permission_type(const apps::PermissionPtr& r) {
return r->permission_type;
}
static const apps::Permission::PermissionValue& value(
const apps::PermissionPtr& r) {
return r->value;
}
static bool is_managed(const apps::PermissionPtr& r) { return r->is_managed; }
static std::optional<std::string> details(const apps::PermissionPtr& r) {
return r->details;
}
static bool Read(PermissionDataView, apps::PermissionPtr* out);
};
template <>
struct EnumTraits<PermissionType, apps::PermissionType> {
static PermissionType ToMojom(apps::PermissionType input);
static bool FromMojom(PermissionType input, apps::PermissionType* output);
};
template <>
struct EnumTraits<TriState, apps::TriState> {
static TriState ToMojom(apps::TriState input);
static bool FromMojom(TriState input, apps::TriState* output);
};
template <>
struct UnionTraits<PermissionValueDataView, apps::Permission::PermissionValue> {
static PermissionValueDataView::Tag GetTag(
const apps::Permission::PermissionValue& r);
static bool IsNull(const apps::Permission::PermissionValue& r) {
return false;
}
static void SetToNull(apps::Permission::PermissionValue* out) {}
static bool bool_value(const apps::Permission::PermissionValue& r) {
if (std::holds_alternative<bool>(r)) {
return std::get<bool>(r);
}
return false;
}
static apps::TriState tristate_value(
const apps::Permission::PermissionValue& r) {
if (std::holds_alternative<apps::TriState>(r)) {
return std::get<apps::TriState>(r);
}
return apps::TriState::kBlock;
}
static bool Read(PermissionValueDataView data,
apps::Permission::PermissionValue* out);
};
template <>
struct EnumTraits<InstallReason, apps::InstallReason> {
static InstallReason ToMojom(apps::InstallReason input);
static bool FromMojom(InstallReason input, apps::InstallReason* output);
};
template <>
struct EnumTraits<InstallSource, apps::InstallSource> {
static InstallSource ToMojom(apps::InstallSource input);
static bool FromMojom(InstallSource input, apps::InstallSource* output);
};
template <>
struct EnumTraits<WindowMode, apps::WindowMode> {
static WindowMode ToMojom(apps::WindowMode input);
static bool FromMojom(WindowMode input, apps::WindowMode* output);
};
template <>
struct EnumTraits<RunOnOsLoginMode, apps::RunOnOsLoginMode> {
static RunOnOsLoginMode ToMojom(apps::RunOnOsLoginMode input);
static bool FromMojom(RunOnOsLoginMode input, apps::RunOnOsLoginMode* output);
};
template <>
struct StructTraits<RunOnOsLoginDataView, apps::RunOnOsLoginPtr> {
static apps::RunOnOsLoginMode login_mode(const apps::RunOnOsLoginPtr& r) {
return r->login_mode;
}
static bool is_managed(const apps::RunOnOsLoginPtr& r) {
return r->is_managed;
}
static bool Read(RunOnOsLoginDataView, apps::RunOnOsLoginPtr* out);
};
} // namespace mojo
#endif // UI_WEBUI_RESOURCES_CR_COMPONENTS_APP_MANAGEMENT_APP_MANAGEMENT_MOJOM_TRAITS_H_
|