| // 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 COMPONENTS_WEBAPPS_BROWSER_ANDROID_WEBAPPS_ICON_UTILS_H_ |
| #define COMPONENTS_WEBAPPS_BROWSER_ANDROID_WEBAPPS_ICON_UTILS_H_ |
| |
| #include "base/android/scoped_java_ref.h" |
| #include "components/webapk/webapk.pb.h" |
| |
| class SkBitmap; |
| class GURL; |
| |
| namespace webapps { |
| |
| // Contains utilities that query Java code for information about web |
| // app/shortcut icons. |
| class WebappsIconUtils { |
| public: |
| WebappsIconUtils() = delete; |
| WebappsIconUtils& operator=(const WebappsIconUtils&) = delete; |
| WebappsIconUtils(const WebappsIconUtils&) = delete; |
| |
| // Returns the ideal size for an icon representing a web app or a WebAPK. |
| static int GetIdealHomescreenIconSizeInPx(); |
| |
| // Returns the minimum size for an icon representing a web app or a WebAPK. |
| static int GetMinimumHomescreenIconSizeInPx(); |
| |
| // Returns the ideal size for an image displayed on a web app's splash |
| // screen. |
| static int GetIdealSplashImageSizeInPx(); |
| |
| // Returns the minimum size for an image displayed on a web app's splash |
| // screen. |
| static int GetMinimumSplashImageSizeInPx(); |
| |
| // Returns the ideal size for an adaptive launcher icon of a WebAPK |
| static int GetIdealAdaptiveLauncherIconSizeInPx(); |
| |
| // Returns the ideal size for a shortcut icon of a WebAPK. |
| static int GetIdealShortcutIconSizeInPx(); |
| |
| // Returns the ideal size for a WebAPK icon of specific type |
| static int GetIdealIconSizeForIconType(webapk::Image::Usage usage, |
| webapk::Image::Purpose purpose); |
| |
| // Returns if the Android version supports Adaptive Icon (i.e. API level >= |
| // 26) |
| static bool DoesAndroidSupportMaskableIcons(); |
| |
| // Returns the given icon, modified to match the launcher requirements. |
| // This method may generate an entirely new icon; if this is the case, |
| // |is_generated| will be set to |true|. |
| // Must be called on a background worker thread. |
| static SkBitmap FinalizeLauncherIconInBackground(const SkBitmap& icon, |
| bool is_icon_maskable, |
| const GURL& url, |
| bool* is_generated); |
| |
| // Generate an adaptive icon for given maskable icon bitmap. |
| static SkBitmap GenerateAdaptiveIconBitmap(const SkBitmap& icon); |
| |
| static int GetIdealIconCornerRadiusPxForPromptUI(); |
| |
| static void SetIdealShortcutSizeForTesting(int size); |
| }; |
| |
| } // namespace webapps |
| |
| #endif // COMPONENTS_WEBAPPS_BROWSER_ANDROID_WEBAPPS_ICON_UTILS_H_ |