diff --git a/ash/webui/file_manager/BUILD.gn b/ash/webui/file_manager/BUILD.gn index dab6dbb674e49..abfc56834a8b6 100644 --- a/ash/webui/file_manager/BUILD.gn +++ b/ash/webui/file_manager/BUILD.gn @@ -46,12 +46,14 @@ static_library("file_manager_ui") { deps = [ ":constants", ":file_manager_untrusted_ui", + "//ash", "//ash/constants:constants", "//ash/webui/file_manager/mojom", "//ash/webui/file_manager/resources:file_manager_swa_resources", "//ash/webui/system_apps/public:system_web_app_config", "//ash/webui/system_apps/public:system_web_app_type", "//base", + "//components/user_manager", "//content/public/browser", "//ui/file_manager:file_manager_gen_resources", "//ui/file_manager:resources", diff --git a/ash/webui/file_manager/file_manager_ui.cc b/ash/webui/file_manager/file_manager_ui.cc index d3b220240742f..6da57aca99c56 100644 --- a/ash/webui/file_manager/file_manager_ui.cc +++ b/ash/webui/file_manager/file_manager_ui.cc @@ -4,14 +4,17 @@ #include "ash/webui/file_manager/file_manager_ui.h" +#include "ash/shell.h" #include "ash/webui/file_manager/file_manager_page_handler.h" #include "ash/webui/file_manager/resource_loader.h" #include "ash/webui/file_manager/resources/grit/file_manager_swa_resources.h" #include "ash/webui/file_manager/resources/grit/file_manager_swa_resources_map.h" +#include "ash/webui/file_manager/url_constants.h" #include "base/check_op.h" #include "base/logging.h" #include "base/strings/string_util.h" #include "base/values.h" +#include "components/user_manager/user_type.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" @@ -26,6 +29,44 @@ namespace ash { namespace file_manager { +namespace { + +bool IsKioskSession() { + auto* session_controller = Shell::Get()->session_controller(); + auto account_id = session_controller->GetActiveAccountId(); + const auto user_type = + session_controller->GetUserSessionByAccountId(account_id)->user_info.type; + + switch (user_type) { + case user_manager::USER_TYPE_REGULAR: + case user_manager::USER_TYPE_CHILD: + case user_manager::USER_TYPE_GUEST: + case user_manager::USER_TYPE_PUBLIC_ACCOUNT: + case user_manager::USER_TYPE_ACTIVE_DIRECTORY: + return false; + case user_manager::USER_TYPE_KIOSK_APP: + case user_manager::USER_TYPE_ARC_KIOSK_APP: + case user_manager::USER_TYPE_WEB_KIOSK_APP: + return true; + case user_manager::NUM_USER_TYPES: + NOTREACHED_NORETURN(); + } +} + +} // namespace + +FileManagerUIConfig::FileManagerUIConfig( + SystemWebAppUIConfig::CreateWebUIControllerFunc create_controller_func) + : SystemWebAppUIConfig(ash::file_manager::kChromeUIFileManagerHost, + SystemWebAppType::FILE_MANAGER, + create_controller_func) {} + +bool FileManagerUIConfig::IsWebUIEnabled( + content::BrowserContext* browser_context) { + return SystemWebAppUIConfig::IsWebUIEnabled(browser_context) || + IsKioskSession(); +} + FileManagerUI::FileManagerUI(content::WebUI* web_ui, std::unique_ptr delegate) : MojoWebDialogUI(web_ui), delegate_(std::move(delegate)) { diff --git a/ash/webui/file_manager/file_manager_ui.h b/ash/webui/file_manager/file_manager_ui.h index 40bae3a72d16e..208cf4d6091d1 100644 --- a/ash/webui/file_manager/file_manager_ui.h +++ b/ash/webui/file_manager/file_manager_ui.h @@ -9,7 +9,6 @@ #include "ash/webui/file_manager/file_manager_ui_delegate.h" #include "ash/webui/file_manager/mojom/file_manager.mojom.h" -#include "ash/webui/file_manager/url_constants.h" #include "ash/webui/system_apps/public/system_web_app_ui_config.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" @@ -33,10 +32,9 @@ class FileManagerUI; class FileManagerUIConfig : public SystemWebAppUIConfig { public: explicit FileManagerUIConfig( - SystemWebAppUIConfig::CreateWebUIControllerFunc create_controller_func) - : SystemWebAppUIConfig(ash::file_manager::kChromeUIFileManagerHost, - SystemWebAppType::FILE_MANAGER, - create_controller_func) {} + SystemWebAppUIConfig::CreateWebUIControllerFunc create_controller_func); + + bool IsWebUIEnabled(content::BrowserContext* browser_context) override; }; // The WebUI for chrome://file-manager.