Skip to content

Commit

Permalink
swas: Re-enable Files in kiosk mode
Browse files Browse the repository at this point in the history
A recent change made it so the Files WebUI would only be enabled if
the SWA was enabled. SWAs are disabled in Kiosk mode but Files is still
needs to be enabled in Kiosk mode.

(cherry picked from commit a60df2b)

Bug: b:285289640
Change-Id: I914d7ee3a32bef6fb51500495744b5e78dbfb394
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4583952
Auto-Submit: Giovanni Ortuno Urquidi <ortuno@chromium.org>
Reviewed-by: Ben Franz <bfranz@chromium.org>
Commit-Queue: Giovanni Ortuno Urquidi <ortuno@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1153103}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4596340
Commit-Queue: Ben Franz <bfranz@chromium.org>
Cr-Commit-Position: refs/branch-heads/5790@{#439}
Cr-Branched-From: 1d71a33-refs/heads/main@{#1148114}
  • Loading branch information
Giovanni Ortuño Urquidi authored and Chromium LUCI CQ committed Jun 7, 2023
1 parent 8def4dc commit 201d9b7
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 5 deletions.
2 changes: 2 additions & 0 deletions ash/webui/file_manager/BUILD.gn
Expand Up @@ -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",
Expand Down
41 changes: 41 additions & 0 deletions ash/webui/file_manager/file_manager_ui.cc
Expand Up @@ -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"
Expand All @@ -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<FileManagerUIDelegate> delegate)
: MojoWebDialogUI(web_ui), delegate_(std::move(delegate)) {
Expand Down
8 changes: 3 additions & 5 deletions ash/webui/file_manager/file_manager_ui.h
Expand Up @@ -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"
Expand All @@ -33,10 +32,9 @@ class FileManagerUI;
class FileManagerUIConfig : public SystemWebAppUIConfig<FileManagerUI> {
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.
Expand Down

0 comments on commit 201d9b7

Please sign in to comment.