// 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_WEB_APPLICATIONS_EXTENSION_STATUS_UTILS_H_ #define CHROME_BROWSER_WEB_APPLICATIONS_EXTENSION_STATUS_UTILS_H_ #include <string> #include "base/functional/callback_forward.h" #include "build/build_config.h" class Profile; namespace content { class BrowserContext; } namespace extensions { namespace testing { // Because the allow-list needs to stick around for a while, this flag makes it // easy for us to continue testing chrome apps on Windows/Mac/Linux without // having to jump through hurdles to add ids to the allow-list. // TODO(http://b/268221237): Remove this & tests on WML once allow-list is // removed. extern bool g_enable_chrome_apps_for_testing; } // namespace testing bool IsExtensionBlockedByPolicy(content::BrowserContext* context, const std::string& extension_id); // Returns whether the extension with |extension_id| is installed regardless of // disabled/blocked/terminated status. bool IsExtensionInstalled(content::BrowserContext* context, const std::string& extension_id); // Returns whether the extension with `extension_id` is force installed by // policy, and fills `reason` (if non-null) with expository text. bool IsExtensionForceInstalled(content::BrowserContext* context, const std::string& extension_id, std::u16string* reason); // Returns whether the extension with `extension_id` was installed as a default // extension/app. bool IsExtensionDefaultInstalled(content::BrowserContext* context, const std::string& extension_id); // Returns whether the user has uninstalled an externally installed extension // with |extension_id|. bool IsExternalExtensionUninstalled(content::BrowserContext* context, const std::string& extension_id); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) // If this method returns true, then |extension_id| will not be launchable. // // The eventual goal is that this method should return true for all hosted apps, // legacy packaged v1 apps, and chrome apps, for all platforms. These are the // current exceptions: // (1) Webstore is a hosted app. This is currently used with the kAppsGalleryURL // switch, and will be replaced by another mechanism. // (2) There is a feature called kChromeAppsDeprecation that is used by // developers who want to test chrome apps on non-ChromeOS desktop // platforms, even though they are targeting deployment only to ChromeOS. This // requires manually setting command line arguments for chrome, and is not used // by most/any users in the wild. // (3) directprint.io and mobilityprint are currently allow-listed. They are in // the process of migrating. // (4) This method and callsites are currently not compiled onto ChromeOS. bool IsExtensionUnsupportedDeprecatedApp(content::BrowserContext* context, const std::string& extension_id); #endif // Waits for extension system ready to run callback. void OnExtensionSystemReady(content::BrowserContext* context, base::OnceClosure callback); // Checks if default apps perform new installation. bool DidPreinstalledAppsPerformNewInstallation(Profile* profile); // Returns if the app is managed by extension default apps. This is a hardcoded // list of default apps for Windows/Linux/MacOS platforms that should be // migrated from extension to web app. Need to be removed after migration is // done. bool IsPreinstalledAppId(const std::string& app_id); // Makes WasManagedByPreinstalledApps return true for testing. void SetPreinstalledAppIdForTesting(const char* app_id); } // namespace extensions #endif // CHROME_BROWSER_WEB_APPLICATIONS_EXTENSION_STATUS_UTILS_H_