123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef CHROMEOS_CROSAPI_MOJOM_APP_SERVICE_TYPES_MOJOM_TRAITS_H_
- #define CHROMEOS_CROSAPI_MOJOM_APP_SERVICE_TYPES_MOJOM_TRAITS_H_
- #include <string>
- #include "chromeos/crosapi/mojom/app_service_types.mojom.h"
- #include "components/services/app_service/public/cpp/app_launch_util.h"
- #include "components/services/app_service/public/cpp/app_types.h"
- #include "components/services/app_service/public/cpp/icon_types.h"
- #include "components/services/app_service/public/cpp/intent_filter.h"
- #include "components/services/app_service/public/cpp/permission.h"
- #include "components/services/app_service/public/cpp/preferred_app.h"
- #include "components/services/app_service/public/mojom/types.mojom.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/abseil-cpp/absl/types/variant.h"
- namespace mojo {
- template <>
- struct StructTraits<crosapi::mojom::AppDataView, apps::AppPtr> {
- static apps::AppType app_type(const apps::AppPtr& r) { return r->app_type; }
- static const std::string& app_id(const apps::AppPtr& r) { return r->app_id; }
- static apps::Readiness readiness(const apps::AppPtr& r) {
- return r->readiness;
- }
- static const absl::optional<std::string>& name(const apps::AppPtr& r) {
- return r->name;
- }
- static const absl::optional<std::string>& short_name(const apps::AppPtr& r) {
- return r->short_name;
- }
- static const absl::optional<std::string>& publisher_id(
- const apps::AppPtr& r) {
- return r->publisher_id;
- }
- static const absl::optional<std::string>& description(const apps::AppPtr& r) {
- return r->description;
- }
- static const absl::optional<std::string>& version(const apps::AppPtr& r) {
- return r->version;
- }
- static const std::vector<std::string>& additional_search_terms(
- const apps::AppPtr& r) {
- return r->additional_search_terms;
- }
- static apps::IconKeyPtr icon_key(const apps::AppPtr& r);
- static const absl::optional<base::Time>& last_launch_time(
- const apps::AppPtr& r) {
- return r->last_launch_time;
- }
- static const absl::optional<base::Time>& install_time(const apps::AppPtr& r) {
- return r->install_time;
- }
- static const apps::InstallReason& install_reason(const apps::AppPtr& r) {
- return r->install_reason;
- }
- static const absl::optional<std::string>& policy_id(const apps::AppPtr& r) {
- return r->policy_id;
- }
- static crosapi::mojom::OptionalBool recommendable(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool searchable(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool show_in_launcher(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool show_in_shelf(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool show_in_search(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool show_in_management(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool has_badge(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool paused(const apps::AppPtr& r);
- static const apps::IntentFilters& intent_filters(const apps::AppPtr& r) {
- return r->intent_filters;
- }
- static const apps::WindowMode& window_mode(const apps::AppPtr& r) {
- return r->window_mode;
- }
- static const apps::Permissions& permissions(const apps::AppPtr& r) {
- return r->permissions;
- }
- static crosapi::mojom::OptionalBool allow_uninstall(const apps::AppPtr& r);
- static crosapi::mojom::OptionalBool handles_intents(const apps::AppPtr& r);
- static const apps::Shortcuts& shortcuts(const apps::AppPtr& r) {
- return r->shortcuts;
- }
- static crosapi::mojom::OptionalBool is_platform_app(const apps::AppPtr& r);
- static bool Read(crosapi::mojom::AppDataView data, apps::AppPtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::AppType, apps::AppType> {
- static crosapi::mojom::AppType ToMojom(apps::AppType input);
- static bool FromMojom(crosapi::mojom::AppType input, apps::AppType* output);
- };
- template <>
- struct EnumTraits<crosapi::mojom::Readiness, apps::Readiness> {
- static crosapi::mojom::Readiness ToMojom(apps::Readiness input);
- static bool FromMojom(crosapi::mojom::Readiness input,
- apps::Readiness* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::IconKeyDataView, apps::IconKeyPtr> {
- static bool IsNull(const apps::IconKeyPtr& r) { return !r; }
- static void SetToNull(apps::IconKeyPtr* r) { r->reset(); }
- static uint64_t timeline(const apps::IconKeyPtr& r) { return r->timeline; }
- static uint32_t icon_effects(const apps::IconKeyPtr& r) {
- return r->icon_effects;
- }
- static bool Read(crosapi::mojom::IconKeyDataView, apps::IconKeyPtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::InstallReason, apps::InstallReason> {
- static crosapi::mojom::InstallReason ToMojom(apps::InstallReason input);
- static bool FromMojom(crosapi::mojom::InstallReason input,
- apps::InstallReason* output);
- };
- template <>
- struct EnumTraits<crosapi::mojom::OptionalBool, apps::mojom::OptionalBool> {
- static crosapi::mojom::OptionalBool ToMojom(apps::mojom::OptionalBool input);
- static bool FromMojom(crosapi::mojom::OptionalBool input,
- apps::mojom::OptionalBool* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::IntentFilterDataView,
- apps::IntentFilterPtr> {
- static const std::vector<apps::ConditionPtr>& conditions(
- const apps::IntentFilterPtr& r) {
- return r->conditions;
- }
- static const absl::optional<std::string>& activity_name(
- const apps::IntentFilterPtr& r) {
- return r->activity_name;
- }
- static const absl::optional<std::string>& activity_label(
- const apps::IntentFilterPtr& r) {
- return r->activity_label;
- }
- static bool Read(crosapi::mojom::IntentFilterDataView,
- apps::IntentFilterPtr* out);
- };
- template <>
- struct StructTraits<crosapi::mojom::ConditionDataView, apps::ConditionPtr> {
- static const apps::ConditionType& condition_type(
- const apps::ConditionPtr& r) {
- return r->condition_type;
- }
- static const apps::ConditionValues& condition_values(
- const apps::ConditionPtr& r) {
- return r->condition_values;
- }
- static bool Read(crosapi::mojom::ConditionDataView, apps::ConditionPtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::ConditionType, apps::ConditionType> {
- static crosapi::mojom::ConditionType ToMojom(apps::ConditionType input);
- static bool FromMojom(crosapi::mojom::ConditionType input,
- apps::ConditionType* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::ConditionValueDataView,
- apps::ConditionValuePtr> {
- static const std::string& value(const apps::ConditionValuePtr& r) {
- return r->value;
- }
- static const apps::PatternMatchType& match_type(
- const apps::ConditionValuePtr& r) {
- return r->match_type;
- }
- static bool Read(crosapi::mojom::ConditionValueDataView,
- apps::ConditionValuePtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::PatternMatchType, apps::PatternMatchType> {
- static crosapi::mojom::PatternMatchType ToMojom(apps::PatternMatchType input);
- static bool FromMojom(crosapi::mojom::PatternMatchType input,
- apps::PatternMatchType* output);
- };
- template <>
- struct EnumTraits<crosapi::mojom::UninstallSource, apps::UninstallSource> {
- static crosapi::mojom::UninstallSource ToMojom(apps::UninstallSource input);
- static bool FromMojom(crosapi::mojom::UninstallSource input,
- apps::UninstallSource* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::CapabilityAccessDataView,
- apps::mojom::CapabilityAccessPtr> {
- static const std::string& app_id(const apps::mojom::CapabilityAccessPtr& r) {
- return r->app_id;
- }
- static const apps::mojom::OptionalBool& camera(
- const apps::mojom::CapabilityAccessPtr& r) {
- return r->camera;
- }
- static const apps::mojom::OptionalBool& microphone(
- const apps::mojom::CapabilityAccessPtr& r) {
- return r->microphone;
- }
- static bool Read(crosapi::mojom::CapabilityAccessDataView,
- apps::mojom::CapabilityAccessPtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::IconType, apps::IconType> {
- static crosapi::mojom::IconType ToMojom(apps::IconType input);
- static bool FromMojom(crosapi::mojom::IconType input, apps::IconType* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::IconValueDataView, apps::IconValuePtr> {
- static apps::IconType icon_type(const apps::IconValuePtr& r) {
- return r->icon_type;
- }
- static const gfx::ImageSkia& uncompressed(const apps::IconValuePtr& r) {
- return r->uncompressed;
- }
- static const std::vector<uint8_t>& compressed(const apps::IconValuePtr& r) {
- return r->compressed;
- }
- static bool is_placeholder_icon(const apps::IconValuePtr& r) {
- return r->is_placeholder_icon;
- }
- static bool Read(crosapi::mojom::IconValueDataView, apps::IconValuePtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::WindowMode, apps::WindowMode> {
- static crosapi::mojom::WindowMode ToMojom(apps::WindowMode input);
- static bool FromMojom(crosapi::mojom::WindowMode input,
- apps::WindowMode* output);
- };
- template <>
- struct EnumTraits<crosapi::mojom::LaunchSource, apps::LaunchSource> {
- static crosapi::mojom::LaunchSource ToMojom(apps::LaunchSource input);
- static bool FromMojom(crosapi::mojom::LaunchSource input,
- apps::LaunchSource* output);
- };
- template <>
- struct StructTraits<crosapi::mojom::PermissionDataView, apps::PermissionPtr> {
- static apps::PermissionType permission_type(const apps::PermissionPtr& r) {
- return r->permission_type;
- }
- static const apps::PermissionValuePtr& value(const apps::PermissionPtr& r) {
- return r->value;
- }
- static bool is_managed(const apps::PermissionPtr& r) { return r->is_managed; }
- static bool Read(crosapi::mojom::PermissionDataView,
- apps::PermissionPtr* out);
- };
- template <>
- struct EnumTraits<crosapi::mojom::PermissionType, apps::PermissionType> {
- static crosapi::mojom::PermissionType ToMojom(apps::PermissionType input);
- static bool FromMojom(crosapi::mojom::PermissionType input,
- apps::PermissionType* output);
- };
- template <>
- struct EnumTraits<crosapi::mojom::TriState, apps::TriState> {
- static crosapi::mojom::TriState ToMojom(apps::TriState input);
- static bool FromMojom(crosapi::mojom::TriState input, apps::TriState* output);
- };
- template <>
- struct UnionTraits<crosapi::mojom::PermissionValueDataView,
- apps::PermissionValuePtr> {
- static crosapi::mojom::PermissionValueDataView::Tag GetTag(
- const apps::PermissionValuePtr& r);
- static bool IsNull(const apps::PermissionValuePtr& r) {
- return !absl::holds_alternative<bool>(r->value) &&
- !absl::holds_alternative<apps::TriState>(r->value);
- }
- static void SetToNull(apps::PermissionValuePtr* out) {}
- static bool bool_value(const apps::PermissionValuePtr& r) {
- if (absl::holds_alternative<bool>(r->value)) {
- return absl::get<bool>(r->value);
- }
- return false;
- }
- static apps::TriState tristate_value(const apps::PermissionValuePtr& r) {
- if (absl::holds_alternative<apps::TriState>(r->value)) {
- return absl::get<apps::TriState>(r->value);
- }
- return apps::TriState::kBlock;
- }
- static bool Read(crosapi::mojom::PermissionValueDataView data,
- apps::PermissionValuePtr* out);
- };
- template <>
- struct StructTraits<crosapi::mojom::PreferredAppDataView,
- apps::PreferredAppPtr> {
- static apps::IntentFilterPtr intent_filter(const apps::PreferredAppPtr& r) {
- return r->intent_filter->Clone();
- }
- static const std::string& app_id(const apps::PreferredAppPtr& r) {
- return r->app_id;
- }
- static bool Read(crosapi::mojom::PreferredAppDataView,
- apps::PreferredAppPtr* out);
- };
- template <>
- struct StructTraits<crosapi::mojom::PreferredAppChangesDataView,
- apps::PreferredAppChangesPtr> {
- static base::flat_map<std::string, apps::IntentFilters> added_filters(
- const apps::PreferredAppChangesPtr& r) {
- return apps::CloneIntentFiltersMap(r->added_filters);
- }
- static base::flat_map<std::string, apps::IntentFilters> removed_filters(
- const apps::PreferredAppChangesPtr& r) {
- return apps::CloneIntentFiltersMap(r->removed_filters);
- }
- static bool Read(crosapi::mojom::PreferredAppChangesDataView,
- apps::PreferredAppChangesPtr* out);
- };
- template <>
- struct StructTraits<crosapi::mojom::ShortcutDataView, apps::ShortcutPtr> {
- static const std::string& shortcut_id(const apps::ShortcutPtr& r) {
- return r->shortcut_id;
- }
- static const std::string& name(const apps::ShortcutPtr& r) { return r->name; }
- static uint8_t position(const apps::ShortcutPtr& r) { return r->position; }
- static bool Read(crosapi::mojom::ShortcutDataView data,
- apps::ShortcutPtr* out);
- };
- } // namespace mojo
- #endif // CHROMEOS_CROSAPI_MOJOM_APP_SERVICE_TYPES_MOJOM_TRAITS_H_
|