1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_APPS_APP_SERVICE_BROWSER_APP_LAUNCHER_H_
#define CHROME_BROWSER_APPS_APP_SERVICE_BROWSER_APP_LAUNCHER_H_
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/apps/app_service/app_launch_params.h"
class Profile;
namespace content {
class WebContents;
}
namespace apps {
// BrowserAppLauncher receives app launch requests and forwards them to
// extensions or LaunchWebAppCommand, based on the app type.
//
// TODO(crbug.com/40122594): Remove BrowserAppLauncher and merge the interfaces
// to AppServiceProxy when publishers(ExtensionApps and WebApps) can run on
// Chrome.
class BrowserAppLauncher {
public:
explicit BrowserAppLauncher(Profile* profile);
~BrowserAppLauncher();
BrowserAppLauncher(const BrowserAppLauncher&) = delete;
BrowserAppLauncher& operator=(const BrowserAppLauncher&) = delete;
#if !BUILDFLAG(IS_CHROMEOS)
// Launches an app for the given `app_id` in a way specified by `params`.
//
// This interface is deprecated, please use
// AppServiceProxy::LaunchAppWithParams() in the future.
// TODO(crbug.com/40787924): Remove this interface in non-chrome OS platform.
void LaunchAppWithParams(
AppLaunchParams params,
base::OnceCallback<void(content::WebContents*)> callback);
#endif // !BUILDFLAG(IS_CHROMEOS)
// Launches an app for the given `app_id` in a way specified by `params`. This
// interface should only be used in testing code where reqired a sync launch
// for browser apps. Please try to use AppServiceProxy::LaunchAppWithParams()
// interface where possible.
// Note: This code will block until the launch occurs.
//
// Deprecated. Prefer `LaunchAppWithParams()` or `LaunchAppWithIntent`.
// This interface is deprecated in production code, as using it might cause
// behaviour difference between the production code and test code.
// TODO(crbug.com/40211799): Remove this interface if all usages are removed.
content::WebContents* LaunchAppWithParamsForTesting(AppLaunchParams params);
#if BUILDFLAG(IS_CHROMEOS)
// Launches Play Store with Extensions. ARC and Extensions share the same app
// id for Play Store, and App Service only registered the play store ARC app
// (see blocklist in
// chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc
// for more details). Therefore we need this interface to launch Play Store
// with Extensions when ARC is not enabled.
void LaunchPlayStoreWithExtensions();
#endif // BUILDFLAG(IS_CHROMEOS)
private:
const raw_ptr<Profile> profile_;
};
} // namespace apps
#endif // CHROME_BROWSER_APPS_APP_SERVICE_BROWSER_APP_LAUNCHER_H_
|