// 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.
#include "chrome/browser/apps/app_service/extension_apps_utils.h"
#include "base/feature_list.h"
#include "base/files/file_path.h"
#include "base/strings/escape.h"
#include "base/strings/string_split.h"
#include "chrome/browser/profiles/profile.h"
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#include "chromeos/startup/browser_params_proxy.h"
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ash/constants/ash_features.h"
#include "chrome/browser/ash/crosapi/browser_util.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
namespace {
#if BUILDFLAG(IS_CHROMEOS_LACROS)
bool g_enable_hosted_apps_in_lacros_for_testing = false;
#endif
} // namespace
namespace apps {
#if BUILDFLAG(IS_CHROMEOS_LACROS)
bool ShouldHostedAppsRunInLacros() {
if (g_enable_hosted_apps_in_lacros_for_testing) {
return true;
}
return chromeos::BrowserParamsProxy::Get()->PublishHostedApps();
}
void EnableHostedAppsInLacrosForTesting() {
g_enable_hosted_apps_in_lacros_for_testing = true;
}
#endif // IS_CHROMEOS_LACROS
#if BUILDFLAG(IS_CHROMEOS_ASH)
std::string GetEscapedAppId(const std::string& app_id, AppType app_type) {
// Normally app ids would only contain alphanumerics, but standalone
// browser extension app uses '#' as a delimiter, which needs to be escaped.
return app_type == apps::AppType::kStandaloneBrowserChromeApp
? base::EscapeAllExceptUnreserved(app_id)
: app_id;
}
#endif
} // namespace apps