blob: 060e5ddee90b01dd654b66a944920213fecf7b95 [file] [log] [blame]
// Copyright 2023 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/web_applications/app_service/publisher_helper.h"
#include "chrome/browser/web_applications/web_app_provider.h"
#include "chrome/browser/web_applications/web_app_registrar.h"
#include "components/services/app_service/public/cpp/app_types.h"
#include "components/webapps/browser/installable/installable_metrics.h"
#if BUILDFLAG(IS_CHROMEOS)
#include "chrome/browser/apps/app_service/app_service_proxy.h"
#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
#include "chromeos/constants/chromeos_features.h"
#endif
namespace web_app {
webapps::WebappUninstallSource ConvertUninstallSourceToWebAppUninstallSource(
apps::UninstallSource uninstall_source) {
switch (uninstall_source) {
case apps::UninstallSource::kAppList:
return webapps::WebappUninstallSource::kAppList;
case apps::UninstallSource::kAppManagement:
return webapps::WebappUninstallSource::kAppManagement;
case apps::UninstallSource::kShelf:
return webapps::WebappUninstallSource::kShelf;
case apps::UninstallSource::kMigration:
return webapps::WebappUninstallSource::kMigration;
case apps::UninstallSource::kUnknown:
return webapps::WebappUninstallSource::kUnknown;
}
}
#if BUILDFLAG(IS_CHROMEOS)
std::vector<std::string> GetWebAppIdsForProtocolUrl(Profile* profile,
const GURL& protocol_url) {
if (!chromeos::features::IsWebAppManifestProtocolHandlerSupportEnabled() ||
!apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile)) {
return {};
}
auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile);
std::vector<std::string> app_ids = proxy->GetAppIdsForUrl(protocol_url);
std::erase_if(app_ids, [&](const auto& app_id) {
return proxy->AppRegistryCache().GetAppType(app_id) != apps::AppType::kWeb;
});
return app_ids;
}
#endif
} // namespace web_app