// Copyright 2021 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/lacros/lacros_extensions_util.h"
#include <utility>
#include <vector>
#include "base/feature_list.h"
#include "base/strings/string_split.h"
#include "build//build_config.h"
#include "chrome/browser/apps/app_service/extension_apps_utils.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_features.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension.h"
namespace lacros_extensions_util {
bool IsExtensionApp(const extensions::Extension* extension) {
return extension->is_platform_app() ||
(extension->is_hosted_app() && apps::ShouldHostedAppsRunInLacros());
}
const extensions::Extension* MaybeGetExtension(
Profile* profile,
const std::string& extension_id) {
DCHECK(profile);
extensions::ExtensionRegistry* registry =
extensions::ExtensionRegistry::Get(profile);
DCHECK(registry);
return registry->GetInstalledExtension(extension_id);
}
const extensions::Extension* MaybeGetExtension(
content::WebContents* web_contents) {
if (!web_contents) {
return nullptr;
}
extensions::ExtensionRegistry* registry = extensions::ExtensionRegistry::Get(
Profile::FromBrowserContext(web_contents->GetBrowserContext()));
DCHECK(registry);
const extensions::ExtensionSet& extensions = registry->enabled_extensions();
return extensions.GetAppByURL(web_contents->GetVisibleURL());
}
bool GetProfileAndExtension(const std::string& extension_id,
Profile** output_profile,
const extensions::Extension** output_extension) {
Profile* profile = ProfileManager::GetPrimaryUserProfile();
DCHECK(profile);
const extensions::Extension* extension =
lacros_extensions_util::MaybeGetExtension(profile, extension_id);
if (!extension) {
return false;
}
*output_profile = profile;
*output_extension = extension;
return true;
}
} // namespace lacros_extensions_util