blob: 846562be02b6aee3aa6bb233a8deb76185d8191b [file] [log] [blame]
// Copyright 2025 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/extensions/launch.h"
#include <utility>
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/browser/web_applications/web_app_command_scheduler.h"
#include "chrome/browser/web_applications/web_app_provider.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_util.h"
#include "extensions/common/extension.h"
namespace web_app {
void LaunchExtensionOrWebApp(
Profile* profile,
apps::AppLaunchParams params,
base::OnceCallback<void(content::WebContents*)> callback) {
const extensions::Extension* extension =
extensions::ExtensionRegistry::Get(profile)->GetInstalledExtension(
params.app_id);
if (extension) {
std::move(callback).Run(::OpenApplication(profile, std::move(params)));
return;
}
web_app::WebAppProvider* provider =
web_app::WebAppProvider::GetForLocalAppsUnchecked(profile);
provider->scheduler().LaunchAppWithCustomParams(
std::move(params),
base::BindOnce(
[](base::OnceCallback<void(content::WebContents*)> callback,
base::WeakPtr<Browser> browser,
base::WeakPtr<content::WebContents> web_contents,
apps::LaunchContainer launch_container) {
std::move(callback).Run(web_contents.get());
},
std::move(callback)));
}
} // namespace web_app