| // Copyright 2024 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_WEBAPPS_WEBAPPS_CLIENT_ANDROID_H_ |
| #define CHROME_BROWSER_WEBAPPS_WEBAPPS_CLIENT_ANDROID_H_ |
| |
| #include "base/no_destructor.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/webapps/chrome_webapps_client.h" |
| #include "content/public/browser/browser_context.h" |
| |
| #if !BUILDFLAG(IS_ANDROID) |
| #error "Android implementation should not be included for non-Android builds." |
| #endif |
| |
| namespace webapps { |
| |
| class WebappsClientAndroid : public ChromeWebappsClient { |
| public: |
| // Creates the singleton instance accessible from WebappsClient::Get(). |
| static void CreateSingleton(); |
| |
| WebappsClientAndroid(const WebappsClientAndroid&) = delete; |
| WebappsClientAndroid& operator=(const WebappsClientAndroid&) = delete; |
| |
| // WebappsClient: |
| WebappInstallSource GetInstallSource(content::WebContents* web_contents, |
| InstallTrigger trigger) override; |
| AppBannerManager* GetAppBannerManager( |
| content::WebContents* web_contents) override; |
| |
| // Non-locally installed apps do not exist on Android. |
| void DoesNewWebAppConflictWithExistingInstallation( |
| content::BrowserContext* browser_context, |
| const GURL& start_url, |
| const ManifestId& manifest_id, |
| WebAppInstallationConflictCallback callback) const override; |
| |
| // TODO(crbug.com/40269982): Implement. |
| bool IsInAppBrowsingContext( |
| content::WebContents* web_contents) const override; |
| // TODO(crbug.com/40269982): Implement. |
| bool IsAppPartiallyInstalledForSiteUrl( |
| content::BrowserContext* browsing_context, |
| const GURL& site_url) const override; |
| // TODO(crbug.com/40269982): Implement. |
| bool IsAppFullyInstalledForSiteUrl(content::BrowserContext* browsing_context, |
| const GURL& site_url) const override; |
| // TODO(crbug.com/40269982): Implement. |
| bool IsUrlControlledBySeenManifest(content::BrowserContext* browsing_context, |
| const GURL& site_url) const override; |
| |
| void OnManifestSeen(content::BrowserContext* browsing_context, |
| const blink::mojom::Manifest& manifest) const override; |
| |
| // TODO(crbug.com/40269982): Implement. |
| void SaveInstallationDismissedForMl(content::BrowserContext* browsing_context, |
| const GURL& manifest_id) const override; |
| // TODO(crbug.com/40269982): Implement. |
| void SaveInstallationIgnoredForMl(content::BrowserContext* browsing_context, |
| const GURL& manifest_id) const override; |
| // TODO(crbug.com/40269982): Implement. |
| void SaveInstallationAcceptedForMl(content::BrowserContext* browsing_context, |
| const GURL& manifest_id) const override; |
| // TODO(crbug.com/40269982): Implement. |
| bool IsMlPromotionBlockedByHistoryGuardrail( |
| content::BrowserContext* browsing_context, |
| const GURL& manifest_id) const override; |
| // TODO(crbug.com/40269982): Implement. |
| segmentation_platform::SegmentationPlatformService* |
| GetSegmentationPlatformService( |
| content::BrowserContext* browsing_context) const override; |
| |
| bool IsInstallationInProgress(content::WebContents* web_contents, |
| const GURL& manifest_id) override; |
| bool CanShowAppBanners(const content::WebContents* web_contents) override; |
| void OnWebApkInstallInitiatedFromAppMenu( |
| content::WebContents* web_contents) override; |
| void InstallWebApk(content::WebContents* web_contents, |
| const AddToHomescreenParams& params) override; |
| void InstallShortcut(content::WebContents* web_contents, |
| const AddToHomescreenParams& params) override; |
| |
| private: |
| friend base::NoDestructor<WebappsClientAndroid>; |
| |
| bool IsInstallationInProgress(content::BrowserContext* browser_context, |
| const GURL& manifest_id) const; |
| |
| WebappsClientAndroid() = default; |
| }; |
| |
| } // namespace webapps |
| |
| #endif // CHROME_BROWSER_WEBAPPS_WEBAPPS_CLIENT_ANDROID_H_ |