| // 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 "base/task/sequenced_task_runner.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); |
| |
| // Finalize the launcher icon from |icon|. |start_url| is used to generate the |
| // icon if |icon| is empty or is not large enough. When complete, posts |
| // |callback| on |ui_thread_task_runner| binding: |
| // - the generated icon |
| // - whether |icon| was used in generating the launcher icon |
| static void FinalizeLauncherIconInBackground( |
| const SkBitmap& bitmap, |
| const GURL& url, |
| scoped_refptr<base::SequencedTaskRunner> ui_thread_task_runner, |
| base::OnceCallback<void(const SkBitmap&, bool)> callback); |
| |
| // Generates a home screen icon for the web page at `page_url`. The icon is |
| // a single letter on a grey background. |
| static SkBitmap GenerateHomeScreenIconInBackground(const GURL& page_url); |
| |
| // Generate an adaptive icon for given maskable icon bitmap. |
| static SkBitmap GenerateAdaptiveIconBitmap(const SkBitmap& icon); |
| |
| static int GetIdealIconCornerRadiusPxForPromptUI(); |
| |
| static void SetIdealShortcutSizeForTesting(int size); |
| static void SetIconSizesForTesting(std::vector<int> sizes); |
| }; |
| |
| } // namespace webapps |
| |
| #endif // COMPONENTS_WEBAPPS_BROWSER_ANDROID_WEBAPPS_ICON_UTILS_H_ |