summaryrefslogtreecommitdiff
path: root/chromium/components/services/app_service/public/cpp/app_types.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/services/app_service/public/cpp/app_types.cc')
-rw-r--r--chromium/components/services/app_service/public/cpp/app_types.cc326
1 files changed, 321 insertions, 5 deletions
diff --git a/chromium/components/services/app_service/public/cpp/app_types.cc b/chromium/components/services/app_service/public/cpp/app_types.cc
index 4a6d3ed29c9..abacfc3c8a1 100644
--- a/chromium/components/services/app_service/public/cpp/app_types.cc
+++ b/chromium/components/services/app_service/public/cpp/app_types.cc
@@ -11,8 +11,8 @@ App::App(AppType app_type, const std::string& app_id)
App::~App() = default;
-std::unique_ptr<App> App::Clone() const {
- std::unique_ptr<App> app = std::make_unique<App>(app_type, app_id);
+AppPtr App::Clone() const {
+ auto app = std::make_unique<App>(app_type, app_id);
app->readiness = readiness;
app->name = name;
@@ -20,11 +20,39 @@ std::unique_ptr<App> App::Clone() const {
app->publisher_id = publisher_id;
app->description = description;
app->version = version;
+ app->additional_search_terms = additional_search_terms;
if (icon_key.has_value()) {
app->icon_key = apps::IconKey(icon_key->timeline, icon_key->resource_id,
icon_key->icon_effects);
}
+
+ app->last_launch_time = last_launch_time;
+ app->install_time = install_time;
+ app->permissions = ClonePermissions(permissions);
+ app->install_reason = install_reason;
+ app->install_source = install_source;
+ app->policy_id = policy_id;
+ app->is_platform_app = is_platform_app;
+ app->recommendable = recommendable;
+ app->searchable = searchable;
+ app->show_in_launcher = show_in_launcher;
+ app->show_in_shelf = show_in_shelf;
+ app->show_in_search = show_in_search;
+ app->show_in_management = show_in_management;
+ app->handles_intents = handles_intents;
+ app->allow_uninstall = allow_uninstall;
+ app->has_badge = has_badge;
+ app->paused = paused;
+ app->intent_filters = CloneIntentFilters(intent_filters);
+ app->resize_locked = resize_locked;
+ app->window_mode = window_mode;
+
+ if (run_on_os_login.has_value()) {
+ app->run_on_os_login = apps::RunOnOsLogin(run_on_os_login->login_mode,
+ run_on_os_login->is_managed);
+ }
+
return app;
}
@@ -61,6 +89,39 @@ AppType ConvertMojomAppTypToAppType(apps::mojom::AppType mojom_app_type) {
}
}
+mojom::AppType ConvertAppTypeToMojomAppType(AppType app_type) {
+ switch (app_type) {
+ case AppType::kUnknown:
+ return apps::mojom::AppType::kUnknown;
+ case AppType::kArc:
+ return apps::mojom::AppType::kArc;
+ case AppType::kBuiltIn:
+ return apps::mojom::AppType::kBuiltIn;
+ case AppType::kCrostini:
+ return apps::mojom::AppType::kCrostini;
+ case AppType::kChromeApp:
+ return apps::mojom::AppType::kChromeApp;
+ case AppType::kWeb:
+ return apps::mojom::AppType::kWeb;
+ case AppType::kMacOs:
+ return apps::mojom::AppType::kMacOs;
+ case AppType::kPluginVm:
+ return apps::mojom::AppType::kPluginVm;
+ case AppType::kStandaloneBrowser:
+ return apps::mojom::AppType::kStandaloneBrowser;
+ case AppType::kRemote:
+ return apps::mojom::AppType::kRemote;
+ case AppType::kBorealis:
+ return apps::mojom::AppType::kBorealis;
+ case AppType::kSystemWeb:
+ return apps::mojom::AppType::kSystemWeb;
+ case AppType::kStandaloneBrowserChromeApp:
+ return apps::mojom::AppType::kStandaloneBrowserChromeApp;
+ case AppType::kExtension:
+ return apps::mojom::AppType::kExtension;
+ }
+}
+
Readiness ConvertMojomReadinessToReadiness(
apps::mojom::Readiness mojom_readiness) {
switch (mojom_readiness) {
@@ -85,10 +146,157 @@ Readiness ConvertMojomReadinessToReadiness(
}
}
-std::unique_ptr<App> ConvertMojomAppToApp(
- const apps::mojom::AppPtr& mojom_app) {
+apps::mojom::Readiness ConvertReadinessToMojomReadiness(Readiness readiness) {
+ switch (readiness) {
+ case Readiness::kUnknown:
+ return apps::mojom::Readiness::kUnknown;
+ case Readiness::kReady:
+ return apps::mojom::Readiness::kReady;
+ case Readiness::kDisabledByBlocklist:
+ return apps::mojom::Readiness::kDisabledByBlocklist;
+ case Readiness::kDisabledByPolicy:
+ return apps::mojom::Readiness::kDisabledByPolicy;
+ case Readiness::kDisabledByUser:
+ return apps::mojom::Readiness::kDisabledByUser;
+ case Readiness::kTerminated:
+ return apps::mojom::Readiness::kTerminated;
+ case Readiness::kUninstalledByUser:
+ return apps::mojom::Readiness::kUninstalledByUser;
+ case Readiness::kRemoved:
+ return apps::mojom::Readiness::kRemoved;
+ case Readiness::kUninstalledByMigration:
+ return apps::mojom::Readiness::kUninstalledByMigration;
+ }
+}
+
+InstallReason ConvertMojomInstallReasonToInstallReason(
+ apps::mojom::InstallReason mojom_install_reason) {
+ switch (mojom_install_reason) {
+ case apps::mojom::InstallReason::kUnknown:
+ return InstallReason::kUnknown;
+ case apps::mojom::InstallReason::kSystem:
+ return InstallReason::kSystem;
+ case apps::mojom::InstallReason::kPolicy:
+ return InstallReason::kPolicy;
+ case apps::mojom::InstallReason::kOem:
+ return InstallReason::kOem;
+ case apps::mojom::InstallReason::kDefault:
+ return InstallReason::kDefault;
+ case apps::mojom::InstallReason::kSync:
+ return InstallReason::kSync;
+ case apps::mojom::InstallReason::kUser:
+ return InstallReason::kUser;
+ case apps::mojom::InstallReason::kSubApp:
+ return InstallReason::kSubApp;
+ }
+}
+
+apps::mojom::InstallReason ConvertInstallReasonToMojomInstallReason(
+ InstallReason install_reason) {
+ switch (install_reason) {
+ case InstallReason::kUnknown:
+ return apps::mojom::InstallReason::kUnknown;
+ case InstallReason::kSystem:
+ return apps::mojom::InstallReason::kSystem;
+ case InstallReason::kPolicy:
+ return apps::mojom::InstallReason::kPolicy;
+ case InstallReason::kOem:
+ return apps::mojom::InstallReason::kOem;
+ case InstallReason::kDefault:
+ return apps::mojom::InstallReason::kDefault;
+ case InstallReason::kSync:
+ return apps::mojom::InstallReason::kSync;
+ case InstallReason::kUser:
+ return apps::mojom::InstallReason::kUser;
+ case InstallReason::kSubApp:
+ return apps::mojom::InstallReason::kSubApp;
+ }
+}
+
+InstallSource ConvertMojomInstallSourceToInstallSource(
+ apps::mojom::InstallSource mojom_install_source) {
+ switch (mojom_install_source) {
+ case apps::mojom::InstallSource::kUnknown:
+ return InstallSource::kUnknown;
+ case apps::mojom::InstallSource::kSystem:
+ return InstallSource::kSystem;
+ case apps::mojom::InstallSource::kSync:
+ return InstallSource::kSync;
+ case apps::mojom::InstallSource::kPlayStore:
+ return InstallSource::kPlayStore;
+ case apps::mojom::InstallSource::kChromeWebStore:
+ return InstallSource::kChromeWebStore;
+ case apps::mojom::InstallSource::kBrowser:
+ return InstallSource::kBrowser;
+ }
+}
+
+apps::mojom::InstallSource ConvertInstallSourceToMojomInstallSource(
+ InstallSource install_source) {
+ switch (install_source) {
+ case InstallSource::kUnknown:
+ return apps::mojom::InstallSource::kUnknown;
+ case InstallSource::kSystem:
+ return apps::mojom::InstallSource::kSystem;
+ case InstallSource::kSync:
+ return apps::mojom::InstallSource::kSync;
+ case InstallSource::kPlayStore:
+ return apps::mojom::InstallSource::kPlayStore;
+ case InstallSource::kChromeWebStore:
+ return apps::mojom::InstallSource::kChromeWebStore;
+ case InstallSource::kBrowser:
+ return apps::mojom::InstallSource::kBrowser;
+ }
+}
+
+WindowMode ConvertMojomWindowModeToWindowMode(
+ apps::mojom::WindowMode mojom_window_mode) {
+ switch (mojom_window_mode) {
+ case apps::mojom::WindowMode::kUnknown:
+ return WindowMode::kUnknown;
+ case apps::mojom::WindowMode::kWindow:
+ return WindowMode::kWindow;
+ case apps::mojom::WindowMode::kBrowser:
+ return WindowMode::kBrowser;
+ case apps::mojom::WindowMode::kTabbedWindow:
+ return WindowMode::kTabbedWindow;
+ }
+}
+
+apps::mojom::WindowMode ConvertWindowModeToMojomWindowMode(
+ WindowMode window_mode) {
+ switch (window_mode) {
+ case WindowMode::kUnknown:
+ return apps::mojom::WindowMode::kUnknown;
+ case WindowMode::kWindow:
+ return apps::mojom::WindowMode::kWindow;
+ case WindowMode::kBrowser:
+ return apps::mojom::WindowMode::kBrowser;
+ case WindowMode::kTabbedWindow:
+ return apps::mojom::WindowMode::kTabbedWindow;
+ }
+}
+
+absl::optional<bool> GetOptionalBool(
+ const apps::mojom::OptionalBool& mojom_optional_bool) {
+ absl::optional<bool> optional_bool;
+ if (mojom_optional_bool != apps::mojom::OptionalBool::kUnknown) {
+ optional_bool = mojom_optional_bool == apps::mojom::OptionalBool::kTrue;
+ }
+ return optional_bool;
+}
+
+apps::mojom::OptionalBool GetMojomOptionalBool(
+ const absl::optional<bool>& optional_bool) {
+ return optional_bool.has_value()
+ ? (optional_bool.value() ? apps::mojom::OptionalBool::kTrue
+ : apps::mojom::OptionalBool::kFalse)
+ : apps::mojom::OptionalBool::kUnknown;
+}
+
+AppPtr ConvertMojomAppToApp(const apps::mojom::AppPtr& mojom_app) {
DCHECK(mojom_app);
- std::unique_ptr<App> app = std::make_unique<App>(
+ auto app = std::make_unique<App>(
ConvertMojomAppTypToAppType(mojom_app->app_type), mojom_app->app_id);
app->readiness = ConvertMojomReadinessToReadiness(mojom_app->readiness);
@@ -97,13 +305,121 @@ std::unique_ptr<App> ConvertMojomAppToApp(
app->publisher_id = mojom_app->publisher_id;
app->description = mojom_app->description;
app->version = mojom_app->version;
+ app->additional_search_terms = mojom_app->additional_search_terms;
if (mojom_app->icon_key) {
app->icon_key = apps::IconKey(mojom_app->icon_key->timeline,
mojom_app->icon_key->resource_id,
mojom_app->icon_key->icon_effects);
}
+
+ app->last_launch_time = mojom_app->last_launch_time;
+ app->install_time = mojom_app->install_time;
+
+ for (const auto& mojom_permission : mojom_app->permissions) {
+ auto permission = ConvertMojomPermissionToPermission(mojom_permission);
+ if (permission) {
+ app->permissions.push_back(std::move(permission));
+ }
+ }
+
+ app->install_reason =
+ ConvertMojomInstallReasonToInstallReason(mojom_app->install_reason);
+ app->install_source =
+ ConvertMojomInstallSourceToInstallSource(mojom_app->install_source);
+
+ app->policy_id = mojom_app->policy_id;
+
+ app->is_platform_app = GetOptionalBool(mojom_app->is_platform_app);
+ app->recommendable = GetOptionalBool(mojom_app->recommendable);
+ app->searchable = GetOptionalBool(mojom_app->searchable);
+ app->show_in_launcher = GetOptionalBool(mojom_app->show_in_launcher);
+ app->show_in_shelf = GetOptionalBool(mojom_app->show_in_shelf);
+ app->show_in_search = GetOptionalBool(mojom_app->show_in_search);
+ app->show_in_management = GetOptionalBool(mojom_app->show_in_management);
+ app->handles_intents = GetOptionalBool(mojom_app->handles_intents);
+ app->allow_uninstall = GetOptionalBool(mojom_app->allow_uninstall);
+ app->has_badge = GetOptionalBool(mojom_app->has_badge);
+ app->paused = GetOptionalBool(mojom_app->paused);
+
+ for (const auto& mojom_intent_filter : mojom_app->intent_filters) {
+ auto intent_filter =
+ ConvertMojomIntentFilterToIntentFilter(mojom_intent_filter);
+ if (intent_filter) {
+ app->intent_filters.push_back(std::move(intent_filter));
+ }
+ }
+
+ app->resize_locked = GetOptionalBool(mojom_app->resize_locked);
+ app->window_mode = ConvertMojomWindowModeToWindowMode(mojom_app->window_mode);
+ if (mojom_app->run_on_os_login) {
+ app->run_on_os_login =
+ apps::RunOnOsLogin(ConvertMojomRunOnOsLoginModeToRunOnOsLoginMode(
+ mojom_app->run_on_os_login->login_mode),
+ mojom_app->run_on_os_login->is_managed);
+ }
+
return app;
}
+apps::mojom::AppPtr ConvertAppToMojomApp(const AppPtr& app) {
+ auto mojom_app = apps::mojom::App::New();
+ mojom_app->app_type = ConvertAppTypeToMojomAppType(app->app_type);
+ mojom_app->app_id = app->app_id;
+ mojom_app->readiness = ConvertReadinessToMojomReadiness(app->readiness);
+ mojom_app->name = app->name;
+ mojom_app->short_name = app->short_name;
+ mojom_app->publisher_id = app->publisher_id;
+ mojom_app->description = app->description;
+ mojom_app->version = app->version;
+ mojom_app->additional_search_terms = app->additional_search_terms;
+
+ if (app->icon_key.has_value()) {
+ mojom_app->icon_key = ConvertIconKeyToMojomIconKey(app->icon_key.value());
+ }
+
+ mojom_app->last_launch_time = app->last_launch_time;
+ mojom_app->install_time = app->install_time;
+
+ for (const auto& permission : app->permissions) {
+ if (permission) {
+ mojom_app->permissions.push_back(
+ ConvertPermissionToMojomPermission(permission));
+ }
+ }
+
+ mojom_app->install_reason =
+ ConvertInstallReasonToMojomInstallReason(app->install_reason);
+ mojom_app->install_source =
+ ConvertInstallSourceToMojomInstallSource(app->install_source);
+ mojom_app->policy_id = app->policy_id;
+ mojom_app->is_platform_app = GetMojomOptionalBool(app->is_platform_app);
+ mojom_app->recommendable = GetMojomOptionalBool(app->recommendable);
+ mojom_app->searchable = GetMojomOptionalBool(app->searchable);
+ mojom_app->show_in_launcher = GetMojomOptionalBool(app->show_in_launcher);
+ mojom_app->show_in_shelf = GetMojomOptionalBool(app->show_in_shelf);
+ mojom_app->show_in_search = GetMojomOptionalBool(app->show_in_search);
+ mojom_app->show_in_management = GetMojomOptionalBool(app->show_in_management);
+ mojom_app->handles_intents = GetMojomOptionalBool(app->handles_intents);
+ mojom_app->allow_uninstall = GetMojomOptionalBool(app->allow_uninstall);
+ mojom_app->has_badge = GetMojomOptionalBool(app->has_badge);
+ mojom_app->paused = GetMojomOptionalBool(app->paused);
+
+ for (const auto& intent_filter : app->intent_filters) {
+ if (intent_filter) {
+ mojom_app->intent_filters.push_back(
+ ConvertIntentFilterToMojomIntentFilter(intent_filter));
+ }
+ }
+
+ mojom_app->resize_locked = GetMojomOptionalBool(app->resize_locked);
+ mojom_app->window_mode = ConvertWindowModeToMojomWindowMode(app->window_mode);
+
+ if (app->run_on_os_login.has_value()) {
+ mojom_app->run_on_os_login =
+ ConvertRunOnOsLoginToMojomRunOnOsLogin(app->run_on_os_login.value());
+ }
+ return mojom_app;
+}
+
} // namespace apps